diff --git a/code/server/ApiLeapHit/Controllers/PlayerController.cs b/code/server/ApiLeapHit/Controllers/PlayerController.cs index 58ac3df..791a616 100644 --- a/code/server/ApiLeapHit/Controllers/PlayerController.cs +++ b/code/server/ApiLeapHit/Controllers/PlayerController.cs @@ -1,83 +1,98 @@ -using Microsoft.AspNetCore.Http; +using DataBase.DataManager; +using DataBase.Entity; +using DTO; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using System.Net; namespace ApiLeapHit.Controllers { - public class PlayerController : Controller + public class PlayerController : ControllerBase { - // GET: PlayerController - public ActionResult Index() - { - return View(); - } + private readonly DbDataManager _dataManager; - // GET: PlayerController/Details/5 - public ActionResult Details(int id) + public PlayerController(DbDataManager dataManager) { - return View(); + _dataManager = dataManager; } - - // GET: PlayerController/Create - public ActionResult Create() - { - return View(); - } - - // POST: PlayerController/Create - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Create(IFormCollection collection) + [HttpGet("{id}")] + public async Task> GetPlayer(int id) { - try + var player = await _dataManager.GetPlayer(id); + if (player == null) { - return RedirectToAction(nameof(Index)); + return NotFound(); } - catch + + + var dtoPlayer = new DTOPlayer { - return View(); - } + playerId = player.playerId, + name = player.name, + nbBallTouchTotal = player.nbBallTouchTotal, + timePlayed = player.timePlayed, + + }; + return Ok(dtoPlayer); } - // GET: PlayerController/Edit/5 - public ActionResult Edit(int id) + [HttpPost] + public async Task AddPlayer([FromBody] DTOPlayer dtoPlayer) { - return View(); + + var player = new Player + { + playerId = dtoPlayer.playerId, + name = dtoPlayer.name, + nbBallTouchTotal = dtoPlayer.nbBallTouchTotal, + timePlayed = dtoPlayer.timePlayed, + }; + + await _dataManager.AddPlayer(player); + return Ok(); } - // POST: PlayerController/Edit/5 - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Edit(int id, IFormCollection collection) + [HttpDelete("{id}")] + public async Task RemovePlayer(int id) { try { - return RedirectToAction(nameof(Index)); + var result = await _dataManager.RemovePlayer(id); + if (result) + { + return Ok(); + } + return NotFound(); } - catch + catch (Exception ex) { - return View(); + return StatusCode((int)HttpStatusCode.InternalServerError); } } - // GET: PlayerController/Delete/5 - public ActionResult Delete(int id) - { - return View(); - } + + [HttpPut("{id}")] + public async Task Put(int id, [FromBody] DTOPlayer dtoPlayer) + { + if (!ModelState.IsValid) + return StatusCode((int)HttpStatusCode.BadRequest); //"Les données du player ne sont pas correctes" - // POST: PlayerController/Delete/5 - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Delete(int id, IFormCollection collection) - { - try - { - return RedirectToAction(nameof(Index)); - } - catch + Player playerTeste = await _dataManager.GetPlayer(id); + if (playerTeste != null) + return StatusCode((int)HttpStatusCode.NotFound); //"Le player n'existe pas." + + var player = new Player { - return View(); - } + playerId = dtoPlayer.playerId, + name = dtoPlayer.name, + nbBallTouchTotal = dtoPlayer.nbBallTouchTotal, + timePlayed = dtoPlayer.timePlayed, + }; + + Player playerUpdate = await _dataManager.GetPlayer(id); + await _dataManager.UpdatePlayer(id,player.name); + return StatusCode((int)HttpStatusCode.OK); //"Le champion a été modifié." } + } } diff --git a/code/server/DataBase/Context/PongDbContext.cs b/code/server/DataBase/Context/PongDbContext.cs index 5829fd8..17bad66 100644 --- a/code/server/DataBase/Context/PongDbContext.cs +++ b/code/server/DataBase/Context/PongDbContext.cs @@ -19,7 +19,7 @@ namespace DataBase.Context if (!optionsBuilder.IsConfigured) { - optionsBuilder.UseSqlite($"Data Source=C:\\Users\\noanr\\source\\repos\\leap-hit-server\\code\\server\\DataBase\\PongDB.db"); + optionsBuilder.UseSqlite($"Data Source=../DataBase/PongDB.db"); } } } diff --git a/code/server/DataBase/DataManager/DbDataManager.Player.cs b/code/server/DataBase/DataManager/DbDataManager.Player.cs index a6a7842..44919b2 100644 --- a/code/server/DataBase/DataManager/DbDataManager.Player.cs +++ b/code/server/DataBase/DataManager/DbDataManager.Player.cs @@ -17,10 +17,11 @@ namespace DataBase.DataManager using (var context = new PongDbContext()) { await context.Players.AddAsync(player); + await context.SaveChangesAsync(); } } - public Task RemovePlayer(int id) + public async Task RemovePlayer(int id) { using (var context = new PongDbContext()) { @@ -28,13 +29,14 @@ namespace DataBase.DataManager if (player != null) { var result = context.Players.Remove(player); - return Task.FromResult(result != null); + await context.SaveChangesAsync(); + return result != null; } - return Task.FromResult(false); + return false; } } - public Task UpdatePlayer(int id, string newName) + public async Task UpdatePlayer(int id, string newName) { using (var context = new PongDbContext()) { @@ -43,7 +45,8 @@ namespace DataBase.DataManager { player.name = newName; } - return Task.FromResult(player); + await context.SaveChangesAsync(); + return player; } }