You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Enzo JOLYS 272af74202
continuous-integration/drone/push Build is failing Details
Mise à jour de 'README.md'
2 years ago
Documentations Transférer les fichiers vers 'Documentations' 2 years ago
Sources correction de bug 2 years ago
SourcesMobileApp lien entre appMobile et api avec champion marche (avec un bug) 2 years ago
.gitignore Initial commit 2 years ago
README.md Mise à jour de 'README.md' 2 years ago
drone.yml Mise à jour de 'drone.yml' 2 years ago

README.md

LoLApi project !

Build Status

Note importante !

Bonjour, ce projet devait être en groupe cependant mon collègue Lilian ne venais pas au cours et n'a pas du tout participé au projet ( vous pouvez allez voir les commits). J'ai donc fait du mieux que j'ai peu avec le temps que j'avais, j'ai donc décidé de me focaliser sur certaine choses, pour vous prouvez que je savais faire. Pouvez-vous prendre ce fait en compte dans votre notation. Merci d'avance.

Enzo Jolys 

Documentation :

Auteur

- Enzo Jolys 

Démarrer le projet :

1 - Ouvrir visual studio 
2 - Ouvrir la solution : ./Sources/LeagueOfLegends-Dev.sln

Avancement sur le projet :

EF :

Tout la base de données avec toutes les entités ont été crée. Plusieur rêquete sur la BDD ont été faite.

Api :

Je me suis concentré sur 2 controlleur. Le controlleur champion et skins marchait parfaitement avec le stub, hélas un moment sa marchait aussi avec l'apli mobile mais depuis des changements "plus rien ne marche". Les relations entre l'api, l'appli mobile et la BDD elle ont bien été mise en place. 

Test :

Ef : 

    - Les différentes classe de la BDD dispose de test d'insertion, de modification et de suppression.

Api : 

    - La controlleur Champion dispose de test. 

CI et Docker :

La CI est en fonctionnement avec la dockerisation du projet. Pour se faire j'ai crée deux solution, l'une est crée pour le développeur (LeagueOfLegends-Dev.sln) et l'autre ne contient pas l'appli mobile pour pouvoir se faire déployer sans erreur(LeagueOfLegends.sln)

Emplacement des classes importante :

EF :

Les entity sont dans le projet EntityFramework

Api (DTO):

Les classes DTO sont dans le projet DTO, Il y deux type de DTO :
    - Les DTO d'une classe (DtoChampions), c'est juste une classe dto
    - Les DTO d'un controlleur (DToControlleur/Champions/GetChampions), classe qui contient le résultat mais aussi des informations comme index,count,totalcount.

Diagrame d'architecture :

Diagramme du fonctionnement de l'api :

Diagramme de classes du modèle

classDiagram
class LargeImage{
    +/Base64 : string
}
class Champion{
    +/Name : string
    +/Bio : string
    +/Icon : string
    +/Characteristics : Dictionary~string, int~
    ~ AddSkin(skin : Skin) bool
    ~ RemoveSkin(skin: Skin) bool
    + AddSkill(skill: Skill) bool
    + RemoveSkill(skill: Skill) bool
    + AddCharacteristics(someCharacteristics : params Tuple~string, int~[])
    + RemoveCharacteristics(label : string) bool
    + this~label : string~ : int?
}
Champion --> "1" LargeImage : Image
class ChampionClass{
    <<enumeration>>
    Unknown,
    Assassin,
    Fighter,
    Mage,
    Marksman,
    Support,
    Tank,
}
Champion --> "1" ChampionClass : Class
class Skin{
    +/Name : string    
    +/Description : string
    +/Icon : string
    +/Price : float
}
Skin --> "1" LargeImage : Image
Champion "1" -- "*" Skin 
class Skill{
    +/Name : string    
    +/Description : string
}
class SkillType{
    <<enumeration>>
    Unknown,
    Basic,
    Passive,
    Ultimate,
}
Skill --> "1" SkillType : Type
Champion --> "*" Skill
class Rune{
    +/Name : string    
    +/Description : string
}
Rune --> "1" LargeImage : Image
class RuneFamily{
    <<enumeration>>
    Unknown,
    Precision,
    Domination
}
Rune --> "1" RuneFamily : Family
class Category{
    <<enumeration>>
    Major,
    Minor1,
    Minor2,
    Minor3,
    OtherMinor1,
    OtherMinor2
}
class RunePage{
    +/Name : string
    +/this[category : Category] : Rune?
    - CheckRunes(newRuneCategory : Category)
    - CheckFamilies(cat1 : Category, cat2 : Category) bool?
    - UpdateMajorFamily(minor : Category, expectedValue : bool)
}
RunePage --> "*" Rune : Dictionary~Category,Rune~

Diagramme de classes des interfaces de gestion de l'accès aux données

classDiagram
direction LR;
class IGenericDataManager~T~{
    <<interface>>
    GetNbItems() Task~int~
    GetItems(index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~T~~
    GetNbItemsByName(substring : string)
    GetItemsByName(substring : string, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~T~~
    UpdateItem(oldItem : T, newItem : T) Task~T~~
    AddItem(item : T) Task~T~
    DeleteItem(item : T) Task~bool~
}
class IChampionsManager{
    <<interface>>
    GetNbItemsByCharacteristic(charName : string)
    GetItemsByCharacteristic(charName : string, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Champion?~~
    GetNbItemsByClass(championClass : ChampionClass)
    GetItemsByClass(championClass : ChampionClass, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Champion?~~
    GetNbItemsBySkill(skill : Skill?)
    GetItemsBySkill(skill : Skill?, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Champion?~~
    GetNbItemsBySkill(skill : string)
    GetItemsBySkill(skill : string, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Champion?~~
    GetNbItemsByRunePage(runePage : RunePage?)
    GetItemsByRunePage(runePage : RunePage?, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Champion?~~
}
class ISkinsManager{
    <<interface>>
    GetNbItemsByChampion(champion : Champion?)
    GetItemsByChampion(champion : Champion?, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Skin?~~
}
class IRunesManager{
    <<interface>>
    GetNbItemsByFamily(family : RuneFamily)
    GetItemsByFamily(family : RuneFamily, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~Rune?~~
}
class IRunePagesManager{
    <<interface>>
    GetNbItemsByRune(rune : Rune?)
    GetItemsByRune(rune : Rune?, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~RunePage?~~
    GetNbItemsByChampion(champion : Champion?)
    GetItemsByChampion(champion : Champion?, index : int, count : int, orderingPropertyName : string?, descending : bool) Task~IEnumerable~RunePage?~~
}

IGenericDataManager~Champion?~ <|.. IChampionsManager : T--Champion?
IGenericDataManager~Skin?~ <|.. ISkinsManager : T--Skin?
IGenericDataManager~Rune?~ <|.. IRunesManager : T--Rune?
IGenericDataManager~RunePage?~ <|.. IRunePagesManager : T--RunePage?
class IDataManager{
    <<interface>>
}
IChampionsManager <-- IDataManager : ChampionsMgr
ISkinsManager <-- IDataManager : SkinsMgr
IRunesManager <-- IDataManager : RunesMgr
IRunePagesManager <-- IDataManager : RunePagesMgr

Diagramme de classes simplifié du Stub

classDiagram
direction TB;

IDataManager <|.. StubData

ChampionsManager ..|> IChampionsManager
StubData --> ChampionsManager

RunesManager ..|> IRunesManager
StubData --> RunesManager

RunePagesManager ..|> IRunePagesManager
StubData --> RunePagesManager

SkinsManager ..|> ISkinsManager
StubData --> SkinsManager

StubData --> RunesManager
StubData --> "*" Champion
StubData --> "*" Rune
StubData --> "*" RunePages
StubData --> "*" Skins