From 5a8d8fe4e9f9f72b56f8b2a9cd8e528323c572d9 Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Fri, 15 Mar 2024 19:30:07 +0100 Subject: [PATCH] =?UTF-8?q?R=C3=A9glage=20de=20diff=C3=A9rents=20bugs=20et?= =?UTF-8?q?=20incoh=C3=A9rences=20li=C3=A9s=20aux=20succ=C3=A8s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Controllers/SuccessesController.cs | 33 +++++++-------- .../API/Service/SuccessDataServiceAPI.cs | 10 ++--- .../Service/SuccessDataService.cs | 42 ++++++++++--------- API_SQLuedo/Shared/ISuccessService.cs | 8 ++-- API_SQLuedo/TestConsoleAPI/Program.cs | 14 ++++--- 5 files changed, 55 insertions(+), 52 deletions(-) diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index ca9a8a6..0a48938 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -47,7 +47,7 @@ namespace API.Controllers try { _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", id); - return Ok(_successDataService.GetSuccessByUserId(id)); + return Ok(_successDataService.GetSuccessesByUserId(id)); } catch (ArgumentException) { @@ -65,7 +65,7 @@ namespace API.Controllers { _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", id); - return Ok(_successDataService.GetSuccessByInquiryId(id)); + return Ok(_successDataService.GetSuccessesByInquiryId(id)); } catch (ArgumentException) { @@ -74,20 +74,20 @@ namespace API.Controllers } } - [HttpDelete("success/{id:int}")] + [HttpDelete("success/{idUser:int}/{idInquiry:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 404)] - public IActionResult DeleteSuccess(int id) + public IActionResult DeleteSuccess(int idUser, int idInquiry) { - var success = _successDataService.DeleteSuccess(id); + var success = _successDataService.DeleteSuccess(idUser, idInquiry); if (success) { - _logger.LogInformation("[INFORMATION] Le succès avec l'id {id} a été supprimé.", id); - return Ok(_successDataService.DeleteSuccess(id)); + _logger.LogInformation("[INFORMATION] Le succès avec l'id {id} a été supprimé.", idUser); + return Ok(success); } else { - _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", id); + _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", idUser); return NotFound(); } } @@ -108,35 +108,34 @@ namespace API.Controllers _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); } - [HttpPut("success/{id:int}")] + [HttpPut("success/{idUser:int}/{idInquiry:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] - public IActionResult UpdateSuccess(int id, [FromBody] SuccessDTO successDTO) + public IActionResult UpdateSuccess(int idUser, int idInquiry, [FromBody] SuccessDTO successDTO) { - if (id != successDTO.UserId) + if (idUser != successDTO.UserId || idInquiry != successDTO.InquiryId) { _logger.LogError( - "[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id); + "[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", idUser); return BadRequest(); } - if (!ModelState.IsValid) { _logger.LogError( "[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", - id); + idUser); return BadRequest(); } if (successDTO != null) { _logger.LogInformation( - "[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", id); - return Ok(_successDataService.UpdateSuccess(id, successDTO)); + "[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", idUser); + return Ok(_successDataService.UpdateSuccess(idUser,idInquiry, successDTO)); } - _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", id); + _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", idUser); return NotFound(); } } diff --git a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs index af403c5..047203d 100644 --- a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs @@ -14,14 +14,14 @@ public class SuccessDataServiceApi(ISuccessService sucessService) return successesEntities.Select(e => e.FromEntityToDTO()).ToList(); } - public SuccessDTO GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id).FromEntityToDTO(); + public IEnumerable GetSuccessesByUserId(int id) => sucessService.GetSuccessesByUserId(id).Select(s => s.FromEntityToDTO()); - public SuccessDTO GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id).FromEntityToDTO(); + public IEnumerable GetSuccessesByInquiryId(int id) => sucessService.GetSuccessesByInquiryId(id).Select(s => s.FromEntityToDTO()); - public bool DeleteSuccess(int id) => sucessService.DeleteSuccess(id); + public bool DeleteSuccess(int idUser, int idInquiry) => sucessService.DeleteSuccess(idUser, idInquiry); - public SuccessDTO UpdateSuccess(int id, SuccessDTO success) => - sucessService.UpdateSuccess(id, success.FromDTOToEntity()).FromEntityToDTO(); + public SuccessDTO UpdateSuccess(int idUser, int idInquiry, SuccessDTO success) => + sucessService.UpdateSuccess(idUser, idInquiry, success.FromDTOToEntity()).FromEntityToDTO(); public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) => sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDTO(); diff --git a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs index 36335d3..a247a24 100644 --- a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs @@ -40,55 +40,53 @@ public class SuccessDataService : ISuccessService return successes; } - public SuccessEntity GetSuccessByUserId(int id) + public IEnumerable GetSuccessesByUserId(int id) { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (userEntity == null) + var successes = DbContext.Successes.Where(u => u.UserId == id); + if (successes == null) { throw new ArgumentException("Impossible de trouver le succès", nameof(id)); } - return userEntity; + return successes; } - public SuccessEntity GetSuccessByInquiryId(int id) + public IEnumerable GetSuccessesByInquiryId(int id) { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); - if (userEntity == null) + var successes = DbContext.Successes.Where(u => u.InquiryId == id); + if (successes == null) { throw new ArgumentException("Impossible de trouver le succès", nameof(id)); } - return userEntity; + return successes; } - public bool DeleteSuccess(int id) + public bool DeleteSuccess(int idUser, int idInquiry) { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); + var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry); if (successEntity == null) { return false; } - DbContext.Successes.Remove(successEntity); DbContext.SaveChangesAsync(); return true; } - public SuccessEntity UpdateSuccess(int id, SuccessEntity success) + public SuccessEntity UpdateSuccess(int idUser, int idInquiry, SuccessEntity success) { - var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id); + var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry); if (updatingSuccess == null) { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); + throw new ArgumentException("Impossible de trouver le succès", nameof(idUser)); } - - foreach (var pptt in typeof(SuccessEntity).GetProperties().Where(p => + /*foreach (var pptt in typeof(SuccessEntity).GetProperties().Where(p => p.CanWrite && p.Name != nameof(SuccessEntity.UserId) && p.Name != nameof(SuccessEntity.InquiryId))) { pptt.SetValue(updatingSuccess, pptt.GetValue(success)); - } - + }*/ + updatingSuccess.IsFinished = success.IsFinished; DbContext.SaveChangesAsync(); return updatingSuccess; } @@ -101,8 +99,12 @@ public class SuccessDataService : ISuccessService InquiryId = inquiryId, IsFinished = isFinished, }; - DbContext.Successes.Add(newSuccessEntity); - DbContext.SaveChangesAsync(); + var success = DbContext.Successes.Where(s => s.UserId == userId && s.InquiryId == inquiryId); + if (success == null) + { + DbContext.Successes.Add(newSuccessEntity); + DbContext.SaveChangesAsync(); + } return newSuccessEntity; } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/ISuccessService.cs b/API_SQLuedo/Shared/ISuccessService.cs index 07e5f9c..29932ff 100644 --- a/API_SQLuedo/Shared/ISuccessService.cs +++ b/API_SQLuedo/Shared/ISuccessService.cs @@ -5,10 +5,10 @@ namespace Shared public interface ISuccessService { public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria); - public TSuccess GetSuccessByUserId(int id); - public TSuccess GetSuccessByInquiryId(int id); - public bool DeleteSuccess(int id); - public TSuccess UpdateSuccess(int id, TSuccess success); + public IEnumerable GetSuccessesByUserId(int id); + public IEnumerable GetSuccessesByInquiryId(int id); + public bool DeleteSuccess(int idUser, int idInquiry); + public TSuccess UpdateSuccess(int idUser, int idInquiry, TSuccess success); public TSuccess CreateSuccess(int userId, int inquiryId, bool isFinished); } } \ No newline at end of file diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index a3b4275..6622ca8 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -519,13 +519,13 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Succès trouvé !\n"); Console.WriteLine("Veuillez saisir l'identifiant de l'utilisateur lié au succès :"); - var userId = Console.ReadLine(); + var userId = int.Parse(Console.ReadLine()); Console.WriteLine("Veuillez saisir l'identifiant de l'enquête lié au succès :"); - var inquiryId = Console.ReadLine(); + var inquiryId = int.Parse(Console.ReadLine()); Console.WriteLine("Veuillez saisir si l'enquête est terminée (0/1) :"); var isFinished = Console.ReadLine(); - var retour = successController.UpdateSuccess(id, - new SuccessDTO(int.Parse(userId), int.Parse(inquiryId), bool.Parse(isFinished))); + var retour = successController.UpdateSuccess(userId, inquiryId, + new SuccessDTO(userId, inquiryId, bool.Parse(isFinished))); if (retour.GetType() == typeof(OkObjectResult)) { Console.WriteLine("Mise à jour effectué avec succès !"); @@ -605,8 +605,10 @@ using (var context = new UserDbContext(options)) void DeleteSuccess() { Console.WriteLine("Quel est l'identifiant de l'utilisateur lié au succès à supprimer ?"); - var id = int.Parse(Console.ReadLine()); - var res = successController.DeleteSuccess(id); + var idUser = int.Parse(Console.ReadLine()); + Console.WriteLine("Quel est l'identifiant de l'enquête lié au succès à supprimer ?"); + var idInquiry = int.Parse(Console.ReadLine()); + var res = successController.DeleteSuccess(idUser,idInquiry); if (res.GetType() == typeof(OkObjectResult)) { Console.WriteLine("La suppression a été effectuée avec succès !");