diff --git a/Sources/Model/Game.cs b/Sources/Model/Game.cs index c80dd9f..72c218e 100644 --- a/Sources/Model/Game.cs +++ b/Sources/Model/Game.cs @@ -16,16 +16,16 @@ namespace Model public DateOnly Date { get; set; } public ReadOnlyCollection Players { get; private set; } - private List players = new(); + private List players; public ReadOnlyCollection Turns { get; private set; } - private List turns = new(); + private List turns; public ReadOnlyDictionary Grilles { get; private set; } - private readonly Dictionary grilles = new Dictionary(); + private readonly Dictionary grilles; public ReadOnlyDictionary Scores { get; private set; } - private readonly Dictionary scores = new Dictionary(); + private readonly Dictionary scores; public GameMode GameMode { get; set; } @@ -45,6 +45,10 @@ namespace Model public Game(DateOnly date, Player ?owner, GameMode gameMode, int id = 0) { Date = date; + players = new(); + turns = new(); + grilles = new Dictionary(); + scores = new Dictionary(); Players = new ReadOnlyCollection(players); Grilles = new ReadOnlyDictionary(grilles); Scores = new ReadOnlyDictionary(scores); @@ -56,6 +60,22 @@ namespace Model Id = id; } + public Game(int id, TimeSpan duration, DateOnly date, List players, List turns, Dictionary grilles, Dictionary scores, GameMode gameMode) + { + Id = id; + Duration = duration; + Date = date; + this.players = players; + Players = new ReadOnlyCollection(this.players); + this.turns = turns; + Turns = new ReadOnlyCollection(this.turns); + this.grilles = grilles; + Grilles = new ReadOnlyDictionary(this.grilles); + this.scores = scores; + Scores = new ReadOnlyDictionary(this.scores); + GameMode = gameMode; + } + public bool AddPlayerToGame(Player player) { if(grilles.ContainsKey(player) == false && scores.ContainsKey(player) == false) diff --git a/Sources/Model/GameMode.cs b/Sources/Model/GameMode.cs index 1ea1c73..5f328e1 100644 --- a/Sources/Model/GameMode.cs +++ b/Sources/Model/GameMode.cs @@ -24,10 +24,9 @@ namespace Model } private string name = ""; - public GameMode(string name, int id =0) + public GameMode(int id =0) { this.Id = id; - Name = name; } } } diff --git a/Sources/Model/Grille.cs b/Sources/Model/Grille.cs index 7304d28..43a6031 100644 --- a/Sources/Model/Grille.cs +++ b/Sources/Model/Grille.cs @@ -16,7 +16,7 @@ namespace Model public int MaxZone { get; set; } public ReadOnlyCollection Cases { get; private set; } - private List cases = new(); + private List cases { get; set; } //public Grille(List cases) @@ -26,13 +26,15 @@ namespace Model public Grille(List cases) { + this.cases = new(); Cases = new ReadOnlyCollection(cases); cases.AddRange(Enumerable.Repeat(new Case(), 19)); } public Grille() { - + this.cases = new(); + Cases = new ReadOnlyCollection(this.cases); } public bool AddValueToCase(int value, int index) diff --git a/Sources/Model/Turn.cs b/Sources/Model/Turn.cs index a8406b9..5b3b703 100644 --- a/Sources/Model/Turn.cs +++ b/Sources/Model/Turn.cs @@ -38,8 +38,9 @@ namespace Model } private int diceValue2; - public Turn(int diceValue1, int diceValue2) + public Turn(int Id, int diceValue1, int diceValue2) { + this.Id = Id; DiceValue1 = diceValue1; DiceValue2 = diceValue2; } diff --git a/Sources/Stub/Stub/StubData.Games.cs b/Sources/Stub/Stub/StubData.Games.cs index 526fb83..dd74401 100644 --- a/Sources/Stub/Stub/StubData.Games.cs +++ b/Sources/Stub/Stub/StubData.Games.cs @@ -13,11 +13,11 @@ namespace Stub { private List games = new() { - new Game(new DateOnly(2023,06,03), new Player("test1"),new GameMode("gamemode test1")), - new Game(new DateOnly(2023,06,03), new Player("test2"),new GameMode("gamemode test2")), - new Game(new DateOnly(2023,06,03), new Player("test3"),new GameMode("gamemode test3")), - new Game(new DateOnly(2023,06,03), new Player("test4"),new GameMode("gamemode test4")), - new Game(new DateOnly(2023,06,03), new Player("test5"),new GameMode("gamemode test5")), + new Game(new DateOnly(2023,06,03), new Player("test1"),new GameMode()), + new Game(new DateOnly(2023,06,03), new Player("test2"),new GameMode()), + new Game(new DateOnly(2023,06,03), new Player("test3"),new GameMode()), + new Game(new DateOnly(2023,06,03), new Player("test4"),new GameMode()), + new Game(new DateOnly(2023,06,03), new Player("test5"),new GameMode()), }; diff --git a/Sources/Trek12_API/Converter/CaseConverter.cs b/Sources/Trek12_API/Converter/CaseConverter.cs new file mode 100644 index 0000000..9834196 --- /dev/null +++ b/Sources/Trek12_API/Converter/CaseConverter.cs @@ -0,0 +1,48 @@ +using Microsoft.AspNetCore.Mvc.ModelBinding; +using Model; +using System.Runtime.CompilerServices; +using Trek12_API.DTO; + +namespace Trek12_API.Converter +{ + public static class CaseConverter + { + public static CaseDTO toDTO(this Case caseToConvert) + { + CaseDTO dto = new CaseDTO(); + dto.Id = caseToConvert.Id; + dto.Value = caseToConvert.Valeur; + return dto; + } + + public static List toDTOs(this List listParam) + { + List list = new List(); + foreach(var caseToConvert in listParam) + { + list.Add(caseToConvert.toDTO()); + } + + return list; + } + + public static List toModels(this List listParam) + { + List list = new List(); + foreach (var caseToConvert in listParam) + { + list.Add(caseToConvert.toModel()); + } + + return list; + } + + public static Case toModel(this CaseDTO caseToConvert) + { + Case model = new Case(); + model.Id = caseToConvert.Id; + model.Valeur = caseToConvert.Value; + return model; + } + } +} diff --git a/Sources/Trek12_API/Converter/GameConverter.cs b/Sources/Trek12_API/Converter/GameConverter.cs index bca6e14..d54e979 100644 --- a/Sources/Trek12_API/Converter/GameConverter.cs +++ b/Sources/Trek12_API/Converter/GameConverter.cs @@ -1,5 +1,4 @@ using Model; -using System.Collections.Generic; using Trek12_API.DTO; namespace Trek12_API.Converter @@ -38,38 +37,36 @@ namespace Trek12_API.Converter return gameDTO; } - /*public static Game toModel(this GameDTO gameDTO) + public static Game toModel(this GameDTO gameDTO) { { - var game = new Game(); - game.Duration = gameDTO.Duration; - game.Date = gameDTO.Date; - game.Turns = new List(); - foreach (var turn in game.Turns) + var turnsList = new List(); + foreach (var turn in gameDTO.Turns) { - gameDTO.Turns.Add(turn.toDTO()); + turnsList.Add(turn.toModel()); } - gameDTO.Grilles = new Dictionary(); - foreach (var grille in game.Grilles) + + var playersList = new List(); + foreach (var player in gameDTO.Players) { - gameDTO.Grilles.Add(grille.Key.toDTO(), grille.Value.toDTO()); + playersList.Add(player.toModel()); } - gameDTO.Scores = new Dictionary(); - foreach (var score in game.Scores) + + var grillesDict = new Dictionary(); + foreach (var (key, value) in gameDTO.Grilles) { - gameDTO.Scores.Add(score.Key.toDTO(), score.Value); + grillesDict.Add(key.toModel(), value.toModel()); } - gameDTO.Players = new List(); - foreach (var player in game.Players) + + var scoresDict = new Dictionary(); + foreach (var (key, value) in gameDTO.Scores) { - gameDTO.Players.Add(player.toDTO()); + scoresDict.Add(key.toModel(), value); } - gameDTO.GameMode = new GamemodeDTO() - { - Id = game.GameMode.Id, - Name = game.GameMode.Name - }; - return gameDTO; - }*/ + + var game = new Game(gameDTO.Id, gameDTO.Duration, gameDTO.Date, playersList, turnsList, grillesDict, scoresDict, gameDTO.GameMode.toModel()); + return game; + } + } } } diff --git a/Sources/Trek12_API/Converter/GameModeConverter.cs b/Sources/Trek12_API/Converter/GameModeConverter.cs index 5974c3e..166a067 100644 --- a/Sources/Trek12_API/Converter/GameModeConverter.cs +++ b/Sources/Trek12_API/Converter/GameModeConverter.cs @@ -13,5 +13,14 @@ namespace Trek12_API.Converter Name = gameMode.Name, }; } + + public static GameMode toModel( this GamemodeDTO gamemode) + { + return new GameMode() + { + Id = gamemode.Id, + Name = gamemode.Name + }; + } } } diff --git a/Sources/Trek12_API/Converter/GrilleConverter.cs b/Sources/Trek12_API/Converter/GrilleConverter.cs index 5842c4e..4c9e565 100644 --- a/Sources/Trek12_API/Converter/GrilleConverter.cs +++ b/Sources/Trek12_API/Converter/GrilleConverter.cs @@ -1,4 +1,5 @@ using Model; +using System.Runtime.CompilerServices; using Trek12_API.DTO; namespace Trek12_API.Converter @@ -13,8 +14,31 @@ namespace Trek12_API.Converter NbChaines = grille.NbChaine, NbZones = grille.NbZone, MaxChaines = grille.MaxChaine, - MaxZones = grille.MaxZone + MaxZones = grille.MaxZone, }; } + + public static Grille toModel(this GrilleDTO grilleDTO) + { + return new Grille(grilleDTO.Cases.toModels()) + { + Id = grilleDTO.Id, + NbChaine = grilleDTO.NbChaines, + NbZone = grilleDTO.NbZones, + MaxChaine = grilleDTO.MaxChaines, + MaxZone = grilleDTO.MaxZones + }; + } + + public static IEnumerable toModels(this IEnumerable grilles) + { + var grilleModels = new List(); + foreach( var grille in grilles) + { + grilleModels.Add(grille.toModel()); + } + + return grilleModels; + } } } diff --git a/Sources/Trek12_API/Converter/TurnConverter.cs b/Sources/Trek12_API/Converter/TurnConverter.cs index 8e31a8f..46b61c3 100644 --- a/Sources/Trek12_API/Converter/TurnConverter.cs +++ b/Sources/Trek12_API/Converter/TurnConverter.cs @@ -14,5 +14,20 @@ namespace Trek12_API.Converter diceValue2 = turn.DiceValue2, }; } + + public static Turn toModel(this TurnDTO turnDTO) + { + return new Turn(turnDTO.Id, turnDTO.diceValue1, turnDTO.diceValue2); + } + + public static IEnumerable toModels(this IEnumerable turns) + { + var turnsList = new List(); + foreach(var turn in turns) + { + turnsList.Add(turn.toModel()); + } + return turnsList; + } } } diff --git a/Sources/Trek12_API/DTO/CaseDTO.cs b/Sources/Trek12_API/DTO/CaseDTO.cs new file mode 100644 index 0000000..51b0b6f --- /dev/null +++ b/Sources/Trek12_API/DTO/CaseDTO.cs @@ -0,0 +1,8 @@ +namespace Trek12_API.DTO +{ + public class CaseDTO + { + public int Id { get; set; } + public int Value { get; set; } + } +} diff --git a/Sources/Trek12_API/DTO/GrilleDTO.cs b/Sources/Trek12_API/DTO/GrilleDTO.cs index a8e283b..4ebd7e7 100644 --- a/Sources/Trek12_API/DTO/GrilleDTO.cs +++ b/Sources/Trek12_API/DTO/GrilleDTO.cs @@ -1,4 +1,6 @@ -namespace Trek12_API.DTO +using Model; + +namespace Trek12_API.DTO { public class GrilleDTO { @@ -7,5 +9,7 @@ public int NbZones { get; set; } public int MaxChaines { get; set; } public int MaxZones { get; set; } + public List Cases { get; set; } + } }