🔨 update class gameController + ajout mapper + modif dbdatamanager

pull/1/head
Noan07 2 years ago
parent bb4c2743a2
commit a2baa82630

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
@ -7,7 +7,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />
</ItemGroup>
<ItemGroup>

@ -36,6 +36,34 @@ namespace ApiLeapHit.Controllers
return Ok();
}
[HttpGet]
public async Task<ActionResult<IEnumerable<DTOChat>>> GetChats()
{
var chats = await _dataManager.GetChats();
if (chats == null)
{
return NotFound();
}
var dtoChats = new List<DTOChat>();
foreach (var chat in chats)
{
var player1 = await _dataManager.GetPlayer(chat.player1);
var player2 = await _dataManager.GetPlayer(chat.player2);
var dtoChat = new DTOChat
{
chatId = chat.chatId,
PlayerId1 = new DTOPlayer { playerId = player1.playerId, name = player1.name },
PlayerId2 = new DTOPlayer { playerId = player2.playerId, name = player2.name }
};
dtoChats.Add(dtoChat);
}
return Ok(dtoChats);
}
[HttpDelete("{id}")]
public async Task<ActionResult> RemoveChat(int id)
{

@ -1,10 +1,13 @@
using DataBase.DataManager;
using ApiLeapHit.Mapper;
using DataBase.DataManager;
using DataBase.Entity;
using DTO;
using DTO.Factory;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using System.Net;
using System.Text;
namespace ApiLeapHit.Controllers
{
@ -14,69 +17,181 @@ namespace ApiLeapHit.Controllers
{
private readonly DbDataManager _dataManager;
private readonly ILogger<GameController> _logger;
public GameController(DbDataManager dataManager)
public GameController(DbDataManager dataManager, ILogger<GameController> logger)
{
_dataManager = dataManager;
_logger = logger;
}
[HttpGet("{id}")]
public async Task<ActionResult<DTOGame>> GetGame(int id)
{
var game = await _dataManager.GetGame(id);
if (game == null)
try
{
return NotFound();
var game = await _dataManager.GetGame(id);
if (game == null)
{
return NotFound(new ApiResponse<DTOGame>("La game avec l'identifiant " + id + " n'existe pas."));
}
var winner = await _dataManager.GetPlayer(game.winner);
//if (winner == null)
//{
// return NotFound("Le joueur avec l'identifiant " + game.winner + " n'existe pas.");
//}
var loser = await _dataManager.GetPlayer(game.loser);
//if (loser == null)
//{
// return NotFound("Le joueur avec l'identifiant " + game.loser + " n'existe pas.");
//}
return Ok(new ApiResponse<DTOGame>("Récupération de la game réussie.", game.ToDto(winner, loser)));
}
catch (Exception ex)
{
return StatusCode(500, new ApiResponse<Game>("Une erreur est survenue lors de la récupération des données : " + ex.Message));
}
}
var winner = await _dataManager.GetPlayer(game.winner);
var loser = await _dataManager.GetPlayer(game.loser);
[HttpGet]
public async Task<ActionResult<IEnumerable<DTOGame>>> GetGames()
{
try
{
var games = await _dataManager.GetGames();
if (games == null)
{
return NotFound(new ApiResponse<IEnumerable<DTOGame>>("Aucune game n'ont été trouvées."));
}
//StringBuilder errorMessage = new StringBuilder();
var dtoGames = new List<DTOGame>();
foreach (var game in games)
{
var winner = await _dataManager.GetPlayer(game.winner);
var loser = await _dataManager.GetPlayer(game.loser);
var dtoGame = new DTOGame
//if (winner == null || loser == null)
//{
// errorMessage.Append("Le joueur gagnant ou le joueur perdant n'existe pas pour le jeu avec l'identifiant ");
// errorMessage.Append(game.gameId);
// errorMessage.Append(".");
// break;
//}
dtoGames.Add(game.ToDto(winner, loser));
}
//if (errorMessage.Length > 0)
//{
// return NotFound(errorMessage.ToString());
//}
return Ok(new ApiResponse<IEnumerable<DTOGame>>("La récupération des games à réussit." , dtoGames));
}
catch (Exception ex)
{
gameId = game.gameId,
durationGame = game.durationGame,
nbMaxEchanges = game.nbMaxEchanges,
playerWinner = new DTOPlayer { playerId = winner.playerId, name = winner.name, nbBallTouchTotal = winner.nbBallTouchTotal, timePlayed = winner.timePlayed },
playerLoser = new DTOPlayer
return StatusCode(500, new ApiResponse<Game>("Une erreur est survenue lors de la récupération des données : " + ex.Message));
}
}
[HttpGet("byPlayer/{id}")]
public async Task<ActionResult<IEnumerable<DTOGame>>> GetGameByIdPlayer(int id)
{
try {
var games = await _dataManager.GetGameById(id);
if (games == null || games.Count == 0)
{
playerId = loser.playerId,
name = loser.name,
nbBallTouchTotal = loser.nbBallTouchTotal,
timePlayed = loser.timePlayed
return NotFound(new ApiResponse<IEnumerable<DTOGame>>("Aucune game trouvé pour le joueur avec l'id : " + id));
}
};
return Ok(dtoGame);
//StringBuilder errorMessage = new StringBuilder();
var dtoGames = new List<DTOGame>();
foreach (var game in games)
{
var winner = await _dataManager.GetPlayer(game.winner);
var loser = await _dataManager.GetPlayer(game.loser);
//if (winner == null)
//{
// errorMessage.Append("Le joueur gagnant n'existe pas pour le jeu avec l'identifiant ");
// errorMessage.Append(game.gameId);
// errorMessage.Append(".");
// break;
//}
//if (loser == null)
//{
// errorMessage.Append("Le joueur perdant n'existe pas pour le jeu avec l'identifiant ");
// errorMessage.Append(game.gameId);
// errorMessage.Append(".");
// break;
//}
dtoGames.Add(game.ToDto(winner, loser));
}
//if (errorMessage.Length > 0)
//{
// return NotFound(errorMessage.ToString());
//}
return Ok(new ApiResponse<IEnumerable<DTOGame>>("Récupérations réussis des games pour le joueur " + id, dtoGames));
}
catch (Exception ex)
{
return StatusCode(500, new ApiResponse<Game>("Une erreur est survenue lors de la récupération des données : " + ex.Message));
}
}
[HttpPost]
public async Task<ActionResult> AddGame([FromBody] DTOGame dtoGame)
public async Task<ActionResult> AddGame([FromBody] DTOGameWithIdPlayer dtoGame)
{
var winner = await _dataManager.GetPlayer(dtoGame.playerWinner.playerId);
var loser = await _dataManager.GetPlayer(dtoGame.playerLoser.playerId);
try {
var winner = await _dataManager.GetPlayer(dtoGame.playerWinner);
var loser = await _dataManager.GetPlayer(dtoGame.playerLoser);
//StringBuilder errorMessage = new StringBuilder();
//if (winner == null)
//{
// errorMessage.Append("Le joueur gagnant avec l'identifiant ");
// errorMessage.Append(dtoGame.playerWinner.playerId);
// errorMessage.Append(" n'existe pas.");
// return NotFound(errorMessage.ToString());
//}
var game = new Game
//if (loser == null)
//{
// errorMessage.Append("Le joueur perdant avec l'identifiant ");
// errorMessage.Append(dtoGame.playerLoser.playerId);
// errorMessage.Append(" n'existe pas.");
// return NotFound(errorMessage.ToString());
//}
var game = dtoGame.ToGame(winner, loser);
return Ok(new ApiResponse<Game>("La game a été ajoutée avec succès.", game));
}
catch (Exception ex)
{
durationGame = dtoGame.durationGame,
nbMaxEchanges = dtoGame.nbMaxEchanges,
winner = winner.playerId,
loser = loser.playerId
};
await _dataManager.AddGame(game);
return Ok();
return StatusCode(500, new ApiResponse<Game>("Une erreur est survenue lors de la récupération des données : " + ex.Message));
}
}
[HttpDelete("{id}")]
[HttpDelete("{id}")]
public async Task<ActionResult> RemoveGame(int id)
{
var result = await _dataManager.RemoveGame(id);
if (result)
try {
var result = await _dataManager.RemoveGame(id);
if (result)
{
return Ok(new ApiResponse<object>( "La game avec l'identifiant " + id + " a été supprimée avec succès."));
}
return NotFound(new ApiResponse<object>("La game avec l'identifiant " + id + " n'existe pas."));
}
catch (Exception ex)
{
return Ok(result);
return StatusCode(500, new ApiResponse<object>("Une erreur est survenue lors de la récupération des données : " + ex.Message));
}
return NotFound(result);
}
}
}

@ -0,0 +1,32 @@
using DataBase.Entity;
using DTO;
namespace ApiLeapHit.Mapper
{
public static class GameMapper
{
public static DTOGame ToDto(this Game game, Player winner, Player loser)
{
DTOGame dtoGame = new DTOGame()
{
gameId = game.gameId,
durationGame = game.durationGame,
nbMaxEchanges = game.nbMaxEchanges,
playerWinner = winner.ToDto(),
playerLoser = loser.ToDto()
};
return dtoGame;
}
public static Game ToGame(this DTOGame dtoGame, Player winner, Player loser)
{
return new Game
{
durationGame = dtoGame.durationGame,
nbMaxEchanges = dtoGame.nbMaxEchanges,
winner = winner.playerId,
loser = loser.playerId
};
}
}
}

@ -0,0 +1,19 @@
using DataBase.Entity;
using DTO;
namespace ApiLeapHit.Mapper
{
public static class GameWithIdPlayerMapper
{
public static Game ToGame(this DTOGameWithIdPlayer dtoGame, Player winner, Player loser)
{
return new Game
{
durationGame = dtoGame.durationGame,
nbMaxEchanges = dtoGame.nbMaxEchanges,
winner = winner.playerId,
loser = loser.playerId
};
}
}
}

@ -0,0 +1,20 @@
using DataBase.Entity;
using DTO;
namespace ApiLeapHit.Mapper
{
public static class PlayerMapper
{
public static DTOPlayer ToDto(this Player player)
{
DTOPlayer dtoPlayer = new DTOPlayer()
{
playerId = player.playerId,
name = player.name,
nbBallTouchTotal = player.nbBallTouchTotal,
timePlayed = player.timePlayed
};
return dtoPlayer;
}
}
}

@ -1,15 +1,19 @@
using DataBase.DataManager;
using Microsoft.Extensions.Logging;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped<DbDataManager>();
//builder.Services.AddSingleton<IDataManager, StubData>();
// Add logging
builder.Logging.AddConsole();
var app = builder.Build();
// Configure the HTTP request pipeline.
@ -25,4 +29,4 @@ app.UseAuthorization();
app.MapControllers();
app.Run();
app.Run();

@ -2,7 +2,16 @@
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"Console": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
},
"AllowedHosts": "*"

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DTO
{
public class DTOGameWithIdPlayer
{
public int gameId { get; set; }
public int durationGame { get; set; }
public int nbMaxEchanges { get; set; }
public int playerWinner { get; set; }
public int playerLoser { get; set; }
}
}

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DTO.Factory
{
public class ApiResponse<T>
{
public string Message { get; set; }
public T Data { get; set; }
public ApiResponse(string message, T data = default)
{
Message = message;
Data = data;
}
}
}

@ -33,5 +33,16 @@ namespace DataBase.DataManager
return false;
}
}
public Task<List<Chat>> GetChats()
{
using (var context = new PongDbContext())
{
var chats = context.Chats.ToList();
return Task.FromResult(chats);
}
}
}
}

@ -42,5 +42,32 @@ namespace DataBase.DataManager
return Task.FromResult<Game>(game);
}
}
public Task<List<Game>> GetGameById(int id)
{
using (var context = new PongDbContext())
{
var games = context.Games.Where(g => g.winner == id || g.loser == id).ToList();
return Task.FromResult(games);
}
}
public Task<List<Game>> GetGames()
{
using (var context = new PongDbContext())
{
var games = context.Games.ToList();
return Task.FromResult(games);
}
}
public Task<int> GetNbGames()
{
using (var context = new PongDbContext())
{
var nbgames = context.Games.ToList().Count();
return Task.FromResult(nbgames);
}
}
}
}

@ -43,5 +43,14 @@ namespace DataBase.DataManager
return false;
}
}
public Task<List<Message>> GetMessages()
{
using (var context = new PongDbContext())
{
var messages = context.Messages.ToList();
return Task.FromResult(messages);
}
}
}
}

Binary file not shown.
Loading…
Cancel
Save