From 20e578f7bc44029a779432af4825c3c97fe2bc6f Mon Sep 17 00:00:00 2001 From: Aurelien PINTRAND Date: Mon, 20 Mar 2023 18:00:00 +0100 Subject: [PATCH] :hammer: maj gameController, DTOs et Converter --- Sources/Model/Game.cs | 2 +- Sources/Stub/Stub/StubData.Games.cs | 21 ++------- .../Trek12_API/Controllers/GameController.cs | 34 ++++++++++---- Sources/Trek12_API/Converter/GameConverter.cs | 45 ++++++++++++++++++- Sources/Trek12_API/DTO/GameDTO.cs | 9 ++-- 5 files changed, 79 insertions(+), 32 deletions(-) diff --git a/Sources/Model/Game.cs b/Sources/Model/Game.cs index 54f7029..c80dd9f 100644 --- a/Sources/Model/Game.cs +++ b/Sources/Model/Game.cs @@ -42,7 +42,7 @@ namespace Model // Id = id; //} - public Game(DateOnly date, Player owner, GameMode gameMode, int id = 0) + public Game(DateOnly date, Player ?owner, GameMode gameMode, int id = 0) { Date = date; Players = new ReadOnlyCollection(players); diff --git a/Sources/Stub/Stub/StubData.Games.cs b/Sources/Stub/Stub/StubData.Games.cs index 30700fc..526fb83 100644 --- a/Sources/Stub/Stub/StubData.Games.cs +++ b/Sources/Stub/Stub/StubData.Games.cs @@ -104,7 +104,7 @@ namespace Stub public Task DeleteItem(Game? item) => parent.games.DeleteItem(item); - public Task> GetItems(int index, int count, string? orderingPropertyName, bool descending) + public Task> GetItems(int index, int count, string? orderingPropertyName, bool descending = false) => parent.games.GetItemsWithFilterAndOrdering( g => true, index, count, @@ -116,23 +116,10 @@ namespace Stub public Task UpdateItem(Game? oldItem, Game? newItem) => parent.games.UpdateItem(oldItem, newItem); - /*public Task> GetItemsById(int idPlayer) + public Task> GetItemsById(int id) { - var Task<> - - foreach (var game in parent.games) - { - foreach (var player in game.Players) - { - if (player.Id == idPlayer) - { - - } - } - return false; - }*/ - - // return parent.games.GetItemsWithFilterAndOrdering(game => filterById(game, id), 0, 1); + return parent.games.GetItemsWithFilterAndOrdering(game => filterById(game, id), 0, 1); + } } diff --git a/Sources/Trek12_API/Controllers/GameController.cs b/Sources/Trek12_API/Controllers/GameController.cs index 438e1ce..b7961d9 100644 --- a/Sources/Trek12_API/Controllers/GameController.cs +++ b/Sources/Trek12_API/Controllers/GameController.cs @@ -1,5 +1,8 @@ using Microsoft.AspNetCore.Mvc; +using Model; using Stub; +using Trek12_API.DTO; +using static Stub.StubData; namespace Trek12_API.Controllers { @@ -31,8 +34,8 @@ namespace Trek12_API.Controllers } } -/* [HttpGet("/GameById")] - public async Task GetGameById(int id) + [HttpGet("/GameById/{id}")] + public async Task GetGameById([FromRoute] int id) { try { @@ -44,16 +47,29 @@ namespace Trek12_API.Controllers { return BadRequest(ex.Message); } - }*/ - - /* - [HttpGet("/GameByPlayer")] - public async Task GetGamesByPlayer() + } + [HttpDelete (Name = "DeleteGameById")] + public async Task DeleteGame(int idGame) { - try + var gameToDelete = await gamesManager.GetItemsById(idGame); + if (gameToDelete == null) { - var games = await gamesManager.GetItems(0, gamesManager) + return NotFound("Partie non trouvée"); } + + if (!await gamesManager.DeleteItem(gameToDelete.SingleOrDefault(game => game.Id == idGame))) + { + return BadRequest("Erreur lors de la suppression de la partie"); + } + + return Ok("Partie bien supprimée"); + } + +/* [HttpPut(Name = "UpdateGameById")] + public async Task Update(int id, GameDTO newGame) + { + await gamesManager.UpdateItem(gamesManager.GetItemsById(id).Result.FirstOrDefault(), newGame.toModel()); + return Ok(newPlayer); }*/ } } diff --git a/Sources/Trek12_API/Converter/GameConverter.cs b/Sources/Trek12_API/Converter/GameConverter.cs index b8d65c1..bca6e14 100644 --- a/Sources/Trek12_API/Converter/GameConverter.cs +++ b/Sources/Trek12_API/Converter/GameConverter.cs @@ -8,7 +8,7 @@ namespace Trek12_API.Converter { public static GameDTO toDTO(this Game game) { - var gameDTO = new GameDTO(game.Id, game.Date, game.Players.toDTOs().First(), game.GameMode.toDTO()); + var gameDTO = new GameDTO(); gameDTO.Duration = game.Duration; gameDTO.Date = game.Date; gameDTO.Turns = new List(); @@ -26,7 +26,50 @@ namespace Trek12_API.Converter { gameDTO.Scores.Add(score.Key.toDTO(), score.Value); } + gameDTO.Players = new List(); + foreach ( var player in game.Players) + { + gameDTO.Players.Add(player.toDTO()); + } + gameDTO.GameMode = new GamemodeDTO() { + Id = game.GameMode.Id, + Name = game.GameMode.Name + }; return 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) + { + gameDTO.Turns.Add(turn.toDTO()); + } + gameDTO.Grilles = new Dictionary(); + foreach (var grille in game.Grilles) + { + gameDTO.Grilles.Add(grille.Key.toDTO(), grille.Value.toDTO()); + } + gameDTO.Scores = new Dictionary(); + foreach (var score in game.Scores) + { + gameDTO.Scores.Add(score.Key.toDTO(), score.Value); + } + gameDTO.Players = new List(); + foreach (var player in game.Players) + { + gameDTO.Players.Add(player.toDTO()); + } + gameDTO.GameMode = new GamemodeDTO() + { + Id = game.GameMode.Id, + Name = game.GameMode.Name + }; + return gameDTO; + }*/ } } diff --git a/Sources/Trek12_API/DTO/GameDTO.cs b/Sources/Trek12_API/DTO/GameDTO.cs index 10a4997..a00d37a 100644 --- a/Sources/Trek12_API/DTO/GameDTO.cs +++ b/Sources/Trek12_API/DTO/GameDTO.cs @@ -11,12 +11,13 @@ namespace Trek12_API.DTO public List Turns { get; set; } public Dictionary Grilles { get; set; } public Dictionary Scores { get; set; } + public List Players { get; set; } public GamemodeDTO GameMode { get; set; } - public PlayerDTO Player { get; set; } - public GameDTO(int id, DateOnly date, PlayerDTO owner, GamemodeDTO gameMode) +/* public GameDTO(int id, DateOnly date, PlayerDTO owner, GamemodeDTO gameMode) { Date = date; + Players = new List(); Grilles = new Dictionary(); Scores = new Dictionary(); Turns = new List(); @@ -24,7 +25,7 @@ namespace Trek12_API.DTO Scores.Add(owner, 0); GameMode = gameMode; Id = id; - Player = owner; - } + Players.Add(owner); + }*/ } }