diff --git a/API_SQLuedo/API/Controllers/InquiriesController.cs b/API_SQLuedo/API/Controllers/InquiriesController.cs index 045d7a7..0b412bc 100644 --- a/API_SQLuedo/API/Controllers/InquiriesController.cs +++ b/API_SQLuedo/API/Controllers/InquiriesController.cs @@ -13,17 +13,18 @@ namespace API.Controllers [ApiController] public class InquiriesController : Controller { - private IInquiryService _inquiryDataService; + private readonly IInquiryService _inquiryDataService; private readonly ILogger _logger; - public InquiriesController(IInquiryService inquiryDataService, ILogger logger) + + public InquiriesController(IInquiryService inquiryDataService, ILogger logger) { _inquiryDataService = inquiryDataService; _logger = logger; } - [HttpGet("inquiries/{page}/{number}/{orderCriteria}")] - [ProducesResponseType(typeof(InquiryDTO), 200)] + [HttpGet("inquiries/{page:int}/{number:int}/{orderCriteria}")] + [ProducesResponseType(typeof(InquiryDto), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) { @@ -33,12 +34,13 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune enquête trouvée."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Enquête(s) trouvée(s)", nbInquiry); return Ok(_inquiryDataService.GetInquiries(page, number, orderCriteria)); } [HttpGet("inquiry/{id:int}")] - [ProducesResponseType(typeof(InquiryDTO), 200)] + [ProducesResponseType(typeof(InquiryDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetInquiryById(int id) { @@ -55,7 +57,7 @@ namespace API.Controllers } [HttpGet("inquiry/{title:alpha}")] - [ProducesResponseType(typeof(InquiryDTO), 200)] + [ProducesResponseType(typeof(InquiryDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetInquiryByTitle(string title) { @@ -71,8 +73,8 @@ namespace API.Controllers } } - [HttpDelete("inquiry/{id}")] - [ProducesResponseType(typeof(InquiryDTO), 200)] + [HttpDelete("inquiry/{id:int}")] + [ProducesResponseType(typeof(InquiryDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteInquiry(int id) { @@ -87,43 +89,50 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id); return NotFound(); } - } [HttpPost] - [ProducesResponseType(typeof(InquiryDTO), 201)] + [ProducesResponseType(typeof(InquiryDto), 201)] [ProducesResponseType(typeof(string), 400)] - public IActionResult CreateInquiry([FromBody] InquiryDTO dto) + public IActionResult CreateInquiry([FromBody] InquiryDto dto) { if (dto.Title == null || dto.Description == null) { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}", dto.Title, dto.Description, dto.IsUser); - return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser)); + + _logger.LogInformation( + "[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}", + dto.Title, dto.Description, dto.IsUser); + return Created(nameof(GetInquiries), + _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser)); } - [HttpPut("inquiry/{id}")] - [ProducesResponseType(typeof(InquiryDTO), 200)] + [HttpPut("inquiry/{id:int}")] + [ProducesResponseType(typeof(InquiryDto), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] - public IActionResult UpdateInquiry(int id, [FromBody] InquiryDTO inquiryDTO) + public IActionResult UpdateInquiry(int id, [FromBody] InquiryDto InquiryDto) { - if (id != inquiryDTO.Id) + if (id != InquiryDto.Id) { _logger.LogError("[ERREUR] Problème ID - La mise à jour de l'enquête avec l'id {id} a échouée.", id); return BadRequest(); } + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour de l'enquête avec l'id {id} a échouée.", id); + _logger.LogError( + "[ERREUR] Problème controlleur - La mise à jour de l'enquête avec l'id {id} a échouée.", id); return BadRequest(); } - if (inquiryDTO != null) + + if (InquiryDto != null) { _logger.LogInformation("[INFORMATION] La mise à jour de l'enquête avec l'id {id} a été effectuée", id); - return Ok(_inquiryDataService.UpdateInquiry(id, inquiryDTO)); + return Ok(_inquiryDataService.UpdateInquiry(id, InquiryDto)); } + _logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id); return NotFound(); } diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index eaaec1b..57404aa 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -13,18 +13,18 @@ namespace API.Controllers [ApiController] public class LessonsController : Controller { - private ILessonService _lessonDataService; + private readonly ILessonService _lessonDataService; private readonly ILogger _logger; - public LessonsController(ILessonService lessonDataService, ILogger logger) + public LessonsController(ILessonService lessonDataService, ILogger logger) { _lessonDataService = lessonDataService; _logger = logger; } - [HttpGet("lessons/{page}/{number}/{orderCriteria}")] - [ProducesResponseType(typeof(LessonDTO), 200)] + [HttpGet("lessons/{page:int}/{number:int}/{orderCriteria}")] + [ProducesResponseType(typeof(LessonDto), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetLessons(int page, int number, LessonOrderCriteria orderCriteria) { @@ -34,12 +34,13 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune leçon trouvée."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Leçon(s) trouvée(s)", nbLesson); return Ok(_lessonDataService.GetLessons(page, number, orderCriteria)); } [HttpGet("lesson/{id:int}")] - [ProducesResponseType(typeof(LessonDTO), 200)] + [ProducesResponseType(typeof(LessonDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetLessonById(int id) { @@ -56,7 +57,7 @@ namespace API.Controllers } [HttpGet("lesson/{title:alpha}")] - [ProducesResponseType(typeof(LessonDTO), 200)] + [ProducesResponseType(typeof(LessonDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetLessonByTitle(string title) { @@ -72,8 +73,8 @@ namespace API.Controllers } } - [HttpDelete("lesson/{id}")] - [ProducesResponseType(typeof(LessonDTO), 200)] + [HttpDelete("lesson/{id:int}")] + [ProducesResponseType(typeof(LessonDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteLesson(int id) { @@ -88,43 +89,50 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune leçon trouvée avec l'id {id}.", id); return NotFound(); } - } [HttpPost] - [ProducesResponseType(typeof(LessonDTO), 201)] + [ProducesResponseType(typeof(LessonDto), 201)] [ProducesResponseType(typeof(string), 400)] - public IActionResult CreateLesson([FromBody] LessonDTO dto) + public IActionResult CreateLesson([FromBody] LessonDto dto) { if (dto.Title == null || dto.LastPublisher == null) { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}", dto.Title, dto.LastPublisher, dto.LastEdit); - return Created(nameof(GetLessons), _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit)); + + _logger.LogInformation( + "[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}", + dto.Title, dto.LastPublisher, dto.LastEdit); + return Created(nameof(GetLessons), + _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit)); } - [HttpPut("lesson/{id}")] - [ProducesResponseType(typeof(LessonDTO), 200)] + [HttpPut("lesson/{id:int}")] + [ProducesResponseType(typeof(LessonDto), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] - public IActionResult UpdateLesson(int id, [FromBody] LessonDTO lessonDTO) + public IActionResult UpdateLesson(int id, [FromBody] LessonDto LessonDto) { - if (id != lessonDTO.Id) + if (id != LessonDto.Id) { _logger.LogError("[ERREUR] Problème ID - La mise à jour de la leçon avec l'id {id} a échouée.", id); return BadRequest(); } + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour de la leçon avec l'id {id} a échouée.", id); + _logger.LogError("[ERREUR] Problème controlleur - La mise à jour de la leçon avec l'id {id} a échouée.", + id); return BadRequest(); } - if (lessonDTO != null) + + if (LessonDto != null) { _logger.LogInformation("[INFORMATION] La mise à jour de la leçon avec l'id {id} a été effectuée", id); - return Ok(_lessonDataService.UpdateLesson(id, lessonDTO)); + return Ok(_lessonDataService.UpdateLesson(id, LessonDto)); } + _logger.LogError("[ERREUR] Aucune leçon trouvée avec l'id {id}.", id); return NotFound(); } diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index 9196e21..9d2557f 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -13,33 +13,35 @@ namespace API.Controllers [ApiController] public class ParagraphsController : Controller { - private IParagraphService _paragraphDataService; + private readonly IParagraphService _paragraphDataService; private readonly ILogger _logger; - public ParagraphsController(IParagraphService paragraphDataService, ILogger logger) + public ParagraphsController(IParagraphService paragraphDataService, + ILogger logger) { _paragraphDataService = paragraphDataService; _logger = logger; } - [HttpGet("paragraphs/{page}/{number}/{orderCriteria}")] - [ProducesResponseType(typeof(ParagraphDTO), 200)] + [HttpGet("paragraphs/{page:int}/{number:int}/{orderCriteria}")] + [ProducesResponseType(typeof(ParagraphDto), 200)] [ProducesResponseType(typeof(string), 204)] - public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) + public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) { - var nbParagraph = ( _paragraphDataService.GetParagraphs(page, number, orderCriteria)).ToList().Count(); - if(nbParagraph == 0) + var nbParagraph = _paragraphDataService.GetParagraphs(page, number, orderCriteria).ToList().Count; + if (nbParagraph == 0) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Paragraphe(s) trouvé(s)", nbParagraph); return Ok(_paragraphDataService.GetParagraphs(page, number, orderCriteria)); } [HttpGet("paragraph/{id:int}")] - [ProducesResponseType(typeof(ParagraphDTO), 200)] + [ProducesResponseType(typeof(ParagraphDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetParagraphById(int id) { @@ -47,7 +49,8 @@ namespace API.Controllers { _logger.LogInformation("[INFORMATION] Le paragraphe avec l'id {id} a été trouvé.", id); return Ok(_paragraphDataService.GetParagraphById(id)); - } catch (ArgumentException) + } + catch (ArgumentException) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id); return NotFound(); @@ -55,7 +58,7 @@ namespace API.Controllers } [HttpGet("paragraph/{title:alpha}")] - [ProducesResponseType(typeof(ParagraphDTO), 200)] + [ProducesResponseType(typeof(ParagraphDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetParagraphByTitle(string title) { @@ -63,68 +66,78 @@ namespace API.Controllers { _logger.LogInformation("[INFORMATION] Le paragraphe avec le titre {title} a été trouvé.", title); return Ok(_paragraphDataService.GetParagraphByTitle(title)); - }catch (ArgumentException) + } + catch (ArgumentException) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec le titre {title}.", title); return NotFound(); } - } - [HttpDelete("paragraph/{id}")] - [ProducesResponseType(typeof(ParagraphDTO), 200)] + [HttpDelete("paragraph/{id:int}")] + [ProducesResponseType(typeof(ParagraphDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteParagraph(int id) { var success = _paragraphDataService.DeleteParagraph(id); - if(success) + if (success) { _logger.LogInformation("[INFORMATION] Le paragraphe avec l'id {id} a été supprimé.", id); return Ok(_paragraphDataService.DeleteParagraph(id)); - } else + } + else { _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id); - return NotFound(); + return NotFound(); } - } [HttpPost] - [ProducesResponseType(typeof(ParagraphDTO), 201)] + [ProducesResponseType(typeof(ParagraphDto), 201)] [ProducesResponseType(typeof(string), 400)] - public IActionResult CreateParagraph([FromBody] ParagraphDTO dto) + public IActionResult CreateParagraph([FromBody] ParagraphDto dto) { - if (dto.Title == null || dto.Content == null || dto.Info == null || dto.Query == null || dto.Comment == null) + if (dto.Title == null || dto.Content == null || dto.Info == null || dto.Query == null || + dto.Comment == null) { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Un paragraphe a été créé : title - {title}, content - {content}, info - {info}, query - {query}, comment - {comment}", dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment); - return Created(nameof(GetParagraphs), _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, dto.LessonId)); + + _logger.LogInformation( + "[INFORMATION] Un paragraphe a été créé : title - {title}, content - {content}, info - {info}, query - {query}, comment - {comment}", + dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment); + return Created(nameof(GetParagraphs), + _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, + dto.LessonId)); } - [HttpPut("paragraph/{id}")] - [ProducesResponseType(typeof(ParagraphDTO), 200)] + [HttpPut("paragraph/{id:int}")] + [ProducesResponseType(typeof(ParagraphDto), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] - public IActionResult UpdateParagraph(int id, [FromBody] ParagraphDTO paragraphDTO) + public IActionResult UpdateParagraph(int id, [FromBody] ParagraphDto ParagraphDto) { - if(id != paragraphDTO.Id) + if (id != ParagraphDto.Id) { _logger.LogError("[ERREUR] Problème ID - La mise à jour du paragraphe avec l'id {id} a échouée.", id); return BadRequest(); } - if(!ModelState.IsValid) + + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour du paragraphe avec l'id {id} a échouée.", id); + _logger.LogError( + "[ERREUR] Problème controlleur - La mise à jour du paragraphe avec l'id {id} a échouée.", id); return BadRequest(); } - if(paragraphDTO != null) + + if (ParagraphDto != null) { _logger.LogInformation("[INFORMATION] La mise à jour du paragraphe avec l'id {id} a été effectuée", id); - return Ok(_paragraphDataService.UpdateParagraph(id, paragraphDTO)); + return Ok(_paragraphDataService.UpdateParagraph(id, ParagraphDto)); } + _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id); - return NotFound(); + return NotFound(); } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index 09df742..939793d 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -13,118 +13,130 @@ namespace API.Controllers [ApiController] public class SuccessesController : Controller { - private ISuccessService _successDataService; + private readonly ISuccessService _successDataService; private readonly ILogger _logger; - public SuccessesController(ISuccessService successDataService, ILogger logger) + public SuccessesController(ISuccessService successDataService, ILogger logger) { _successDataService = successDataService; _logger = logger; } - [HttpGet("successes/{page}/{number}/{orderCriteria}")] - [ProducesResponseType(typeof(SuccessDTO), 200)] + [HttpGet("successes/{page:int}/{number:int}/{orderCriteria}")] + [ProducesResponseType(typeof(SuccessDto), 200)] [ProducesResponseType(typeof(string), 204)] - public IActionResult GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public IActionResult GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { - var nbUser = (_successDataService.GetSuccesses(page, number, orderCriteria)).ToList().Count(); - if(nbUser == 0) + var nbUser = _successDataService.GetSuccesses(page, number, orderCriteria).ToList().Count; + if (nbUser == 0) { _logger.LogError("[ERREUR] Aucun utilisateur trouvé."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Utilisateur(s) trouvé(s)", nbUser); return Ok(_successDataService.GetSuccesses(page, number, orderCriteria)); } [HttpGet("success/user/{id:int}")] - [ProducesResponseType(typeof(SuccessDTO), 200)] + [ProducesResponseType(typeof(SuccessDto), 200)] [ProducesResponseType(typeof(string), 404)] - public IActionResult GetSuccessByUserId(int userId) + public IActionResult GetSuccessByUserId(int id) { try { - _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", userId); - return Ok(_successDataService.GetSuccessByUserId(userId)); - } catch (ArgumentException) + _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", id); + return Ok(_successDataService.GetSuccessesByUserId(id)); + } + catch (ArgumentException) { - _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", userId); + _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", id); return NotFound(); } } - [HttpGet("success/inquiry/{inquiryId:int}")] - [ProducesResponseType(typeof(SuccessDTO), 200)] + [HttpGet("success/inquiry/{id:int}")] + [ProducesResponseType(typeof(SuccessDto), 200)] [ProducesResponseType(typeof(string), 404)] - public IActionResult GetSuccessByInquiryId(int inquiryId) + public IActionResult GetSuccessByInquiryId(int id) { try { - _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", inquiryId); - return Ok(_successDataService.GetSuccessByInquiryId(inquiryId)); - }catch (ArgumentException) + _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", + id); + return Ok(_successDataService.GetSuccessesByInquiryId(id)); + } + catch (ArgumentException) { - _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", inquiryId); + _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", id); return NotFound(); } - } - [HttpDelete("success/{id}")] - [ProducesResponseType(typeof(SuccessDTO), 200)] + [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); - if(success) + 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)); - } else + _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); - return NotFound(); + _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", idUser); + return NotFound(); } - } [HttpPost] - [ProducesResponseType(typeof(SuccessDTO), 201)] + [ProducesResponseType(typeof(SuccessDto), 201)] [ProducesResponseType(typeof(string), 400)] - public IActionResult CreateSuccess([FromBody] SuccessDTO dto) + public IActionResult CreateSuccess([FromBody] SuccessDto dto) { /*if (dto.UserId == null || dto.InquiryId == null) { return BadRequest(); }*/ - _logger.LogInformation("[INFORMATION] Un succès a été créé : userId - {userId}, inquiryId - {inquiryId}, isFinished - {isFinished}", dto.UserId, dto.InquiryId, dto.IsFinished); - return Created(nameof(GetSuccesses), _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); + _logger.LogInformation( + "[INFORMATION] Un succès a été créé : userId - {userId}, inquiryId - {inquiryId}, isFinished - {isFinished}", + dto.UserId, dto.InquiryId, dto.IsFinished); + return Created(nameof(GetSuccesses), + _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); } - [HttpPut("success/{id}")] - [ProducesResponseType(typeof(SuccessDTO), 200)] + [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); + _logger.LogError( + "[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) + 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); + _logger.LogError( + "[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", + idUser); return BadRequest(); } - if(successDTO != null) + + 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)); + _logger.LogInformation( + "[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); - return NotFound(); + + _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", idUser); + return NotFound(); } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 32dbe70..fb57815 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -11,10 +11,10 @@ namespace API.Controllers [Authorize] [ApiVersion("1.0")] [ApiController] - public class UsersController(ILogger logger, IUserService userService) : ControllerBase + public class UsersController(ILogger logger, IUserService userService) : ControllerBase { - [HttpGet("users/{page}/{number}")] - [ProducesResponseType(typeof(UserDTO), 200)] + [HttpGet("users/{page:int}/{number:int}")] + [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetUsers(int page, int number, UserOrderCriteria orderCriteria) { @@ -30,7 +30,7 @@ namespace API.Controllers } [HttpGet("user/{id:int}")] - [ProducesResponseType(typeof(UserDTO), 200)] + [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetUserById(int id) { @@ -47,7 +47,7 @@ namespace API.Controllers } [HttpGet("user/{username:alpha}")] - [ProducesResponseType(typeof(UserDTO), 200)] + [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetUserByUsername(string username) { @@ -63,8 +63,8 @@ namespace API.Controllers } } - [HttpDelete("user/{id}")] - [ProducesResponseType(typeof(UserDTO), 200)] + [HttpDelete("user/{id:int}")] + [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteUser(int id) { @@ -72,7 +72,7 @@ namespace API.Controllers if (success) { logger.LogInformation("[INFORMATION] L'utilisateur avec l'id {id} a été supprimé.", id); - return Ok(userService.DeleteUser(id)); + return Ok(); } else { @@ -82,9 +82,9 @@ namespace API.Controllers } [HttpPost] - [ProducesResponseType(typeof(UserDTO), 201)] + [ProducesResponseType(typeof(UserDto), 201)] [ProducesResponseType(typeof(string), 400)] - public IActionResult CreateUser([FromBody] UserDTO dto) + public IActionResult CreateUser([FromBody] UserDto dto) { if (dto.Username == null || dto.Password == null || dto.Email == null) { @@ -99,13 +99,13 @@ namespace API.Controllers userService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin)); } - [HttpPut("user/{id}")] - [ProducesResponseType(typeof(UserDTO), 200)] + [HttpPut("user/{id:int}")] + [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] - public IActionResult UpdateUser(int id, [FromBody] UserDTO userDto) + public IActionResult UpdateUser(int id, [FromBody] UserDto UserDto) { - if (id != userDto.Id) + if (id != UserDto.Id) { logger.LogError("[ERREUR] Problème ID - La mise à jour de l'utilisateur avec l'id {id} a échouée.", id); return BadRequest(); @@ -114,15 +114,15 @@ namespace API.Controllers if (!ModelState.IsValid) { logger.LogError( - "[ERREUR] Problème controlleur - La mise à jour de l'utilisateur avec l'id {id} a échouée.", id); + "[ERREUR] Problème controller - La mise à jour de l'utilisateur avec l'id {id} a échouée.", id); return BadRequest(); } - if (userDto != null) + if (UserDto != null) { - logger.LogInformation("[INFORMATION] La mise à jour de l'utilsiateur avec l'id {id} a été effectuée", + logger.LogInformation("[INFORMATION] La mise à jour de l'utilisateur avec l'id {id} a été effectuée", id); - return Ok(userService.UpdateUser(id, userDto)); + return Ok(userService.UpdateUser(id, UserDto)); } logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id {id}.", id); diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 338e26c..8f6c77d 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -6,9 +6,7 @@ using DbDataManager.Service; using Dto; using Entities; using Microsoft.AspNetCore.Identity; -using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models; using Shared; @@ -21,20 +19,20 @@ builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services.AddScoped, DbDataManager.Service.UserDataService>(); -builder.Services.AddScoped, Shared.UserDataService>(); +builder.Services.AddScoped, UserDataService>(); +builder.Services.AddScoped, UserDataServiceApi>(); -builder.Services.AddScoped, DbDataManager.Service.InquiryDataService>(); -builder.Services.AddScoped, Shared.InquiryDataService>(); +builder.Services.AddScoped, InquiryDataService>(); +builder.Services.AddScoped, InquiryDataServiceApi>(); -builder.Services.AddScoped, DbDataManager.Service.ParagraphDataService>(); -builder.Services.AddScoped, Shared.ParagraphDataService>(); +builder.Services.AddScoped, ParagraphDataService>(); +builder.Services.AddScoped, ParagraphDataServiceApi>(); -builder.Services.AddScoped, DbDataManager.Service.SuccessDataService>(); -builder.Services.AddScoped, Shared.SuccessDataService>(); +builder.Services.AddScoped, SuccessDataService>(); +builder.Services.AddScoped, SuccessDataServiceApi>(); -builder.Services.AddScoped, DbDataManager.Service.LessonDataService>(); -builder.Services.AddScoped, Shared.LessonDataService>(); +builder.Services.AddScoped, LessonDataService>(); +builder.Services.AddScoped, LessonDataServiceApi>(); builder.Services.AddDbContext(); builder.Services.AddDbContext(options => options.UseInMemoryDatabase("appDb")); @@ -72,11 +70,11 @@ builder.Services.AddSwaggerGen(option => { Reference = new OpenApiReference { - Type=ReferenceType.SecurityScheme, - Id="Bearer" + Type = ReferenceType.SecurityScheme, + Id = "Bearer" } }, - new string[]{} + new string[] { } } }); }); @@ -86,7 +84,7 @@ var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { - app.UseSwagger(); + app.UseSwagger(); app.UseSwaggerUI(); } @@ -98,4 +96,4 @@ app.MapControllers(); app.MapIdentityApi(); -app.Run(); +app.Run(); \ No newline at end of file diff --git a/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs b/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs index 7f7ebf4..3e7d3a8 100644 --- a/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs @@ -1,14 +1,21 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class InquiryDataServiceApi(IInquiryService inquiryService) : IInquiryService +public class InquiryDataServiceApi(IInquiryService inquiryService) : IInquiryService { - public InquiryEntity CreateInquiry(string title, string description, bool isUser) + public InquiryDto UpdateInquiry(int id, InquiryDto inquiry) { - return inquiryService.CreateInquiry(title, description, isUser); + return inquiryService.UpdateInquiry(id, inquiry.FromDtoToEntity()).FromEntityToDto(); + } + + public InquiryDto CreateInquiry(string title, string description, bool isUser) + { + return inquiryService.CreateInquiry(title, description, isUser).FromEntityToDto(); } public bool DeleteInquiry(int id) @@ -16,18 +23,13 @@ public class InquiryDataServiceApi(IInquiryService inquiryService return inquiryService.DeleteInquiry(id); } - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) + public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) { var inquiries = inquiryService.GetInquiries(page, number, orderCriteria); - return inquiries.Select(i => i).ToList(); + return inquiries.Select(i => i.FromEntityToDto()).ToList(); } - public InquiryEntity GetInquiryById(int id) => inquiryService.GetInquiryById(id); + public InquiryDto GetInquiryById(int id) => inquiryService.GetInquiryById(id).FromEntityToDto(); - public InquiryEntity GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title); - - public InquiryEntity UpdateInquiry(int id, InquiryEntity inquiry) - { - return inquiryService.UpdateInquiry(id, inquiry); - } + public InquiryDto GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title).FromEntityToDto(); } \ No newline at end of file diff --git a/API_SQLuedo/API/Service/LessonDataServiceAPI.cs b/API_SQLuedo/API/Service/LessonDataServiceAPI.cs index 7b26363..a93726b 100644 --- a/API_SQLuedo/API/Service/LessonDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/LessonDataServiceAPI.cs @@ -1,26 +1,31 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class LessonDataServiceApi(ILessonService lessonService) : ILessonService +public class LessonDataServiceApi(ILessonService lessonService) : ILessonService { - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) + public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) { var lessonsEntities = lessonService.GetLessons(page, number, orderCriteria); - return lessonsEntities.Select(e => e).ToList(); + return lessonsEntities.Select(e => e.FromEntityToDto()).ToList(); } - public LessonEntity GetLessonById(int id) => lessonService.GetLessonById(id); + public LessonDto GetLessonById(int id) => lessonService.GetLessonById(id).FromEntityToDto(); - public LessonEntity GetLessonByTitle(string title) => lessonService.GetLessonByTitle(title); + public LessonDto GetLessonByTitle(string title) => lessonService.GetLessonByTitle(title).FromEntityToDto(); public bool DeleteLesson(int id) => lessonService.DeleteLesson(id); - public LessonEntity UpdateLesson(int id, LessonEntity lesson) => - lessonService.UpdateLesson(id, lesson); + public LessonDto UpdateLesson(int id, LessonDto lesson) => + lessonService.UpdateLesson(id, lesson.FromDtoToEntity()).FromEntityToDto(); - public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) => - lessonService.CreateLesson(title, lastPublisher, lastEdit); + public LessonDto UpdateLesson(int id, LessonEntity lesson) => + lessonService.UpdateLesson(id, lesson).FromEntityToDto(); + + public LessonDto CreateLesson(string title, string lastPublisher, DateOnly lastEdit) => + lessonService.CreateLesson(title, lastPublisher, lastEdit).FromEntityToDto(); } \ No newline at end of file diff --git a/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs b/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs index c29f89d..e8dd3ff 100644 --- a/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs @@ -1,26 +1,31 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class ParagraphDataServiceApi(IParagraphService paragraphService) : IParagraphService +public class ParagraphDataServiceApi(IParagraphService paragraphService) + : IParagraphService { - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) + public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) { var paragraphsEntities = paragraphService.GetParagraphs(page, number, orderCriteria); - return paragraphsEntities.Select(e => e).ToList(); + return paragraphsEntities.Select(e => e.FromEntityToDto()).ToList(); } - public ParagraphEntity GetParagraphById(int id) => paragraphService.GetParagraphById(id); + public ParagraphDto GetParagraphById(int id) => paragraphService.GetParagraphById(id).FromEntityToDto(); - public ParagraphEntity GetParagraphByTitle(string title) => paragraphService.GetParagraphByTitle(title); + public ParagraphDto GetParagraphByTitle(string title) => + paragraphService.GetParagraphByTitle(title).FromEntityToDto(); public bool DeleteParagraph(int id) => paragraphService.DeleteParagraph(id); - public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph) => - paragraphService.UpdateParagraph(id, paragraph); + public ParagraphDto UpdateParagraph(int id, ParagraphDto paragraph) => + paragraphService.UpdateParagraph(id, paragraph.FromDtoToEntity()).FromEntityToDto(); - public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) => - paragraphService.CreateParagraph(title, content, info, query, comment, lessonId); + public ParagraphDto CreateParagraph(string title, string content, string info, string query, string comment, + int lessonId) => + paragraphService.CreateParagraph(title, content, info, query, comment, lessonId).FromEntityToDto(); } \ No newline at end of file diff --git a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs index 7433a91..c1d57f9 100644 --- a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs @@ -1,26 +1,28 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class SuccessDataServiceApi(ISuccessService sucessService) : ISuccessService +public class SuccessDataServiceApi(ISuccessService sucessService) : ISuccessService { - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { var successesEntities = sucessService.GetSuccesses(page, number, orderCriteria); - return successesEntities.Select(e => e).ToList(); + return successesEntities.Select(e => e.FromEntityToDto()).ToList(); } - public SuccessEntity GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id); + public IEnumerable GetSuccessesByUserId(int id) => sucessService.GetSuccessesByUserId(id).Select(s => s.FromEntityToDto()); - public SuccessEntity GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id); + 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 SuccessEntity UpdateSuccess(int id, SuccessEntity success) => - sucessService.UpdateSuccess(id, success); + public SuccessDto UpdateSuccess(int idUser, int idInquiry, SuccessDto success) => + sucessService.UpdateSuccess(idUser, idInquiry, success.FromDtoToEntity()).FromEntityToDto(); - public SuccessEntity CreateSuccess(int userId, int inquiryId, bool isFinished) => - sucessService.CreateSuccess(userId, inquiryId, isFinished); + public SuccessDto CreateSuccess(int userId, int inquiryId, bool isFinished) => + sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDto(); } \ No newline at end of file diff --git a/API_SQLuedo/API/Service/UserDataServiceAPI.cs b/API_SQLuedo/API/Service/UserDataServiceAPI.cs index c1d4997..72bca16 100644 --- a/API_SQLuedo/API/Service/UserDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/UserDataServiceAPI.cs @@ -1,26 +1,28 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class UserDataServiceApi(IUserService userService) : IUserService +public class UserDataServiceApi(IUserService userService) : IUserService { - public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) + public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) { var usersEntities = userService.GetUsers(page, number, orderCriteria); - return usersEntities.Select(e => e).ToList(); + return usersEntities.Select(e => e.FromEntityToDto()).ToList(); } - public UserEntity GetUserById(int id) => userService.GetUserById(id); + public UserDto GetUserById(int id) => userService.GetUserById(id).FromEntityToDto(); - public UserEntity GetUserByUsername(string username) => userService.GetUserByUsername(username); + public UserDto GetUserByUsername(string username) => userService.GetUserByUsername(username).FromEntityToDto(); public bool DeleteUser(int id) => userService.DeleteUser(id); - public UserEntity UpdateUser(int id, UserEntity user) => - userService.UpdateUser(id, user); + public UserDto UpdateUser(int id, UserDto user) => + userService.UpdateUser(id, user.FromDtoToEntity()).FromEntityToDto(); - public UserEntity CreateUser(string username, string password, string email, bool isAdmin) => - userService.CreateUser(username, password, email, isAdmin); + public UserDto CreateUser(string username, string password, string email, bool isAdmin) => + userService.CreateUser(username, password, email, isAdmin).FromEntityToDto(); } \ No newline at end of file diff --git a/API_SQLuedo/API/WebAPIDbContext.cs b/API_SQLuedo/API/WebAPIDbContext.cs index afc8996..9a060e7 100644 --- a/API_SQLuedo/API/WebAPIDbContext.cs +++ b/API_SQLuedo/API/WebAPIDbContext.cs @@ -6,6 +6,8 @@ namespace API { public class WebAPIDbContext : IdentityDbContext { - public WebAPIDbContext(DbContextOptions options) : base(options) { } + public WebAPIDbContext(DbContextOptions options) : base(options) + { + } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/DbContextLib/UserDbContext.cs b/API_SQLuedo/DbContextLib/UserDbContext.cs index 0bcf02a..b4de5c2 100644 --- a/API_SQLuedo/DbContextLib/UserDbContext.cs +++ b/API_SQLuedo/DbContextLib/UserDbContext.cs @@ -12,28 +12,34 @@ namespace DbContextLib public DbSet Inquiries { get; set; } public DbSet InquiryTables { get; set; } public DbSet Lessons { get; set; } - public DbSet ContentLessons { get; set; } public DbSet Paragraphs { get; set; } public DbSet Solutions { get; set; } public DbSet Successes { get; set; } public DbSet Notepads { get; set; } - public UserDbContext(DbContextOptions options) : base(options) { } + + public UserDbContext(DbContextOptions options) : base(options) + { + } + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseNpgsql("Host=localhost;Database=SQLuedo;Username=admin;Password=motdepasse"); } + base.OnConfiguring(optionsBuilder); } - protected override void OnModelCreating(ModelBuilder modelBuilder) + protected override void OnModelCreating(ModelBuilder builder) { - modelBuilder.Entity().HasKey(c => c.LessonId); - modelBuilder.Entity().HasKey(s => s.UserId); - modelBuilder.Entity().HasKey(s => s.InquiryId); - modelBuilder.Entity().HasKey(s => s.Id); - base.OnModelCreating(modelBuilder); + // Permet d'avoir les champs de la classe mère dans les classes filles et de ne pas avoir de table pour la classe mère + builder.Entity().UseTpcMappingStrategy(); + + builder.Entity().HasKey(s => s.UserId); + builder.Entity().HasKey(s => s.InquiryId); + builder.Entity().HasKey(s => s.Id); + base.OnModelCreating(builder); } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/DbDataManager.csproj b/API_SQLuedo/DbDataManager/DbDataManager.csproj index 42ff6a0..54b34de 100644 --- a/API_SQLuedo/DbDataManager/DbDataManager.csproj +++ b/API_SQLuedo/DbDataManager/DbDataManager.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - ModelToEntities + DbDataManager diff --git a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs index 2f9b580..b3b263a 100644 --- a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs @@ -8,7 +8,7 @@ namespace DbDataManager.Service; public class InquiryDataService : IInquiryService { - private UserDbContext DbContext { get; } + private UserDbContext DbContext { get; set; } public InquiryDataService(UserDbContext context) { @@ -16,9 +16,33 @@ public class InquiryDataService : IInquiryService context.Database.EnsureCreated(); } + public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) + { + IQueryable query = DbContext.Inquiries.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case InquiryOrderCriteria.None: + break; + case InquiryOrderCriteria.ByTitle: + query = query.OrderBy(s => s.Title); + break; + case InquiryOrderCriteria.ByDescription: + query = query.OrderBy(s => s.Description); + break; + case InquiryOrderCriteria.ByIsUser: + query = query.OrderBy(s => s.IsUser); + break; + default: + break; + } + + var inquiries = query.ToList(); + return inquiries; + } + public InquiryEntity GetInquiryById(int id) { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); + var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Id == id); if (inquiryEntity == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); @@ -29,7 +53,7 @@ public class InquiryDataService : IInquiryService public InquiryEntity GetInquiryByTitle(string title) { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Title == title); + var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Title == title); if (inquiryEntity == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(title)); @@ -38,10 +62,17 @@ public class InquiryDataService : IInquiryService return inquiryEntity; } - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) + public InquiryEntity CreateInquiry(string title, string description, bool isUser) { - return DbContext.Inquiries.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + var newInquiryEntity = new InquiryEntity + { + Title = title, + Description = description, + IsUser = isUser + }; + DbContext.Inquiries.Add(newInquiryEntity); + DbContext.SaveChangesAsync(); + return newInquiryEntity; } public bool DeleteInquiry(int id) @@ -65,25 +96,13 @@ public class InquiryDataService : IInquiryService throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); } - updatingInquiry.Title = inquiry.Title; - updatingInquiry.Description = inquiry.Description; - updatingInquiry.IsUser = inquiry.IsUser; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingInquiry).State = EntityState.Modified; - DbContext.SaveChangesAsync(); - return updatingInquiry; - } - - public InquiryEntity CreateInquiry(string title, string description, bool isUser) - { - var newInquiryEntity = new InquiryEntity() + foreach (var pptt in typeof(InquiryEntity).GetProperties() + .Where(p => p.CanWrite && p.Name != nameof(InquiryEntity.Id))) { - Title = title, - Description = description, - IsUser = isUser, - }; - DbContext.Inquiries.Add(newInquiryEntity); + pptt.SetValue(updatingInquiry, pptt.GetValue(inquiry)); + } + DbContext.SaveChangesAsync(); - return newInquiryEntity; + return updatingInquiry; } } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs index 65ed957..7c15987 100644 --- a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs @@ -1,11 +1,11 @@ -using DbContextLib; -using Entities; -using Microsoft.EntityFrameworkCore; -using Model.OrderCriteria; -using Shared; - -namespace DbDataManager.Service; - +using DbContextLib; +using Entities; +using Microsoft.EntityFrameworkCore; +using Model.OrderCriteria; +using Shared; + +namespace DbDataManager.Service; + public class LessonDataService : ILessonService { private UserDbContext DbContext { get; set; } @@ -16,6 +16,30 @@ public class LessonDataService : ILessonService context.Database.EnsureCreated(); } + public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) + { + IQueryable query = DbContext.Lessons.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case LessonOrderCriteria.None: + break; + case LessonOrderCriteria.ByTitle: + query = query.OrderBy(s => s.Title); + break; + case LessonOrderCriteria.ByLastPublisher: + query = query.OrderBy(s => s.LastPublisher); + break; + case LessonOrderCriteria.ByLastEdit: + query = query.OrderBy(s => s.LastEdit); + break; + default: + break; + } + + var lessons = query.ToList(); + return lessons; + } + public LessonEntity GetLessonById(int id) { var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id); @@ -38,15 +62,9 @@ public class LessonDataService : ILessonService return lessonEntity; } - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) - { - return DbContext.Lessons.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); - } - public bool DeleteLesson(int id) { - var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id); + var lessonEntity = DbContext.Lessons.FirstOrDefault(l => l.Id == id); if (lessonEntity == null) { return false; @@ -59,22 +77,23 @@ public class LessonDataService : ILessonService public LessonEntity UpdateLesson(int id, LessonEntity lesson) { - var updatingLesson = DbContext.Lessons.FirstOrDefault(u => u.Id == id); + var updatingLesson = DbContext.Lessons.FirstOrDefault(l => l.Id == id); if (updatingLesson == null) { throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); } - updatingLesson.Title = lesson.Title; - updatingLesson.LastPublisher = lesson.LastPublisher; - updatingLesson.LastEdit = lesson.LastEdit; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingLesson).State = EntityState.Modified; + foreach (var pptt in typeof(LessonEntity).GetProperties() + .Where(p => p.CanWrite && p.Name != nameof(LessonEntity.Id))) + { + pptt.SetValue(updatingLesson, pptt.GetValue(lesson)); + } + DbContext.SaveChangesAsync(); return updatingLesson; } - public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) + public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly lastEdit) { var newLessonEntity = new LessonEntity() { diff --git a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs index d561261..ddf2d34 100644 --- a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs @@ -16,6 +16,36 @@ public class ParagraphDataService : IParagraphService context.Database.EnsureCreated(); } + public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) + { + IQueryable query = DbContext.Paragraphs.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case ParagraphOrderCriteria.None: + break; + case ParagraphOrderCriteria.ByTitle: + query = query.OrderBy(s => s.Title); + break; + case ParagraphOrderCriteria.ByContent: + query = query.OrderBy(s => s.Content); + break; + case ParagraphOrderCriteria.ByInfo: + query = query.OrderBy(s => s.Info); + break; + case ParagraphOrderCriteria.ByQuery: + query = query.OrderBy(s => s.Query); + break; + case ParagraphOrderCriteria.ByComment: + query = query.OrderBy(s => s.Comment); + break; + default: + break; + } + + var paragraphs = query.ToList(); + return paragraphs; + } + public ParagraphEntity GetParagraphById(int id) { var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); @@ -38,15 +68,9 @@ public class ParagraphDataService : IParagraphService return paragraphEntity; } - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) - { - return DbContext.Paragraphs.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); - } - public bool DeleteParagraph(int id) { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); + var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); if (paragraphEntity == null) { return false; @@ -59,25 +83,24 @@ public class ParagraphDataService : IParagraphService public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph) { - var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); + var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); if (updatingParagraph == null) { throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); } - updatingParagraph.Title = paragraph.Title; - updatingParagraph.Content = paragraph.Content; - updatingParagraph.Info = paragraph.Info; - updatingParagraph.Query = paragraph.Query; - updatingParagraph.Comment = paragraph.Comment; - updatingParagraph.LessonId = paragraph.LessonId; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingParagraph).State = EntityState.Modified; + foreach (var pptt in typeof(ParagraphEntity).GetProperties().Where(p => + p.CanWrite && p.Name != nameof(ParagraphEntity.Id) && p.Name != nameof(ParagraphEntity.LessonId))) + { + pptt.SetValue(updatingParagraph, pptt.GetValue(paragraph)); + } + DbContext.SaveChangesAsync(); return updatingParagraph; } - public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) + public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, + int lessonId) { var newParagraphEntity = new ParagraphEntity() { diff --git a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs index 4a079fa..a247a24 100644 --- a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs @@ -16,60 +16,77 @@ public class SuccessDataService : ISuccessService context.Database.EnsureCreated(); } - public SuccessEntity GetSuccessByUserId(int id) + public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (successEntity == null) + IQueryable query = DbContext.Successes.Skip((page - 1) * number).Take(number); + switch (orderCriteria) { - throw new ArgumentException("Impossible de trouver le succès avec l'user id", nameof(id)); + case SuccessOrderCriteria.None: + break; + case SuccessOrderCriteria.ByUserId: + query = query.OrderBy(s => s.UserId); + break; + case SuccessOrderCriteria.ByInquiryId: + query = query.OrderBy(s => s.InquiryId); + break; + case SuccessOrderCriteria.ByIsFinished: + query = query.OrderBy(s => s.IsFinished); + break; + default: + break; } - return successEntity; + var successes = query.ToList(); + return successes; } - public SuccessEntity GetSuccessByInquiryId(int id) + public IEnumerable GetSuccessesByUserId(int id) { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); - if (successEntity == null) + var successes = DbContext.Successes.Where(u => u.UserId == id); + if (successes == null) { - throw new ArgumentException("Impossible de trouver le succès avec l'inquiry id", nameof(id)); + throw new ArgumentException("Impossible de trouver le succès", nameof(id)); } - return successEntity; + return successes; } - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public IEnumerable GetSuccessesByInquiryId(int id) { - return DbContext.Successes.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + var successes = DbContext.Successes.Where(u => u.InquiryId == id); + if (successes == null) + { + throw new ArgumentException("Impossible de trouver le succès", nameof(id)); + } + + return successes; } - public bool DeleteSuccess(int id) + public bool DeleteSuccess(int idUser, int idInquiry) { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (userEntity == null) + var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry); + if (successEntity == null) { return false; } - - DbContext.Successes.Remove(userEntity); + 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 avec l'user id", nameof(id)); + throw new ArgumentException("Impossible de trouver le succès", nameof(idUser)); } - - updatingSuccess.UserId = success.UserId; - updatingSuccess.InquiryId = success.InquiryId; + /*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; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingSuccess).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingSuccess; } @@ -82,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/DbDataManager/Service/UserDataService.cs b/API_SQLuedo/DbDataManager/Service/UserDataService.cs index b4de650..3579427 100644 --- a/API_SQLuedo/DbDataManager/Service/UserDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/UserDataService.cs @@ -1,6 +1,5 @@ using DbContextLib; using Entities; -using Microsoft.EntityFrameworkCore; using Model.OrderCriteria; using Shared; @@ -8,7 +7,6 @@ namespace DbDataManager.Service; public class UserDataService : IUserService { - private UserDbContext DbContext { get; set; } public UserDataService(UserDbContext context) @@ -41,8 +39,29 @@ public class UserDataService : IUserService public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) { - return DbContext.Users.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + IQueryable query = DbContext.Users.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case UserOrderCriteria.None: + break; + case UserOrderCriteria.ById: + query = query.OrderBy(s => s.Id); + break; + case UserOrderCriteria.ByUsername: + query = query.OrderBy(s => s.Username); + break; + case UserOrderCriteria.ByEmail: + query = query.OrderBy(s => s.Email); + break; + case UserOrderCriteria.ByIsAdmin: + query = query.OrderBy(s => s.IsAdmin); + break; + default: + break; + } + + var users = query.ToList(); + return users; } public bool DeleteUser(int id) @@ -66,19 +85,19 @@ public class UserDataService : IUserService throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id)); } - updatingUser.Username = user.Username; - updatingUser.Password = user.Password; - updatingUser.Email = user.Email; - updatingUser.IsAdmin = user.IsAdmin; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingUser).State = EntityState.Modified; + foreach (var pptt in typeof(UserEntity).GetProperties() + .Where(p => p.CanWrite && p.Name != nameof(UserEntity.Id))) + { + pptt.SetValue(updatingUser, pptt.GetValue(user)); + } + DbContext.SaveChangesAsync(); - return updatingUser; + return updatingUser; } public UserEntity CreateUser(string username, string password, string email, bool isAdmin) { - var newUserEntity = new UserEntity() + var newUserEntity = new UserEntity { Username = username, Password = password, diff --git a/API_SQLuedo/Dto/BlackListDTO.cs b/API_SQLuedo/Dto/BlackListDTO.cs index 913aaa0..7b62f9d 100644 --- a/API_SQLuedo/Dto/BlackListDTO.cs +++ b/API_SQLuedo/Dto/BlackListDTO.cs @@ -1,11 +1,12 @@ namespace Dto; -public class BlackListDTO +public class BlackListDto { public string Email { get; set; } public DateOnly ExpirationDate { get; set; } - public BlackListDTO(string email, DateOnly expirationDate) + public BlackListDto() {} + public BlackListDto(string email, DateOnly expirationDate) { Email = email; ExpirationDate = expirationDate; diff --git a/API_SQLuedo/Dto/ContentLessonDTO.cs b/API_SQLuedo/Dto/ContentLessonDTO.cs index 357d634..98a9faf 100644 --- a/API_SQLuedo/Dto/ContentLessonDTO.cs +++ b/API_SQLuedo/Dto/ContentLessonDTO.cs @@ -1,13 +1,13 @@ namespace Dto; -public abstract class ContentLessonDTO +public abstract class ContentLessonDto { public int Id { get; set; } public string ContentContent { get; set; } public string ContentTitle { get; set; } public int LessonId { get; set; } - protected ContentLessonDTO(int id, string contentContent, string contentTitle, int lessonId) + protected ContentLessonDto(int id, string contentContent, string contentTitle, int lessonId) { Id = id; ContentContent = contentContent; @@ -15,14 +15,14 @@ public abstract class ContentLessonDTO LessonId = lessonId; } - protected ContentLessonDTO(string contentContent, string contentTitle, int lessonId) + protected ContentLessonDto(string contentContent, string contentTitle, int lessonId) { ContentContent = contentContent; ContentTitle = contentTitle; LessonId = lessonId; - } - - protected ContentLessonDTO() - { - } + } + + protected ContentLessonDto() + { + } } \ No newline at end of file diff --git a/API_SQLuedo/Dto/InquiryDTO.cs b/API_SQLuedo/Dto/InquiryDTO.cs index 5a436ed..1de1adf 100644 --- a/API_SQLuedo/Dto/InquiryDTO.cs +++ b/API_SQLuedo/Dto/InquiryDTO.cs @@ -1,8 +1,8 @@ namespace Dto; -public class InquiryDTO +public class InquiryDto : IEquatable { - public int Id { get;} + public int Id { get; } public string Title { get; set; } @@ -10,7 +10,8 @@ public class InquiryDTO public bool IsUser { get; set; } - public InquiryDTO(int id, string title, string description, bool isUser) + public InquiryDto(){} + public InquiryDto(int id, string title, string description, bool isUser) { Id = id; Title = title; @@ -18,10 +19,45 @@ public class InquiryDTO IsUser = isUser; } - public InquiryDTO(string title, string description, bool isUser) + public InquiryDto(string title, string description, bool isUser) { Title = title; Description = description; IsUser = isUser; } + + public override string ToString() + { + return $"{Id}\t{Title}\t{Description}\t{IsUser}"; + } + + public override bool Equals(object right) + { + if (object.ReferenceEquals(right, null)) + { + return false; + } + + if (object.ReferenceEquals(this, right)) + { + return true; + } + + if (this.GetType() != right.GetType()) + { + return false; + } + + return this.Equals(right as InquiryDto); + } + + public bool Equals(InquiryDto other) + { + return (this.Id == other.Id); + } + + public override int GetHashCode() + { + return Id; + } } \ No newline at end of file diff --git a/API_SQLuedo/Dto/InquiryTableDTO.cs b/API_SQLuedo/Dto/InquiryTableDTO.cs index a636053..730b933 100644 --- a/API_SQLuedo/Dto/InquiryTableDTO.cs +++ b/API_SQLuedo/Dto/InquiryTableDTO.cs @@ -1,15 +1,16 @@ namespace Dto; -public class InquiryTableDTO +public class InquiryTableDto { - public int OwnerId { get; set; } public string DatabaseName { get; set; } public string ConnectionInfo { get; set; } - public InquiryTableDTO() { } + public InquiryTableDto() + { + } - public InquiryTableDTO(int ownerId, string databaseName, string connectionInfo) + public InquiryTableDto(int ownerId, string databaseName, string connectionInfo) { OwnerId = ownerId; DatabaseName = databaseName; diff --git a/API_SQLuedo/Dto/LessonDTO.cs b/API_SQLuedo/Dto/LessonDTO.cs index 8e70b4f..3a7dec5 100644 --- a/API_SQLuedo/Dto/LessonDTO.cs +++ b/API_SQLuedo/Dto/LessonDTO.cs @@ -1,15 +1,18 @@ namespace Dto; -public class LessonDTO +public class LessonDto : IEquatable { public int Id { get; } - public string? Title { get; set; } - public string? LastPublisher { get; set; } - public DateOnly? LastEdit { get; set; } - public ICollection Content { get; set; } = new List(); + public string Title { get; set; } + public string LastPublisher { get; set; } + public DateOnly LastEdit { get; set; } + public ICollection Content { get; set; } = new List(); - public LessonDTO() { } - public LessonDTO(int id, string title, string lastPublisher, DateOnly? lastEdit) + public LessonDto() + { + } + + public LessonDto(int id, string title, string lastPublisher, DateOnly lastEdit) { Id = id; Title = title; @@ -17,10 +20,44 @@ public class LessonDTO LastEdit = lastEdit; } - public LessonDTO(string title, string lastPublisher, DateOnly? lastEdit) + public LessonDto(string title, string lastPublisher, DateOnly lastEdit) { Title = title; LastPublisher = lastPublisher; LastEdit = lastEdit; } + + public override string ToString() + { + return $"{Id}\t{Title}\t{LastPublisher}\t{LastEdit}"; + } + + public override bool Equals(object right) + { + if (object.ReferenceEquals(right, null)) + { + return false; + } + + if (object.ReferenceEquals(this, right)) + { + return true; + } + + if (this.GetType() != right.GetType()) + { + return false; + } + + return this.Equals(right as LessonDto); + } + public bool Equals(LessonDto other) + { + return (this.Id == other.Id); + } + + public override int GetHashCode() + { + return Id; + } } \ No newline at end of file diff --git a/API_SQLuedo/Dto/NotepadDTO.cs b/API_SQLuedo/Dto/NotepadDTO.cs index c49e155..1b143b1 100644 --- a/API_SQLuedo/Dto/NotepadDTO.cs +++ b/API_SQLuedo/Dto/NotepadDTO.cs @@ -1,22 +1,25 @@ namespace Dto; -public class NotepadDTO +public class NotepadDto { public int Id { get; set; } public int UserId { get; set; } public int InquiryId { get; set; } public string Notes { get; set; } - public NotepadDTO() { } + public NotepadDto() + { + } - public NotepadDTO(int id, int userId, int inquiryId, string notes) + public NotepadDto(int id, int userId, int inquiryId, string notes) { Id = id; UserId = userId; InquiryId = inquiryId; Notes = notes; } - public NotepadDTO(int userId, int inquiryId, string notes) + + public NotepadDto(int userId, int inquiryId, string notes) { UserId = userId; InquiryId = inquiryId; diff --git a/API_SQLuedo/Dto/ParagraphDTO.cs b/API_SQLuedo/Dto/ParagraphDTO.cs index f6925dd..847ffa2 100644 --- a/API_SQLuedo/Dto/ParagraphDTO.cs +++ b/API_SQLuedo/Dto/ParagraphDTO.cs @@ -1,6 +1,6 @@ namespace Dto; -public class ParagraphDTO : ContentLessonDTO +public class ParagraphDto : ContentLessonDto, IEquatable { public string Title { get; set; } public string Content { get; set; } @@ -8,7 +8,7 @@ public class ParagraphDTO : ContentLessonDTO public string Query { get; set; } public string Comment { get; set; } - public ParagraphDTO(string title, string content, string info, string query, string comment, int lessonId) : + public ParagraphDto(string title, string content, string info, string query, string comment, int lessonId) : base(content, title, lessonId) { @@ -19,7 +19,7 @@ public class ParagraphDTO : ContentLessonDTO Comment = comment; } - public ParagraphDTO(int id, string title, string content, string info, string query, string comment, int lessonId) : + public ParagraphDto(int id, string title, string content, string info, string query, string comment, int lessonId) : base(id, content, title, lessonId) { @@ -29,9 +29,43 @@ public class ParagraphDTO : ContentLessonDTO Info = info; Query = query; Comment = comment; - } - - public ParagraphDTO() : base() - { - } + } + + public ParagraphDto() : base() + { + } + + public override string ToString() + { + return $"{Id}\t{Title}\t{Content}\t{Info}\t{Query}\t{Comment}"; + } + + public override bool Equals(object right) + { + if (object.ReferenceEquals(right, null)) + { + return false; + } + + if (object.ReferenceEquals(this, right)) + { + return true; + } + + if (this.GetType() != right.GetType()) + { + return false; + } + + return this.Equals(right as ParagraphDto); + } + public bool Equals(ParagraphDto other) + { + return (this.Id == other.Id); + } + + public override int GetHashCode() + { + return Id; + } } \ No newline at end of file diff --git a/API_SQLuedo/Dto/SolutionDTO.cs b/API_SQLuedo/Dto/SolutionDTO.cs index b13daf6..951a0e7 100644 --- a/API_SQLuedo/Dto/SolutionDTO.cs +++ b/API_SQLuedo/Dto/SolutionDTO.cs @@ -1,6 +1,6 @@ namespace Dto; -public class SolutionDTO +public class SolutionDto { public int OwnerId { get; set; } public string MurdererFirstName { get; set; } @@ -8,8 +8,13 @@ public class SolutionDTO public string MurderPlace { get; set; } public string MurderWeapon { get; set; } public string Explanation { get; set; } - public SolutionDTO() { } - public SolutionDTO(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public SolutionDto() + { + } + + public SolutionDto(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, + string murderWeapon, string explanation) { OwnerId = ownerId; MurdererFirstName = murdererFirstName; @@ -18,7 +23,9 @@ public class SolutionDTO MurderWeapon = murderWeapon; Explanation = explanation; } - public SolutionDTO(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public SolutionDto(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, + string explanation) { MurdererFirstName = murdererFirstName; MurdererLastName = murdererLastName; diff --git a/API_SQLuedo/Dto/SuccessDTO.cs b/API_SQLuedo/Dto/SuccessDTO.cs index 87c26a3..3608e1e 100644 --- a/API_SQLuedo/Dto/SuccessDTO.cs +++ b/API_SQLuedo/Dto/SuccessDTO.cs @@ -1,17 +1,53 @@ namespace Dto; -public class SuccessDTO +public class SuccessDto : IEquatable { public int UserId { get; set; } public int InquiryId { get; set; } public bool IsFinished { get; set; } - public SuccessDTO() { } + public SuccessDto() + { + } - public SuccessDTO(int userId, int inquiryId, bool isFinished) + public SuccessDto(int userId, int inquiryId, bool isFinished) { UserId = userId; InquiryId = inquiryId; IsFinished = isFinished; } + + public override string ToString() + { + return $"User :{UserId}\t Enquête : {InquiryId}\t{IsFinished}"; + } + + public override bool Equals(object right) + { + if (object.ReferenceEquals(right, null)) + { + return false; + } + + if (object.ReferenceEquals(this, right)) + { + return true; + } + + if (this.GetType() != right.GetType()) + { + return false; + } + + return this.Equals(right as SuccessDto); + } + public bool Equals(SuccessDto other) + { + return (this.UserId == other.UserId && this.InquiryId == other.InquiryId); + } + + public override int GetHashCode() + { + return UserId * InquiryId; + } } \ No newline at end of file diff --git a/API_SQLuedo/Dto/UserDTO.cs b/API_SQLuedo/Dto/UserDTO.cs index b2553f5..09df9e4 100644 --- a/API_SQLuedo/Dto/UserDTO.cs +++ b/API_SQLuedo/Dto/UserDTO.cs @@ -1,15 +1,18 @@ -namespace Dto; - -public class UserDTO +namespace Dto { - public int Id { get; set; } - public string Username { get; set; } - public string Password { get; set; } - public string Email { get; set; } - public bool IsAdmin { get; set; } - - public UserDTO() { } - public UserDTO(int id, string username, string password, string email, bool isAdmin) + public class UserDto : IEquatable + { + public int Id { get; set; } + public string Username { get; set; } + public string Password { get; set; } + public string Email { get; set; } + public bool IsAdmin { get; set; } + + public UserDto() + { + } + + public UserDto(int id, string username, string password, string email, bool isAdmin) { Id = id; Username = username; @@ -18,7 +21,7 @@ public class UserDTO IsAdmin = isAdmin; } - public UserDTO(string username, string password, string email, bool isAdmin) + public UserDto(string username, string password, string email, bool isAdmin) { Username = username; Password = password; @@ -26,8 +29,38 @@ public class UserDTO IsAdmin = isAdmin; } - public override string ToString() - { - return $"{Id}\t{Username}\t{Email}\t{IsAdmin}"; + public override string ToString() + { + return $"{Id}\t{Username}\t{Email}\t{IsAdmin}"; + } + + public override bool Equals(object right) + { + if (object.ReferenceEquals(right, null)) + { + return false; + } + + if (object.ReferenceEquals(this, right)) + { + return true; + } + + if (this.GetType() != right.GetType()) + { + return false; + } + + return this.Equals(right as UserDto); + } + public bool Equals(UserDto other) + { + return (this.Id == other.Id); + } + + public override int GetHashCode() + { + return Id; + } } -} \ No newline at end of file +} diff --git a/API_SQLuedo/EntityFramework/BlackListEntity.cs b/API_SQLuedo/EntityFramework/BlackListEntity.cs index 800aeff..34c39bb 100644 --- a/API_SQLuedo/EntityFramework/BlackListEntity.cs +++ b/API_SQLuedo/EntityFramework/BlackListEntity.cs @@ -6,7 +6,6 @@ namespace Entities; [Table("BlackList")] public class BlackListEntity { - [Key] - public string Email { get; set; } + [Key] public string Email { get; set; } public DateOnly ExpirationDate { get; set; } } \ No newline at end of file diff --git a/API_SQLuedo/EntityFramework/ContentLessonEntity.cs b/API_SQLuedo/EntityFramework/ContentLessonEntity.cs index 7717d35..ff32042 100644 --- a/API_SQLuedo/EntityFramework/ContentLessonEntity.cs +++ b/API_SQLuedo/EntityFramework/ContentLessonEntity.cs @@ -2,7 +2,6 @@ namespace Entities; -[Table("ContentLesson")] public abstract class ContentLessonEntity { public int Id { get; set; } diff --git a/API_SQLuedo/EntityFramework/LessonEntity.cs b/API_SQLuedo/EntityFramework/LessonEntity.cs index bf6e499..67caea2 100644 --- a/API_SQLuedo/EntityFramework/LessonEntity.cs +++ b/API_SQLuedo/EntityFramework/LessonEntity.cs @@ -8,6 +8,6 @@ public class LessonEntity public int Id { get; set; } public string Title { get; set; } public string LastPublisher { get; set; } - public DateOnly? LastEdit { get; set; } + public DateOnly LastEdit { get; set; } public ICollection Content { get; set; } = new List(); } \ No newline at end of file diff --git a/API_SQLuedo/EntityFramework/SolutionEntity.cs b/API_SQLuedo/EntityFramework/SolutionEntity.cs index d1a068d..2a933a5 100644 --- a/API_SQLuedo/EntityFramework/SolutionEntity.cs +++ b/API_SQLuedo/EntityFramework/SolutionEntity.cs @@ -11,15 +11,11 @@ public class SolutionEntity [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Required] public int OwnerId { get; set; } + public InquiryEntity? Owner { get; set; } public string MurdererFirstName { get; set; } public string MurdererLastName { get; set; } public string MurderPlace { get; set; } public string MurderWeapon { get; set; } public string Explaination { get; set; } - public SolutionEntity() { } - public SolutionEntity(int ownerId) - { - OwnerId = ownerId; - } } \ No newline at end of file diff --git a/API_SQLuedo/EntityFramework/SuccessEntity.cs b/API_SQLuedo/EntityFramework/SuccessEntity.cs index c69b742..7ee9258 100644 --- a/API_SQLuedo/EntityFramework/SuccessEntity.cs +++ b/API_SQLuedo/EntityFramework/SuccessEntity.cs @@ -5,12 +5,10 @@ namespace Entities; [Table("Success")] public class SuccessEntity { - [ForeignKey(nameof(User))] - public int UserId { get; set; } + [ForeignKey(nameof(User))] public int UserId { get; set; } public UserEntity User { get; set; } - [ForeignKey(nameof(Inquiry))] - public int InquiryId { get; set; } + [ForeignKey(nameof(Inquiry))] public int InquiryId { get; set; } public InquiryEntity Inquiry { get; set; } public bool IsFinished { get; set; } } \ No newline at end of file diff --git a/API_SQLuedo/Model/Inquiry.cs b/API_SQLuedo/Model/Inquiry.cs index d2a805f..464d7df 100644 --- a/API_SQLuedo/Model/Inquiry.cs +++ b/API_SQLuedo/Model/Inquiry.cs @@ -7,7 +7,9 @@ public class Inquiry public string Description { get; set; } public bool IsUser { get; set; } - public Inquiry() { } + public Inquiry() + { + } public Inquiry(int id, string title, string description, bool isUser) { diff --git a/API_SQLuedo/Model/InquiryTable.cs b/API_SQLuedo/Model/InquiryTable.cs index 060702a..ecca3f4 100644 --- a/API_SQLuedo/Model/InquiryTable.cs +++ b/API_SQLuedo/Model/InquiryTable.cs @@ -6,12 +6,14 @@ public class InquiryTable public string DatabaseName { get; set; } public string ConnectionInfo { get; set; } - public InquiryTable() { } + public InquiryTable() + { + } + public InquiryTable(int inquiryId, string databaseName, string connectionInfo) { OwnerId = inquiryId; DatabaseName = databaseName; ConnectionInfo = connectionInfo; } - } \ No newline at end of file diff --git a/API_SQLuedo/Model/Lesson.cs b/API_SQLuedo/Model/Lesson.cs index b9222d6..d8cdb85 100644 --- a/API_SQLuedo/Model/Lesson.cs +++ b/API_SQLuedo/Model/Lesson.cs @@ -3,12 +3,12 @@ public class Lesson { public int Id { get; } - public string? Title { get; set; } - public string? LastPublisher { get; set; } - public DateOnly? LastEdit { get; set; } + public string Title { get; set; } + public string LastPublisher { get; set; } + public DateOnly LastEdit { get; set; } public ICollection Content { get; set; } = new List(); - public Lesson(int id, string title, string lastPublisher, DateOnly? lastEdit) + public Lesson(int id, string title, string lastPublisher, DateOnly lastEdit) { Id = id; Title = title; @@ -16,7 +16,7 @@ public class Lesson LastEdit = lastEdit; } - public Lesson(string title, string lastPublisher, DateOnly? lastEdit) + public Lesson(string title, string lastPublisher, DateOnly lastEdit) { Title = title; LastPublisher = lastPublisher; diff --git a/API_SQLuedo/Model/Notepad.cs b/API_SQLuedo/Model/Notepad.cs index ce91168..989990d 100644 --- a/API_SQLuedo/Model/Notepad.cs +++ b/API_SQLuedo/Model/Notepad.cs @@ -7,7 +7,9 @@ public class Notepad public int InquiryId { get; set; } public string Notes { get; set; } - public Notepad() { } + public Notepad() + { + } public Notepad(int id, int userId, int inquiryId, string notes) { @@ -16,7 +18,8 @@ public class Notepad InquiryId = inquiryId; Notes = notes; } - public Notepad(int userId, int inquiryId, string notes) + + public Notepad(int userId, int inquiryId, string notes) { UserId = userId; InquiryId = inquiryId; diff --git a/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs index bc40b5d..f800b0e 100644 --- a/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs @@ -2,5 +2,8 @@ namespace Model.OrderCriteria; public enum InquiryOrderCriteria { - None, ByTitle, ByDescription, ByIsUser + None, + ByTitle, + ByDescription, + ByIsUser } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs index 004879c..db06097 100644 --- a/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs @@ -2,5 +2,8 @@ namespace Model.OrderCriteria; public enum LessonOrderCriteria { - None, ByTitle, ByLastPublisher, ByLastEdit + None, + ByTitle, + ByLastPublisher, + ByLastEdit } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs index bd9cc93..5cdf11d 100644 --- a/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs @@ -2,5 +2,10 @@ namespace Model.OrderCriteria; public enum ParagraphOrderCriteria { - None, ByTitle, ByContent, ByInfo, ByQuery, ByComment + None, + ByTitle, + ByContent, + ByInfo, + ByQuery, + ByComment } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs index a2c8d76..34c8b46 100644 --- a/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs @@ -2,5 +2,8 @@ namespace Model.OrderCriteria; public enum SuccessOrderCriteria { - None, ByUserId, ByInquiryId, ByIsFinished + None, + ByUserId, + ByInquiryId, + ByIsFinished } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs index 42ab10c..c5b35b9 100644 --- a/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs @@ -2,5 +2,9 @@ namespace Model.OrderCriteria; public enum UserOrderCriteria { - None, ById, ByUsername, ByEmail, ByIsAdmin + None, + ById, + ByUsername, + ByEmail, + ByIsAdmin } \ No newline at end of file diff --git a/API_SQLuedo/Model/Solution.cs b/API_SQLuedo/Model/Solution.cs index bee801b..8d167f8 100644 --- a/API_SQLuedo/Model/Solution.cs +++ b/API_SQLuedo/Model/Solution.cs @@ -8,8 +8,13 @@ public class Solution public string MurderPlace { get; set; } public string MurderWeapon { get; set; } public string Explanation { get; set; } - public Solution() { } - public Solution(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public Solution() + { + } + + public Solution(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, + string murderWeapon, string explanation) { OwnerId = ownerId; MurdererFirstName = murdererFirstName; @@ -18,7 +23,9 @@ public class Solution MurderWeapon = murderWeapon; Explanation = explanation; } - public Solution(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public Solution(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, + string explanation) { MurdererFirstName = murdererFirstName; MurdererLastName = murdererLastName; diff --git a/API_SQLuedo/Model/Success.cs b/API_SQLuedo/Model/Success.cs index 1301b0f..4d4cc09 100644 --- a/API_SQLuedo/Model/Success.cs +++ b/API_SQLuedo/Model/Success.cs @@ -6,7 +6,9 @@ public class Success public int InquiryId { get; set; } public bool IsFinished { get; set; } - public Success() { } + public Success() + { + } public Success(int userId, int inquiryId, bool isFinished) { diff --git a/API_SQLuedo/Model/User.cs b/API_SQLuedo/Model/User.cs index 8031378..88dff7f 100644 --- a/API_SQLuedo/Model/User.cs +++ b/API_SQLuedo/Model/User.cs @@ -8,7 +8,10 @@ public class User public string Email { get; set; } public bool IsAdmin { get; set; } - public User() { } + public User() + { + } + public User(int id, string username, string password, string email, bool isAdmin) { Id = id; diff --git a/API_SQLuedo/Shared/IInquiryDataService.cs b/API_SQLuedo/Shared/IInquiryDataService.cs deleted file mode 100644 index 79085f6..0000000 --- a/API_SQLuedo/Shared/IInquiryDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface IInquiryDataService : IInquiryService -{ - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria); - public InquiryDTO GetInquiryById(int id); - public InquiryDTO GetInquiryByTitle(string title); - public bool DeleteInquiry(int id); - public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry); - public InquiryDTO CreateInquiry(string title, string description, bool isUser); -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/ILessonDataService.cs b/API_SQLuedo/Shared/ILessonDataService.cs deleted file mode 100644 index eb16c98..0000000 --- a/API_SQLuedo/Shared/ILessonDataService.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface ILessonDataService : ILessonService -{ - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria); - public LessonDTO GetLessonById(int id); - public LessonDTO GetLessonByTitle(string title); - public bool DeleteLesson(int id); - public LessonDTO UpdateLesson(int id, LessonDTO lesson); - public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit); - -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/ILessonService.cs b/API_SQLuedo/Shared/ILessonService.cs index b0a1666..92f2683 100644 --- a/API_SQLuedo/Shared/ILessonService.cs +++ b/API_SQLuedo/Shared/ILessonService.cs @@ -9,5 +9,5 @@ public interface ILessonService public TLesson GetLessonByTitle(string title); public bool DeleteLesson(int id); public TLesson UpdateLesson(int id, TLesson lesson); - public TLesson CreateLesson(string title, string lastPublisher, DateOnly? lastEdit); + public TLesson CreateLesson(string title, string lastPublisher, DateOnly lastEdit); } \ No newline at end of file diff --git a/API_SQLuedo/Shared/IParagraphDataService.cs b/API_SQLuedo/Shared/IParagraphDataService.cs deleted file mode 100644 index 1919860..0000000 --- a/API_SQLuedo/Shared/IParagraphDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface IParagraphDataService : IParagraphService -{ - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria); - public ParagraphDTO GetParagraphById(int id); - public ParagraphDTO GetParagraphByTitle(string title); - public bool DeleteParagraph(int id); - public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraph); - public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId); -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/IParagraphService.cs b/API_SQLuedo/Shared/IParagraphService.cs index 7b59ede..aa2fe7a 100644 --- a/API_SQLuedo/Shared/IParagraphService.cs +++ b/API_SQLuedo/Shared/IParagraphService.cs @@ -9,6 +9,8 @@ namespace Shared public TParagraph GetParagraphByTitle(string title); public bool DeleteParagraph(int id); public TParagraph UpdateParagraph(int id, TParagraph paragraph); - public TParagraph CreateParagraph(string title, string content, string info, string query, string comment, int lessonId); + + public TParagraph CreateParagraph(string title, string content, string info, string query, string comment, + int lessonId); } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/ISuccessDataService.cs b/API_SQLuedo/Shared/ISuccessDataService.cs deleted file mode 100644 index 701024d..0000000 --- a/API_SQLuedo/Shared/ISuccessDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface ISuccessDataService : ISuccessService -{ - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria); - public SuccessDTO GetSuccessByUserId(int id); - public SuccessDTO GetSuccessByInquiryId(int id); - public bool DeleteSuccess(int id); - public SuccessDTO UpdateSuccess(int id, SuccessDTO success); - public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished); -} \ 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/Shared/IUserDataService.cs b/API_SQLuedo/Shared/IUserDataService.cs deleted file mode 100644 index 1e615a6..0000000 --- a/API_SQLuedo/Shared/IUserDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface IUserDataService : IUserService -{ - public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria); - public UserDTO GetUserById(int id); - public UserDTO GetUserByUsername(string username); - public bool DeleteUser(int id); - public UserDTO UpdateUser(int id, UserDTO user); - public UserDTO CreateUser(string username, string password, string email, bool isAdmin); -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/InquiryDataService.cs b/API_SQLuedo/Shared/InquiryDataService.cs deleted file mode 100644 index 7c04024..0000000 --- a/API_SQLuedo/Shared/InquiryDataService.cs +++ /dev/null @@ -1,101 +0,0 @@ -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using Model.OrderCriteria; -using DbContextLib; -using Shared.Mapper; - -namespace Shared; - -public class InquiryDataService : IInquiryDataService -{ - private UserDbContext DbContext { get; set; } - - public InquiryDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Inquiries.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case InquiryOrderCriteria.None: - break; - case InquiryOrderCriteria.ByTitle: - query = query.OrderBy(s => s.Title); - break; - case InquiryOrderCriteria.ByDescription: - query = query.OrderBy(s => s.Description); - break; - case InquiryOrderCriteria.ByIsUser: - query = query.OrderBy(s => s.IsUser); - break; - default: - break; - } - - var inquiries = query.ToList(); - return inquiries.Select(s => s.FromEntityToDto()); - } - - public InquiryDTO GetInquiryById(int id) - { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Id == id); - if (inquiryEntity == null) - { - throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); - } - - return inquiryEntity.FromEntityToDto(); - } - - public InquiryDTO GetInquiryByTitle(string title) - { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Title == title); - if (inquiryEntity == null) - { - throw new ArgumentException("Impossible de trouver l'enquête", nameof(title)); - } - - return inquiryEntity.FromEntityToDto(); - } - - public InquiryDTO CreateInquiry(string title, string description, bool isUser) - { - var newInquiryEntity = new InquiryDTO(title, description, isUser); - DbContext.Inquiries.Add(newInquiryEntity.FromDtoToEntity()); - DbContext.SaveChangesAsync(); - return newInquiryEntity; - } - - public bool DeleteInquiry(int id) - { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); - if (inquiryEntity == null) - { - return false; - } - - DbContext.Inquiries.Remove(inquiryEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry) - { - var updatingInquiry = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); - if (updatingInquiry == null) - { - throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); - } - - updatingInquiry.Title = inquiry.Title; - updatingInquiry.Description = inquiry.Description; - updatingInquiry.IsUser = inquiry.IsUser; - DbContext.SaveChangesAsync(); - return updatingInquiry.FromEntityToDto(); - } -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/LessonDataService.cs b/API_SQLuedo/Shared/LessonDataService.cs deleted file mode 100644 index da7713c..0000000 --- a/API_SQLuedo/Shared/LessonDataService.cs +++ /dev/null @@ -1,103 +0,0 @@ -using DbContextLib; -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using Model.OrderCriteria; -using Shared.Mapper; - -namespace Shared; - -public class LessonDataService : ILessonDataService -{ - private UserDbContext DbContext { get; set; } - public LessonDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Lessons.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case LessonOrderCriteria.None: - break; - case LessonOrderCriteria.ByTitle: - query = query.OrderBy(s => s.Title); - break; - case LessonOrderCriteria.ByLastPublisher: - query = query.OrderBy(s => s.LastPublisher); - break; - case LessonOrderCriteria.ByLastEdit: - query = query.OrderBy(s => s.LastEdit); - break; - default: - break; - } - var lessons = query.ToList(); - return lessons.Select(s => s.FromEntityToDto()); - } - - public LessonDTO GetLessonById(int id) - { - var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id); - if (lessonEntity == null) - { - throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); - } - - return lessonEntity.FromEntityToDto(); - } - - public LessonDTO GetLessonByTitle(string title) - { - var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Title == title); - if (lessonEntity == null) - { - throw new ArgumentException("Impossible de trouver la leçon", nameof(title)); - } - - return lessonEntity.FromEntityToDto(); - } - - public bool DeleteLesson(int id) - { - var lessonEntity = DbContext.Lessons.FirstOrDefault(l => l.Id == id); - if (lessonEntity == null) - { - return false; - } - - DbContext.Lessons.Remove(lessonEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public LessonDTO UpdateLesson(int id, LessonDTO lesson) - { - var updatingLesson = DbContext.Lessons.FirstOrDefault(l => l.Id == id); - if (updatingLesson == null) - { - throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); - } - - updatingLesson.Title = lesson.Title; - updatingLesson.LastPublisher = lesson.LastPublisher; - updatingLesson.LastEdit = lesson.LastEdit; - DbContext.SaveChangesAsync(); - return updatingLesson.FromEntityToDto(); - } - - public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) - { - var newLessonEntity = new LessonDTO() - { - Title = title, - LastPublisher = lastPublisher, - LastEdit = lastEdit, - }; - DbContext.Lessons.Add(newLessonEntity.FromDtoToEntity()); - DbContext.SaveChangesAsync(); - return newLessonEntity; - } -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/Mapper/BlackListMapper.cs b/API_SQLuedo/Shared/Mapper/BlackListMapper.cs index 8dc6ea4..3e8924f 100644 --- a/API_SQLuedo/Shared/Mapper/BlackListMapper.cs +++ b/API_SQLuedo/Shared/Mapper/BlackListMapper.cs @@ -6,17 +6,17 @@ namespace Shared.Mapper; public static class BlackListMapper { - public static BlackListDTO FromModelToDTO(this BlackList model) + public static BlackListDto FromModelToDto(this BlackList model) { - return new BlackListDTO(model.Email, model.ExpirationDate); + return new BlackListDto(model.Email, model.ExpirationDate); } - public static BlackListDTO FromEntityToDTO(this BlackListEntity ent) + public static BlackListDto FromEntityToDto(this BlackListEntity ent) { - return new BlackListDTO(ent.Email, ent.ExpirationDate); + return new BlackListDto(ent.Email, ent.ExpirationDate); } - public static BlackList FromDTOToModel(this BlackListDTO dto) + public static BlackList FromDtoToModel(this BlackListDto dto) { return new BlackList(dto.Email, dto.ExpirationDate); } @@ -26,7 +26,7 @@ public static class BlackListMapper return new BlackList(ent.Email, ent.ExpirationDate); } - public static BlackListEntity FromDtoToEntity(this BlackListDTO dto) + public static BlackListEntity FromDtoToEntity(this BlackListDto dto) { return new BlackListEntity { diff --git a/API_SQLuedo/Shared/Mapper/InquiryMapper.cs b/API_SQLuedo/Shared/Mapper/InquiryMapper.cs index fb57f82..0b99620 100644 --- a/API_SQLuedo/Shared/Mapper/InquiryMapper.cs +++ b/API_SQLuedo/Shared/Mapper/InquiryMapper.cs @@ -6,7 +6,7 @@ namespace Shared.Mapper; public static class InquiryMapper { - public static Inquiry FromDtoToModel(this InquiryDTO inqDto) + public static Inquiry FromDtoToModel(this InquiryDto inqDto) { return new Inquiry(inqDto.Id, inqDto.Title, inqDto.Description, inqDto.IsUser); } @@ -28,7 +28,7 @@ public static class InquiryMapper }; } - public static InquiryEntity FromDtoToEntity(this InquiryDTO inqDto) + public static InquiryEntity FromDtoToEntity(this InquiryDto inqDto) { return new InquiryEntity { @@ -39,13 +39,13 @@ public static class InquiryMapper }; } - public static InquiryDTO FromModelToDto(this Inquiry inq) + public static InquiryDto FromModelToDto(this Inquiry inq) { - return new InquiryDTO(inq.Id, inq.Title, inq.Description, inq.IsUser); + return new InquiryDto(inq.Id, inq.Title, inq.Description, inq.IsUser); } - public static InquiryDTO FromEntityToDto(this InquiryEntity inqEntity) + public static InquiryDto FromEntityToDto(this InquiryEntity inqEntity) { - return new InquiryDTO(inqEntity.Id, inqEntity.Title, inqEntity.Description, inqEntity.IsUser); + return new InquiryDto(inqEntity.Id, inqEntity.Title, inqEntity.Description, inqEntity.IsUser); } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/Mapper/InquiryTableMapper.cs b/API_SQLuedo/Shared/Mapper/InquiryTableMapper.cs index cd303ac..4143ebb 100644 --- a/API_SQLuedo/Shared/Mapper/InquiryTableMapper.cs +++ b/API_SQLuedo/Shared/Mapper/InquiryTableMapper.cs @@ -6,7 +6,7 @@ namespace Shared.Mapper; public static class InquiryTableMapper { - public static InquiryTable FromDtoToModel(this InquiryTableDTO inqTDto) + public static InquiryTable FromDtoToModel(this InquiryTableDto inqTDto) { return new InquiryTable(inqTDto.OwnerId, inqTDto.ConnectionInfo, inqTDto.DatabaseName); } @@ -16,14 +16,14 @@ public static class InquiryTableMapper return new InquiryTable(inqTEntity.OwnerId, inqTEntity.ConnectionInfo, inqTEntity.DatabaseName); } - public static InquiryTableDTO FromModelToDto(this InquiryTable inqT) + public static InquiryTableDto FromModelToDto(this InquiryTable inqT) { - return new InquiryTableDTO(inqT.OwnerId, inqT.DatabaseName, inqT.ConnectionInfo); + return new InquiryTableDto(inqT.OwnerId, inqT.DatabaseName, inqT.ConnectionInfo); } - public static InquiryTableDTO FromEntityToDto(this InquiryTableEntity inqTEntity) + public static InquiryTableDto FromEntityToDto(this InquiryTableEntity inqTEntity) { - return new InquiryTableDTO(inqTEntity.OwnerId, inqTEntity.DatabaseName, inqTEntity.ConnectionInfo); + return new InquiryTableDto(inqTEntity.OwnerId, inqTEntity.DatabaseName, inqTEntity.ConnectionInfo); } public static InquiryTableEntity FromModelToEntity(this InquiryTable inqT) @@ -36,7 +36,7 @@ public static class InquiryTableMapper }; } - public static InquiryTableEntity FromDtoToEntity(this InquiryTableDTO dto) + public static InquiryTableEntity FromDtoToEntity(this InquiryTableDto dto) { return new InquiryTableEntity { diff --git a/API_SQLuedo/Shared/Mapper/LessonMapper.cs b/API_SQLuedo/Shared/Mapper/LessonMapper.cs index 68380e1..7db70a4 100644 --- a/API_SQLuedo/Shared/Mapper/LessonMapper.cs +++ b/API_SQLuedo/Shared/Mapper/LessonMapper.cs @@ -6,14 +6,14 @@ namespace Shared.Mapper; public static class LessonMapper { - public static LessonDTO FromModelToDto(this Lesson model) + public static LessonDto FromModelToDto(this Lesson model) { - return new LessonDTO(model.Id, model.Title, model.LastPublisher, model.LastEdit); + return new LessonDto(model.Id, model.Title, model.LastPublisher, model.LastEdit); } - public static LessonDTO FromEntityToDto(this LessonEntity model) + public static LessonDto FromEntityToDto(this LessonEntity model) { - return new LessonDTO(model.Id, model.Title, model.LastPublisher, model.LastEdit); + return new LessonDto(model.Id, model.Title, model.LastPublisher, model.LastEdit); } public static LessonEntity FromModelToEntity(this Lesson model) @@ -26,8 +26,7 @@ public static class LessonMapper LastEdit = model.LastEdit }; } - - public static LessonEntity FromDtoToEntity(this LessonDTO dto) + public static LessonEntity FromDtoToEntity(this LessonDto dto) { return new LessonEntity { @@ -38,7 +37,7 @@ public static class LessonMapper }; } - public static Lesson FromDtoToModel(this LessonDTO dto) + public static Lesson FromDtoToModel(this LessonDto dto) { return new Lesson(dto.Id, dto.Title, dto.LastPublisher, dto.LastEdit); } diff --git a/API_SQLuedo/Shared/Mapper/NotepadMapper.cs b/API_SQLuedo/Shared/Mapper/NotepadMapper.cs index 4b62499..48b2705 100644 --- a/API_SQLuedo/Shared/Mapper/NotepadMapper.cs +++ b/API_SQLuedo/Shared/Mapper/NotepadMapper.cs @@ -6,7 +6,7 @@ namespace Shared.Mapper; public static class NotepadMapper { - public static Notepad FromDtoToModel(this NotepadDTO dto) + public static Notepad FromDtoToModel(this NotepadDto dto) { return new Notepad(dto.Id, dto.UserId, dto.InquiryId, dto.Notes); } @@ -16,17 +16,17 @@ public static class NotepadMapper return new Notepad(ent.Id, ent.UserId, ent.InquiryId, ent.Notes); } - public static NotepadDTO FromModelToDto(this Notepad not) + public static NotepadDto FromModelToDto(this Notepad not) { - return new NotepadDTO(not.Id, not.UserId, not.InquiryId, not.Notes); + return new NotepadDto(not.Id, not.UserId, not.InquiryId, not.Notes); } - public static NotepadDTO FromEntityToDto(this NotepadEntity ent) + public static NotepadDto FromEntityToDto(this NotepadEntity ent) { - return new NotepadDTO(ent.Id, ent.UserId, ent.InquiryId, ent.Notes); + return new NotepadDto(ent.Id, ent.UserId, ent.InquiryId, ent.Notes); } - public static NotepadEntity FromDtoToEntity(this NotepadDTO dto) + public static NotepadEntity FromDtoToEntity(this NotepadDto dto) { return new NotepadEntity { diff --git a/API_SQLuedo/Shared/Mapper/ParagraphMapper.cs b/API_SQLuedo/Shared/Mapper/ParagraphMapper.cs index 4d76665..69f5be8 100644 --- a/API_SQLuedo/Shared/Mapper/ParagraphMapper.cs +++ b/API_SQLuedo/Shared/Mapper/ParagraphMapper.cs @@ -6,7 +6,7 @@ namespace Shared.Mapper; public static class ParagraphMapper { - public static Paragraph FromDTOToModel(this ParagraphDTO dto) + public static Paragraph FromDtoToModel(this ParagraphDto dto) { return new Paragraph(dto.ContentTitle, dto.ContentContent, dto.Info, dto.Query, dto.Comment); } @@ -16,19 +16,19 @@ public static class ParagraphMapper return new Paragraph(model.ContentTitle, model.ContentContent, model.Info, model.Query, model.Comment); } - public static ParagraphDTO FromEntityToDto(this ParagraphEntity model) + public static ParagraphDto FromEntityToDto(this ParagraphEntity model) { - return new ParagraphDTO(model.Id, model.ContentTitle, model.ContentContent, model.Info, model.Query, + return new ParagraphDto(model.Id, model.ContentTitle, model.ContentContent, model.Info, model.Query, model.Comment, model.LessonId); } - public static ParagraphDTO FromModelToDTO(this Paragraph model) + public static ParagraphDto FromModelToDto(this Paragraph model) { - return new ParagraphDTO(model.Id, model.ContentTitle, model.ContentContent, model.Info, model.Query, + return new ParagraphDto(model.Id, model.ContentTitle, model.ContentContent, model.Info, model.Query, model.Comment, model.LessonId); } - public static ParagraphEntity FromDtoToEntity(this ParagraphDTO dto) + public static ParagraphEntity FromDtoToEntity(this ParagraphDto dto) { return new ParagraphEntity { diff --git a/API_SQLuedo/Shared/Mapper/SolutionMapper.cs b/API_SQLuedo/Shared/Mapper/SolutionMapper.cs index eda3fac..8d7a246 100644 --- a/API_SQLuedo/Shared/Mapper/SolutionMapper.cs +++ b/API_SQLuedo/Shared/Mapper/SolutionMapper.cs @@ -6,7 +6,7 @@ namespace Shared.Mapper; public static class SolutionMapper { - public static Solution FromDtoToModel(this SolutionDTO dto) + public static Solution FromDtoToModel(this SolutionDto dto) { return new Solution(dto.OwnerId, dto.MurdererFirstName, dto.MurdererLastName, dto.MurderPlace, dto.MurderWeapon, dto.Explanation); @@ -18,15 +18,15 @@ public static class SolutionMapper entity.MurderWeapon, entity.Explaination); } - public static SolutionDTO FromModelToDto(this Solution model) + public static SolutionDto FromModelToDto(this Solution model) { - return new SolutionDTO(model.OwnerId, model.MurdererFirstName, model.MurdererLastName, model.MurderPlace, + return new SolutionDto(model.OwnerId, model.MurdererFirstName, model.MurdererLastName, model.MurderPlace, model.MurderWeapon, model.Explanation); } - public static SolutionDTO FromEntityToDto(this SolutionEntity entity) + public static SolutionDto FromEntityToDto(this SolutionEntity entity) { - return new SolutionDTO(entity.OwnerId, entity.MurdererFirstName, entity.MurdererLastName, entity.MurderPlace, + return new SolutionDto(entity.OwnerId, entity.MurdererFirstName, entity.MurdererLastName, entity.MurderPlace, entity.MurderWeapon, entity.Explaination); } @@ -47,7 +47,7 @@ public static class SolutionMapper }; } - public static SolutionEntity FromDtoToEntity(this SolutionDTO dto) + public static SolutionEntity FromDtoToEntity(this SolutionDto dto) { return new SolutionEntity { diff --git a/API_SQLuedo/Shared/Mapper/SuccessMapper.cs b/API_SQLuedo/Shared/Mapper/SuccessMapper.cs index e96291a..1a175b1 100644 --- a/API_SQLuedo/Shared/Mapper/SuccessMapper.cs +++ b/API_SQLuedo/Shared/Mapper/SuccessMapper.cs @@ -6,7 +6,7 @@ namespace Shared.Mapper; public static class SuccessMapper { - public static Success FromDtoToModel(this SuccessDTO dto) + public static Success FromDtoToModel(this SuccessDto dto) { return new Success(dto.UserId, dto.InquiryId, dto.IsFinished); } @@ -16,17 +16,17 @@ public static class SuccessMapper return new Success(ent.UserId, ent.InquiryId, ent.IsFinished); } - public static SuccessDTO FromModelToDto(this Success suc) + public static SuccessDto FromModelToDto(this Success suc) { - return new SuccessDTO(suc.UserId, suc.InquiryId, suc.IsFinished); + return new SuccessDto(suc.UserId, suc.InquiryId, suc.IsFinished); } - public static SuccessDTO FromEntityToDto(this SuccessEntity ent) + public static SuccessDto FromEntityToDto(this SuccessEntity ent) { - return new SuccessDTO(ent.UserId, ent.InquiryId, ent.IsFinished); + return new SuccessDto(ent.UserId, ent.InquiryId, ent.IsFinished); } - public static SuccessEntity FromDtoToEntity(this SuccessDTO dto) + public static SuccessEntity FromDtoToEntity(this SuccessDto dto) { return new SuccessEntity { diff --git a/API_SQLuedo/Shared/Mapper/UserMapper.cs b/API_SQLuedo/Shared/Mapper/UserMapper.cs index 85aeecd..5b05609 100644 --- a/API_SQLuedo/Shared/Mapper/UserMapper.cs +++ b/API_SQLuedo/Shared/Mapper/UserMapper.cs @@ -6,12 +6,12 @@ namespace Shared.Mapper; public static class UserMapper { - public static User FromDtoToModel(this UserDTO dto) + public static User FromDtoToModel(this UserDto dto) { return new User(dto.Id, dto.Username, dto.Password, dto.Email, dto.IsAdmin); } - public static UserEntity FromDtoToEntity(this UserDTO dto) + public static UserEntity FromDtoToEntity(this UserDto dto) { return new UserEntity { @@ -28,14 +28,14 @@ public static class UserMapper return new User(entity.Id, entity.Username, entity.Password, entity.Email, entity.IsAdmin); } - public static UserDTO FromEntityToDto(this UserEntity entity) + public static UserDto FromEntityToDto(this UserEntity entity) { - return new UserDTO(entity.Id, entity.Username, entity.Password, entity.Email, entity.IsAdmin); + return new UserDto(entity.Id, entity.Username, entity.Password, entity.Email, entity.IsAdmin); } - public static UserDTO FromModelToDto(this User user) + public static UserDto FromModelToDto(this User user) { - return new UserDTO(user.Id, user.Username, user.Password, user.Email, user.IsAdmin); + return new UserDto(user.Id, user.Username, user.Password, user.Email, user.IsAdmin); } public static UserEntity FromModelToEntity(this User user) diff --git a/API_SQLuedo/Shared/ParagraphDataService.cs b/API_SQLuedo/Shared/ParagraphDataService.cs deleted file mode 100644 index bfa3bb0..0000000 --- a/API_SQLuedo/Shared/ParagraphDataService.cs +++ /dev/null @@ -1,116 +0,0 @@ -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using DbContextLib; -using Model.OrderCriteria; -using Shared; -using Shared.Mapper; - -namespace Shared; - -public class ParagraphDataService : IParagraphDataService -{ - private UserDbContext DbContext { get; set; } - public ParagraphDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Paragraphs.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case ParagraphOrderCriteria.None: - break; - case ParagraphOrderCriteria.ByTitle: - query = query.OrderBy(s => s.Title); - break; - case ParagraphOrderCriteria.ByContent: - query = query.OrderBy(s => s.Content); - break; - case ParagraphOrderCriteria.ByInfo: - query = query.OrderBy(s => s.Info); - break; - case ParagraphOrderCriteria.ByQuery: - query = query.OrderBy(s => s.Query); - break; - case ParagraphOrderCriteria.ByComment: - query = query.OrderBy(s => s.Comment); - break; - default: - break; - } - var paragraphs = query.ToList(); - return paragraphs.Select(s => s.FromEntityToDto()); - } - - public ParagraphDTO GetParagraphById(int id) - { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); - if (paragraphEntity == null) - { - throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); - } - - return paragraphEntity.FromEntityToDto(); - } - - public ParagraphDTO GetParagraphByTitle(string title) - { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Title == title); - if (paragraphEntity == null) - { - throw new ArgumentException("Impossible de trouver le paragraphe", nameof(title)); - } - - return paragraphEntity.FromEntityToDto(); - } - - public bool DeleteParagraph(int id) - { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); - if (paragraphEntity == null) - { - return false; - } - - DbContext.Paragraphs.Remove(paragraphEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraphDTO) - { - var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); - if (updatingParagraph == null) - { - throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); - } - - updatingParagraph.Title = paragraphDTO.Title; - updatingParagraph.Content = paragraphDTO.Content; - updatingParagraph.Info = paragraphDTO.Info; - updatingParagraph.Query = paragraphDTO.Query; - updatingParagraph.Comment = paragraphDTO.Comment; - DbContext.SaveChangesAsync(); - return updatingParagraph.FromEntityToDto(); - } - - public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) - { - var newParagraphEntity = new ParagraphDTO() - { - Title = title, - Content = content, - Info = info, - Query = query, - Comment = comment, - LessonId = lessonId - }; - DbContext.Paragraphs.Add(newParagraphEntity.FromDtoToEntity()); - DbContext.SaveChangesAsync(); - return newParagraphEntity; - } -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/SuccessDataService.cs b/API_SQLuedo/Shared/SuccessDataService.cs deleted file mode 100644 index 472a9ff..0000000 --- a/API_SQLuedo/Shared/SuccessDataService.cs +++ /dev/null @@ -1,103 +0,0 @@ -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using DbContextLib; -using Model.OrderCriteria; -using Shared.Mapper; - -namespace Shared; - -public class SuccessDataService : ISuccessDataService -{ - private UserDbContext DbContext { get; set; } - public SuccessDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Successes.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case SuccessOrderCriteria.None: - break; - case SuccessOrderCriteria.ByUserId: - query = query.OrderBy(s => s.UserId); - break; - case SuccessOrderCriteria.ByInquiryId: - query = query.OrderBy(s => s.InquiryId); - break; - case SuccessOrderCriteria.ByIsFinished: - query = query.OrderBy(s => s.IsFinished); - break; - default: - break; - } - var successes = query.ToList(); - return successes.Select(s => s.FromEntityToDto()); - } - - public SuccessDTO GetSuccessByUserId(int id) - { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); - } - - return userEntity.FromEntityToDto(); - } - - public SuccessDTO GetSuccessByInquiryId(int id) - { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); - } - - return userEntity.FromEntityToDto(); - } - - public bool DeleteSuccess(int id) - { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (successEntity == null) - { - return false; - } - - DbContext.Successes.Remove(successEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public SuccessDTO UpdateSuccess(int id, SuccessDTO success) - { - var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (updatingSuccess == null) - { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); - } - - updatingSuccess.UserId = success.UserId; - updatingSuccess.InquiryId = success.InquiryId; - updatingSuccess.IsFinished = success.IsFinished; - DbContext.SaveChangesAsync(); - return updatingSuccess.FromEntityToDto(); - } - - public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) - { - var newSuccessEntity = new SuccessDTO() - { - UserId = userId, - InquiryId = inquiryId, - IsFinished = isFinished, - }; - DbContext.Successes.Add(newSuccessEntity.FromDtoToEntity()); - DbContext.SaveChangesAsync(); - return newSuccessEntity; - } -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/UserDataService.cs b/API_SQLuedo/Shared/UserDataService.cs deleted file mode 100644 index 4679d11..0000000 --- a/API_SQLuedo/Shared/UserDataService.cs +++ /dev/null @@ -1,121 +0,0 @@ -using Dto; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using Entities; -using Shared.Mapper; -using DbContextLib; -using Model.OrderCriteria; - -namespace Shared -{ - public class UserDataService : IUserDataService - { - private UserDbContext DbContext { get; set; } - - public UserDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - - public UserDTO GetUserById(int id) - { - var userEntity = DbContext.Users.FirstOrDefault(u => u.Id == id); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id)); - } - - return userEntity.FromEntityToDto(); - - } - - public UserDTO GetUserByUsername(string username) - { - var userEntity = DbContext.Users.FirstOrDefault(u => u.Username == username); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(username)); - } - - return userEntity.FromEntityToDto(); - - } - - public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Users.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case UserOrderCriteria.None: - break; - case UserOrderCriteria.ById: - query = query.OrderBy(s => s.Id); - break; - case UserOrderCriteria.ByUsername: - query = query.OrderBy(s => s.Username); - break; - case UserOrderCriteria.ByEmail: - query = query.OrderBy(s => s.Email); - break; - case UserOrderCriteria.ByIsAdmin: - query = query.OrderBy(s => s.IsAdmin); - break; - default: - break; - } - var users = query.ToList(); - return users.Select(s => s.FromEntityToDto()); - } - - public bool DeleteUser(int id) - { - var userEntity = DbContext.Users.FirstOrDefault(u => u.Id == id); - if (userEntity == null) - { - return false; - } - - DbContext.Users.Remove(userEntity); - DbContext.SaveChangesAsync(); - return true; - - } - - public UserDTO UpdateUser(int id, UserDTO user) - { - var updatingUser = DbContext.Users.FirstOrDefault(u => u.Id == id); - if (updatingUser == null) - { - throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id)); - } - - updatingUser.Username = user.Username; - updatingUser.Password = user.Password; - updatingUser.Email = user.Email; - updatingUser.IsAdmin = user.IsAdmin; - DbContext.SaveChangesAsync(); - return updatingUser.FromEntityToDto(); - - } - - public UserDTO CreateUser(string username, string password, string email, bool isAdmin) - { - var newUserEntity = new UserDTO - { - Username = username, - Password = password, - Email = email, - IsAdmin = isAdmin - }; - DbContext.Users.Add(newUserEntity.FromDtoToEntity()); - DbContext.SaveChangesAsync(); - return newUserEntity; - - } - } -} diff --git a/API_SQLuedo/StubbedContextLib/StubbedContext.cs b/API_SQLuedo/StubbedContextLib/StubbedContext.cs index d138bf0..919394a 100644 --- a/API_SQLuedo/StubbedContextLib/StubbedContext.cs +++ b/API_SQLuedo/StubbedContextLib/StubbedContext.cs @@ -1,5 +1,4 @@ -using System.Runtime.CompilerServices; -using System.Security.Cryptography; +using System.Security.Cryptography; using DbContextLib; using Entities; using Microsoft.AspNetCore.Cryptography.KeyDerivation; @@ -13,10 +12,10 @@ public class StubbedContext : UserDbContext { } - protected override void OnModelCreating(ModelBuilder modelBuilder) + protected override void OnModelCreating(ModelBuilder builder) { - base.OnModelCreating(modelBuilder); - modelBuilder.Entity().HasData( + base.OnModelCreating(builder); + builder.Entity().HasData( new UserEntity { Id = 1, @@ -83,7 +82,7 @@ public class StubbedContext : UserDbContext IsAdmin = true }); - modelBuilder.Entity().HasData( + builder.Entity().HasData( new InquiryTableEntity { OwnerId = 1, @@ -106,7 +105,7 @@ public class StubbedContext : UserDbContext "Server=localhost;Database=Inquiry3;Trusted_Connection=True;MultipleActiveResultSets=true" }); - modelBuilder.Entity().HasData( + builder.Entity().HasData( new SolutionEntity { OwnerId = 1, @@ -135,7 +134,7 @@ public class StubbedContext : UserDbContext Explaination = "Parce que c'est Erwan" }); - modelBuilder.Entity().HasData( + builder.Entity().HasData( new InquiryEntity { Id = 1, diff --git a/API_SQLuedo/TestAPI/Extensions/InquiryDto.EqualityComparer.cs b/API_SQLuedo/TestAPI/Extensions/InquiryDto.EqualityComparer.cs new file mode 100644 index 0000000..f9e7698 --- /dev/null +++ b/API_SQLuedo/TestAPI/Extensions/InquiryDto.EqualityComparer.cs @@ -0,0 +1,16 @@ +using Dto; + +namespace TestAPI.Extensions; + +class InquiryIdEqualityComparer : EqualityComparer +{ + public override bool Equals(InquiryDto x, InquiryDto y) + { + return x.Id == y.Id; + } + + public override int GetHashCode(InquiryDto obj) + { + return obj.Id; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/Extensions/LessonsDto.EqualityComparer.cs b/API_SQLuedo/TestAPI/Extensions/LessonsDto.EqualityComparer.cs new file mode 100644 index 0000000..0d89815 --- /dev/null +++ b/API_SQLuedo/TestAPI/Extensions/LessonsDto.EqualityComparer.cs @@ -0,0 +1,16 @@ +using Dto; + +namespace TestAPI.Extensions; + +class LessonIdEqualityComparer : EqualityComparer +{ + public override bool Equals(LessonDto x, LessonDto y) + { + return x.Id == y.Id; + } + + public override int GetHashCode(LessonDto obj) + { + return obj.Id; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/Extensions/ParagraphDto.EqualityComparer.cs b/API_SQLuedo/TestAPI/Extensions/ParagraphDto.EqualityComparer.cs new file mode 100644 index 0000000..1763b68 --- /dev/null +++ b/API_SQLuedo/TestAPI/Extensions/ParagraphDto.EqualityComparer.cs @@ -0,0 +1,16 @@ +using Dto; + +namespace TestAPI.Extensions; + +class ParagraphIdEqualityComparer : EqualityComparer +{ + public override bool Equals(ParagraphDto x, ParagraphDto y) + { + return x.Id == y.Id; + } + + public override int GetHashCode(ParagraphDto obj) + { + return obj.Id; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/Extensions/SuccessDto.EqualityComparer.cs b/API_SQLuedo/TestAPI/Extensions/SuccessDto.EqualityComparer.cs new file mode 100644 index 0000000..2d190bd --- /dev/null +++ b/API_SQLuedo/TestAPI/Extensions/SuccessDto.EqualityComparer.cs @@ -0,0 +1,16 @@ +using Dto; + +namespace TestAPI.Extensions; + +class SuccessIdEqualityComparer : EqualityComparer +{ + public override bool Equals(SuccessDto x, SuccessDto y) + { + return x.UserId == y.UserId && x.InquiryId == y.InquiryId; + } + + public override int GetHashCode(SuccessDto obj) + { + return obj.UserId * obj.InquiryId; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/Extensions/UserDto.EqualityComparer.cs b/API_SQLuedo/TestAPI/Extensions/UserDto.EqualityComparer.cs new file mode 100644 index 0000000..f3e1c9f --- /dev/null +++ b/API_SQLuedo/TestAPI/Extensions/UserDto.EqualityComparer.cs @@ -0,0 +1,16 @@ +using Dto; + +namespace TestAPI.Extensions; + +class UserIdEqualityComparer : EqualityComparer +{ + public override bool Equals(UserDto x, UserDto y) + { + return x.Id == y.Id; + } + + public override int GetHashCode(UserDto obj) + { + return obj.Id; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/InquiryUnitTest.cs b/API_SQLuedo/TestAPI/InquiryUnitTest.cs new file mode 100644 index 0000000..e833558 --- /dev/null +++ b/API_SQLuedo/TestAPI/InquiryUnitTest.cs @@ -0,0 +1,267 @@ +using Dto; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Shared; +using API.Controllers; +using TestAPI.Extensions; + +namespace TestAPI; + +public class InquiryUnitTest +{ + private readonly Mock> _inquiryService; + + public InquiryUnitTest() + { + _inquiryService = new Mock>(); + } + + [Fact] + public void GetInquiriesListSuccess() + { + var inquiryList = GetInquiriesData(); + _inquiryService.Setup(x => x.GetInquiries(1, 4, 0)) + .Returns(inquiryList); + var inquiryController = new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = inquiryController.GetInquiries(1, 4, 0); + + if (inquiriesResult is OkObjectResult okObjectResult) + { + var valeur = okObjectResult.Value; + + Assert.NotNull(valeur); + Assert.Equal(GetInquiriesData().ToString(), valeur.ToString()); + Assert.True(inquiryList.SequenceEqual(valeur as IEnumerable, new InquiryIdEqualityComparer())); + } + } + + [Fact] + public void GetInquiresListFail() + { + _inquiryService.Setup(x => x.GetInquiries(1, 4, 0)) + .Returns(new List()); + var inquiryController = new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = inquiryController.GetInquiries(2, 3, 0); + + if (inquiriesResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204) + { + Assert.IsNotType(inquiriesResult); + } + } + + [Fact] + public void GetInquiryIdSuccess() + { + var inquiryList = GetInquiriesData(); + _inquiryService.Setup(x => x.GetInquiryById(1)) + .Returns(inquiryList[1]); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiryResult = inquiriesController.GetInquiryById(1); + if (inquiryResult is OkObjectResult okObjectResult) + { + InquiryDto valeur = okObjectResult.Value as InquiryDto; + + Assert.NotNull(valeur); + Assert.Equal("titre 2", valeur.Title); + Assert.Equal("Description", valeur.Description); + Assert.True(valeur.IsUser); + Assert.Equal(valeur.GetHashCode(), inquiryList[1].GetHashCode()); + Assert.True(valeur.Equals(inquiryList[1])); + Assert.False(valeur.Equals(new object())); + Assert.IsType(valeur); + Assert.Contains(valeur, inquiryList); + } + } + + [Fact] + public void GetInquiryIdFail() + { + var inquiryList = GetInquiriesData(); + _inquiryService.Setup(x => x.GetInquiryById(1)) + .Returns(inquiryList[1]); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiryResult = inquiriesController.GetInquiryById(100); + if (inquiryResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, inquiryList); + } + } + + [Fact] + public void GetInquiryTitleSuccess() + { + var inquiryList = GetInquiriesData(); + _inquiryService.Setup(x => x.GetInquiryByTitle("ZUDZU")) + .Returns(inquiryList[2]); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = inquiriesController.GetInquiryByTitle("ZUDZU"); + if (inquiriesResult is OkObjectResult okObjectResult) + { + InquiryDto valeur = okObjectResult.Value as InquiryDto; + + Assert.NotNull(valeur); + Assert.IsType(valeur); + Assert.Contains(valeur, inquiryList); + Assert.Equal("ZUDZU", valeur.Title); + Assert.Equal("OUHHHH", valeur.Description); + Assert.Equal(2, valeur.Id); + Assert.False(valeur.IsUser); + } + } + + [Fact] + public void GetInquiryTitleFail() + { + var inquiryList = GetInquiriesData(); + _inquiryService.Setup(x => x.GetInquiryByTitle("ZUDZU")) + .Returns(inquiryList[2]); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = inquiriesController.GetInquiryByTitle("GYIIieihhh"); + + if (inquiriesResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, inquiryList); + Assert.False(inquiryList == valeur); + } + } + + [Fact] + public void DeleteInquirySuccess() + { + _inquiryService.Setup(x => x.DeleteInquiry(1)) + .Returns(true); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiryResult = inquiriesController.DeleteInquiry(1); + if (inquiryResult is OkObjectResult okObjectResult) + { + bool valeur = (bool)okObjectResult.Value; + + Assert.True(valeur); + } + } + + [Fact] + public void DeleteInquiryFail() + { + _inquiryService.Setup(x => x.DeleteInquiry(1)) + .Returns(true); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiryResult = inquiriesController.DeleteInquiry(100); + if (inquiryResult is NotFoundObjectResult nfObjectResult) + { + Assert.Null(nfObjectResult.Value); + Assert.IsNotType(nfObjectResult.Value); + } + } + + [Fact] + public void CreateInquirySuccess() + { + _inquiryService.Setup(x => x.CreateInquiry("Titros", "description", false)) + .Returns(new InquiryDto(4, "Titros", "description", false)); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = inquiriesController.CreateInquiry(new InquiryDto("Titros", "description", false)); + if (inquiriesResult is CreatedResult createdObjectResult) + { + InquiryDto valeur = createdObjectResult.Value as InquiryDto; + + Assert.NotNull(valeur); + Assert.Equal(4, valeur.Id); + Assert.Equal("Titros", valeur.Title); + Assert.Equal("description", valeur.Description); + Assert.False(valeur.IsUser); + } + } + + [Fact] + public void CreateInquiryFail() + { + _inquiryService.Setup(x => x.CreateInquiry("Titros", "description", false)) + .Returns(new InquiryDto(4, "Titros", "description", false)); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = inquiriesController.CreateInquiry(new InquiryDto(4, null, "heudfk@hdye.com", true)); + + if (inquiriesResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + [Fact] + public void UpdateInquirySuccess() + { + _inquiryService.Setup(x => x.UpdateInquiry(1, new InquiryDto(1, "Passssss", "heudfk@hdye.com", true))) + .Returns(new InquiryDto(1, "Passssss", "heudfk@hdye.com", true)); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = + inquiriesController.UpdateInquiry(1, new InquiryDto(1, "Passssss", "heudfk@hdye.com", true)); + if (inquiriesResult is OkObjectResult okObjectResult) + { + InquiryDto valeur = okObjectResult.Value as InquiryDto; + + Assert.NotNull(valeur); + Assert.Equal("Passssss", valeur.Title); + Assert.Equal("heudfk@hdye.com", valeur.Description); + Assert.True(valeur.IsUser); + } + } + + [Fact] + public void UpdateInquiryFail() + { + _inquiryService.Setup(x => x.UpdateInquiry(1, new InquiryDto(1, "Passssss", "heudfk@hdye.com", true))) + .Returns(new InquiryDto(1, "Passssss", "heudfk@hdye.com", true)); + var inquiriesController = + new InquiriesController(_inquiryService.Object, new NullLogger()); + + var inquiriesResult = + inquiriesController.UpdateInquiry(1, new InquiryDto(2, "Passssss", "heudfk@hdye.com", true)); + + if (inquiriesResult is BadRequestResult bdObjectResultx) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + + private List GetInquiriesData() + { + List inquiriesData = new List(4) + { + new(0, "titre 1", "La desc", false), + new(1, "titre 2", "Description", true), + new(2, "ZUDZU", "OUHHHH", false), + new("titre premium", "Ascendant", true), + }; + return inquiriesData; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/LessonUnitTest.cs b/API_SQLuedo/TestAPI/LessonUnitTest.cs new file mode 100644 index 0000000..bdf7c7e --- /dev/null +++ b/API_SQLuedo/TestAPI/LessonUnitTest.cs @@ -0,0 +1,267 @@ +using API.Controllers; +using Dto; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Shared; +using TestAPI.Extensions; + +namespace TestAPI; + +public class LessonUnitTest +{ + private readonly Mock> _lessonService; + + public LessonUnitTest() + { + _lessonService = new Mock>(); + } + + [Fact] + public void GetLessonsListSuccess() + { + var lessonList = GetLessonsData(); + _lessonService.Setup(x => x.GetLessons(1, 4, 0)) + .Returns(lessonList); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.GetLessons(1, 4, 0); + + if (lessonsResult is OkObjectResult okObjectResult) + { + var valeur = okObjectResult.Value; + + Assert.NotNull(valeur); + Assert.Equal(GetLessonsData().ToString(), valeur.ToString()); + Assert.True(lessonList.SequenceEqual(valeur as IEnumerable, new LessonIdEqualityComparer())); + } + } + + [Fact] + public void GetLessonsListFail() + { + _lessonService.Setup(x => x.GetLessons(1, 4, 0)) + .Returns(new List()); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.GetLessons(2, 3, 0); + + if (lessonsResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204) + + { + Assert.IsNotType(lessonsResult); + } + } + + [Fact] + public void GetLessonIdSuccess() + { + var lessonList = GetLessonsData(); + _lessonService.Setup(x => x.GetLessonById(1)) + .Returns(lessonList[0]); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.GetLessonById(1); + if (lessonsResult is OkObjectResult okObjectResult) + { + LessonDto valeur = okObjectResult.Value as LessonDto; + + Assert.NotNull(valeur); + Assert.Equal("Le titre", valeur.Title); + Assert.Equal("Clément", valeur.LastPublisher); + Assert.Equal(new DateOnly(2024, 03, 10), valeur.LastEdit); + Assert.NotEqual(2, valeur.Id); + + + Assert.Equal(valeur.GetHashCode(), lessonList[0].GetHashCode()); + Assert.True(valeur.Equals(lessonList[0])); + Assert.False(valeur.Equals(new object())); + Assert.True(valeur.Equals(valeur)); + Assert.IsType(valeur); + Assert.Contains(valeur, lessonList); + } + } + + [Fact] + public void GetLessonIdFail() + { + var lessonList = GetLessonsData(); + _lessonService.Setup(x => x.GetLessonById(1)) + .Returns(lessonList[0]); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.GetLessonById(100); + if (lessonsResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, lessonList); + } + } + + [Fact] + public void GetLessonTitleSuccess() + { + var lessonList = GetLessonsData(); + _lessonService.Setup(x => x.GetLessonByTitle("Chiant la")) + .Returns(lessonList[2]); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.GetLessonByTitle("Chiant la"); + if (lessonsResult is OkObjectResult okObjectResult) + { + LessonDto valeur = okObjectResult.Value as LessonDto; + + Assert.NotNull(valeur); + Assert.Equal("Chiant la", valeur.Title); + Assert.Equal("Une personne", valeur.LastPublisher); + Assert.Equal(new DateOnly(2012, 12, 25), valeur.LastEdit); + Assert.Equal(3, valeur.Id); + Assert.IsType(valeur); + Assert.Contains(valeur, lessonList); + } + } + + [Fact] + public void GetLessonTitleFail() + { + var lessonList = GetLessonsData(); + _lessonService.Setup(x => x.GetLessonByTitle("Chiant la")) + .Returns(lessonList[2]); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.GetLessonByTitle("IUHIUHU"); + + if (lessonsResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, lessonList); + Assert.False(lessonList == valeur); + } + } + + [Fact] + public void DeleteLessonSuccess() + { + _lessonService.Setup(x => x.DeleteLesson(1)) + .Returns(true); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.DeleteLesson(1); + if (lessonsResult is OkObjectResult okObjectResult) + { + bool valeur = (bool)okObjectResult.Value; + + Assert.True(valeur); + } + } + + [Fact] + public void DeleteLessonFail() + { + _lessonService.Setup(x => x.DeleteLesson(1)) + .Returns(true); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.DeleteLesson(100); + if (lessonsResult is NotFoundObjectResult nfObjectResult) + { + Assert.Null(nfObjectResult.Value); + Assert.IsNotType(nfObjectResult.Value); + } + } + + [Fact] + public void CreateLessonSuccess() + { + _lessonService.Setup(x => x.CreateLesson("Le nouveau titre", "Le nouvel éditeur", new DateOnly(2024, 03, 16))) + .Returns(new LessonDto("Le nouveau titre", "Le nouvel éditeur", new DateOnly(2024, 03, 16))); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = + lessonsController.CreateLesson(new LessonDto("Le nouveau titre", "Le nouvel éditeur", + new DateOnly(2024, 03, 16))); + if (lessonsResult is CreatedResult createdObjectResult) + { + LessonDto valeur = createdObjectResult.Value as LessonDto; + + Assert.NotNull(valeur); + Assert.Equal("Le nouveau titre", valeur.Title); + Assert.Equal("Le nouvel éditeur", valeur.LastPublisher); + Assert.Equal(new DateOnly(2024, 03, 16), valeur.LastEdit); + } + } + + [Fact] + public void CreateLessonFail() + { + _lessonService.Setup(x => x.CreateLesson("Le nouveau titre", "Le nouvel éditeur", new DateOnly(2024, 03, 16))) + .Returns(new LessonDto("Le nouveau titre", "Le nouvel éditeur", new DateOnly(2024, 03, 16))); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = + lessonsController.CreateLesson(new LessonDto(null, "Le nouvel éditeur", new DateOnly(2024, 03, 16))); + + if (lessonsResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + [Fact] + public void UpdateLessonSuccess() + { + _lessonService.Setup(x => + x.UpdateLesson(1, new LessonDto(1, "Titre update", "Le dernier publisher", new DateOnly(2022, 02, 02)))) + .Returns(new LessonDto(1, "Titre update", "Le dernier publisher", new DateOnly(2022, 02, 02))); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.UpdateLesson(1, + new LessonDto(1, "Titre update", "Le dernier publisher", new DateOnly(2022, 02, 02))); + if (lessonsResult is OkObjectResult okObjectResult) + { + LessonDto valeur = okObjectResult.Value as LessonDto; + + Assert.NotNull(valeur); + Assert.Equal("Titre update", valeur.Title); + Assert.Equal("Le dernier publisher", valeur.LastPublisher); + Assert.Equal(new DateOnly(2022, 02, 02), valeur.LastEdit); + Assert.Equal(1, valeur.Id); + } + } + + [Fact] + public void UpdateLessonFail() + { + _lessonService.Setup(x => + x.UpdateLesson(1, new LessonDto(1, "Titre update", "Le dernier publisher", new DateOnly(2022, 02, 02)))) + .Returns(new LessonDto(1, "Titre update", "Le dernier publisher", new DateOnly(2022, 02, 02))); + var lessonsController = new LessonsController(_lessonService.Object, new NullLogger()); + + var lessonsResult = lessonsController.UpdateLesson(1, + new LessonDto(2, "Titre update", "Le dernier publisher", new DateOnly(2022, 02, 02))); + + if (lessonsResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + + private List GetLessonsData() + { + List lessonsData = new List(4) + { + new(1, "Le titre", "Clément", new DateOnly(2024, 03, 10)), + new(2, "Pas titre", "Erwan", new DateOnly(2024, 02, 11)), + new(3, "Chiant la", "Une personne", new DateOnly(2012, 12, 25)), + new("Les fleurs du mal", "Baudelaire", new DateOnly(1872, 10, 01)), + }; + return lessonsData; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/ParagraphsUnitTest.cs b/API_SQLuedo/TestAPI/ParagraphsUnitTest.cs new file mode 100644 index 0000000..a7b5438 --- /dev/null +++ b/API_SQLuedo/TestAPI/ParagraphsUnitTest.cs @@ -0,0 +1,300 @@ +using API.Controllers; +using Dto; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Shared; +using TestAPI.Extensions; + +namespace TestAPI; + +public class ParagraphsUnitTest + +{ + private readonly Mock> _paragraphService; + + public ParagraphsUnitTest() + { + _paragraphService = new Mock>(); + } + + [Fact] + public void GetParagraphsListSuccess() + { + var paragraphsList = GetParagraphsData(); + _paragraphService.Setup(x => x.GetParagraphs(1, 4, 0)) + .Returns(paragraphsList); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.GetParagraphs(1, 4, 0); + + if (paragraphsResult is OkObjectResult okObjectResult) + { + var valeur = okObjectResult.Value; + + Assert.NotNull(valeur); + Assert.Equal(GetParagraphsData().ToString(), valeur.ToString()); + Assert.True(paragraphsList.SequenceEqual(valeur as IEnumerable, + new ParagraphIdEqualityComparer())); + } + } + + [Fact] + public void GetParagraphsListFail() + { + _paragraphService.Setup(x => x.GetParagraphs(1, 4, 0)) + .Returns(new List()); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.GetParagraphs(1, 4, 0); + + if (paragraphsResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204) + + { + Assert.IsNotType(paragraphsResult); + } + } + + [Fact] + public void GetParagraphIdSuccess() + { + var paragraphsList = GetParagraphsData(); + _paragraphService.Setup(x => x.GetParagraphById(1)) + .Returns(paragraphsList[1]); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.GetParagraphById(1); + if (paragraphsResult is OkObjectResult okObjectResult) + { + ParagraphDto valeur = okObjectResult.Value as ParagraphDto; + + Assert.NotNull(valeur); + Assert.Equal("Le titre", valeur.Title); + Assert.Equal("pas contenu", valeur.Content); + Assert.Equal("Pas d'infos ici", valeur.Info); + Assert.Equal("Delete * from Earth", valeur.Query); + Assert.Equal("Miam", valeur.Comment); + Assert.Equal(2, valeur.LessonId); + + + Assert.Equal(valeur.GetHashCode(), paragraphsList[1].GetHashCode()); + Assert.True(valeur.Equals(paragraphsList[1])); + Assert.False(valeur.Equals(new object())); + Assert.True(valeur.Equals(valeur)); + Assert.IsType(valeur); + Assert.Contains(valeur, paragraphsList); + } + } + + [Fact] + public void GetParagraphIdFail() + { + var paragraphsList = GetParagraphsData(); + _paragraphService.Setup(x => x.GetParagraphById(1)) + .Returns(paragraphsList[1]); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.GetParagraphById(100); + if (paragraphsResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, paragraphsList); + } + } + + [Fact] + public void GetParagraphTitleSuccess() + { + var paragraphsList = GetParagraphsData(); + _paragraphService.Setup(x => x.GetParagraphByTitle("Title")) + .Returns(paragraphsList[3]); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.GetParagraphByTitle("Title"); + if (paragraphsResult is OkObjectResult okObjectResult) + { + ParagraphDto valeur = okObjectResult.Value as ParagraphDto; + + Assert.NotNull(valeur); + Assert.Equal("Title", valeur.Title); + Assert.Equal("Content", valeur.Content); + Assert.Equal("Je ne parle pas anglais", valeur.Info); + Assert.Equal("Select select from select", valeur.Query); + Assert.Equal("Mais qui est ce commentaire", valeur.Comment); + Assert.Equal(3, valeur.LessonId); + Assert.IsType(valeur); + Assert.Contains(valeur, paragraphsList); + } + } + + [Fact] + public void GetParagraphTitleFail() + { + var paragraphsList = GetParagraphsData(); + _paragraphService.Setup(x => x.GetParagraphByTitle("Title")) + .Returns(paragraphsList[3]); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.GetParagraphByTitle("IUHIUHU"); + + if (paragraphsResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, paragraphsList); + Assert.False(paragraphsList == valeur); + } + } + + [Fact] + public void DeleteParagraphSuccess() + { + _paragraphService.Setup(x => x.DeleteParagraph(1)) + .Returns(true); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.DeleteParagraph(1); + if (paragraphsResult is OkObjectResult okObjectResult) + { + bool valeur = (bool)okObjectResult.Value; + + Assert.True(valeur); + } + } + + [Fact] + public void DeleteParagraphFail() + { + _paragraphService.Setup(x => x.DeleteParagraph(1)) + .Returns(true); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.DeleteParagraph(100); + if (paragraphsResult is NotFoundObjectResult nfObjectResult) + { + Assert.Null(nfObjectResult.Value); + Assert.IsNotType(nfObjectResult.Value); + } + } + + [Fact] + public void CreateParagraphSuccess() + { + _paragraphService.Setup(x => x.CreateParagraph("Le nouveau titre", "Le nouveau content", "Les infos", + "La requête requêtante", "Commentaires", 2)) + .Returns(new ParagraphDto("Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2)); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.CreateParagraph(new ParagraphDto("Le nouveau titre", + "Le nouveau content", "Les infos", "La requête requêtante", "Commentaires", 2)); + if (paragraphsResult is CreatedResult createdObjectResult) + { + ParagraphDto valeur = createdObjectResult.Value as ParagraphDto; + + Assert.NotNull(valeur); + Assert.Equal("Le nouveau titre", valeur.Title); + Assert.Equal("Le nouveau content", valeur.Content); + Assert.Equal("Les infos", valeur.Info); + Assert.Equal("La requête requêtante", valeur.Query); + Assert.Equal("Commentaires", valeur.Comment); + Assert.Equal(2, valeur.LessonId); + } + } + + [Fact] + public void CreateParagraphFail() + { + _paragraphService.Setup(x => x.CreateParagraph("Le nouveau titre", "Le nouveau content", "Les infos", + "La requête requêtante", "Commentaires", 2)) + .Returns(new ParagraphDto("Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2)); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.CreateParagraph(new ParagraphDto(null, "Le nouveau content", + "Les infos", "La requête requêtante", "Commentaires", 2)); + + if (paragraphsResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + [Fact] + public void UpdateParagraphSuccess() + { + _paragraphService.Setup(x => x.UpdateParagraph(1, + new ParagraphDto(1, "Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2))) + .Returns(new ParagraphDto(1, "Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2)); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.UpdateParagraph(1, + new ParagraphDto(1, "Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2)); + if (paragraphsResult is OkObjectResult okObjectResult) + { + ParagraphDto valeur = okObjectResult.Value as ParagraphDto; + + Assert.NotNull(valeur); + Assert.Equal("Le nouveau titre", valeur.Title); + Assert.Equal("Le nouveau content", valeur.Content); + Assert.Equal("Les infos", valeur.Info); + Assert.Equal("La requête requêtante", valeur.Query); + Assert.Equal("Commentaires", valeur.Comment); + Assert.Equal(2, valeur.LessonId); + } + } + + [Fact] + public void UpdateParagraphFail() + { + _paragraphService.Setup(x => x.UpdateParagraph(1, + new ParagraphDto(1, "Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2))) + .Returns(new ParagraphDto(1, "Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2)); + var paragraphsController = + new ParagraphsController(_paragraphService.Object, new NullLogger()); + + var paragraphsResult = paragraphsController.UpdateParagraph(1, + new ParagraphDto(2, "Le nouveau titre", "Le nouveau content", "Les infos", "La requête requêtante", + "Commentaires", 2)); + + if (paragraphsResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + private List GetParagraphsData() + { + List paragraphsData = new List(4) + { + new(0, "Titre 1", "Le contenu", "Les infos de ce paragraphes sont ", "Select * from C#", "Le commentaire", + 1), + new(1, "Le titre", "pas contenu", "Pas d'infos ici", "Delete * from Earth", "Miam", 2), + new(2, "Ceci n'est pas un titre", "Certainement hmmm", "OUOOOOO ", "Autocommit = {true}", "First", 1), + new("Title", "Content", "Je ne parle pas anglais", "Select select from select", + "Mais qui est ce commentaire", 3), + }; + return paragraphsData; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/SuccessesUnitTest.cs b/API_SQLuedo/TestAPI/SuccessesUnitTest.cs new file mode 100644 index 0000000..8ad235a --- /dev/null +++ b/API_SQLuedo/TestAPI/SuccessesUnitTest.cs @@ -0,0 +1,278 @@ +using API.Controllers; +using Dto; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Shared; +using TestAPI.Extensions; + +namespace TestAPI; + +public class SuccessesUnitTest +{ + private readonly Mock> _successService; + + public SuccessesUnitTest() + { + _successService = new Mock>(); + } + + [Fact] + public void GetSuccessesListSuccess() + { + var successesList = GetSuccessesData(); + _successService.Setup(x => x.GetSuccesses(1, 4, 0)) + .Returns(successesList); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var successesResult = successesController.GetSuccesses(1, 4, 0); + + if (successesResult is OkObjectResult okObjectResult) + { + var valeur = okObjectResult.Value; + + Assert.NotNull(valeur); + Assert.Equal(GetSuccessesData().ToString(), valeur.ToString()); + Assert.True(successesList.SequenceEqual(valeur as IEnumerable, + new SuccessIdEqualityComparer())); + } + } + + [Fact] + public void GetSuccessesListFail() + { + _successService.Setup(x => x.GetSuccesses(1, 4, 0)) + .Returns(new List()); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var successesResult = successesController.GetSuccesses(2, 3, 0); + + if (successesResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204) + { + Assert.IsNotType(successesResult); + } + } + + [Fact] + public void GetSuccessInquiryIdSuccess() + { + var successesList = GetSuccessesData(); + _successService.Setup(x => x.GetSuccessesByInquiryId(1)) + .Returns(new List { successesList[0], successesList[1] }); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var sucessesResult = successesController.GetSuccessByInquiryId(1); + if (sucessesResult is OkObjectResult okObjectResult) + { + List valeur = okObjectResult.Value as List; + + Assert.NotNull(valeur); + Assert.Equal(0, valeur[0].UserId); + Assert.Equal(1, valeur[0].InquiryId); + Assert.True(valeur[0].IsFinished); + Assert.Equal(1, valeur[1].UserId); + Assert.Equal(1, valeur[1].InquiryId); + Assert.True(valeur[1].IsFinished); + + + Assert.Equal(valeur[1].GetHashCode(), successesList[1].GetHashCode()); + Assert.True(valeur[1].Equals(successesList[1])); + Assert.False(valeur.Equals(new object())); + Assert.False(valeur.Equals(null)); + Assert.True(valeur.Equals(valeur)); + Assert.IsType(valeur[0]); + Assert.Contains(valeur[1], successesList); + } + } + + [Fact] + public void GetSuccessInquiryIdFail() + { + var successesList = GetSuccessesData(); + _successService.Setup(x => x.GetSuccessesByInquiryId(1)) + .Returns(new List { successesList[0], successesList[1] }); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var sucessesResult = successesController.GetSuccessByInquiryId(100); + if (sucessesResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, successesList); + } + } + + [Fact] + public void GetSuccessUserIdSuccess() + { + var successesList = GetSuccessesData(); + _successService.Setup(x => x.GetSuccessesByUserId(2)) + .Returns(new List { successesList[2], successesList[3] }); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var sucessesResult = successesController.GetSuccessByUserId(2); + if (sucessesResult is OkObjectResult okObjectResult) + { + List valeur = okObjectResult.Value as List; + + Assert.NotNull(valeur); + Assert.Equal(2, valeur[0].UserId); + Assert.Equal(3, valeur[0].InquiryId); + Assert.True(valeur[0].IsFinished); + Assert.Equal(2, valeur[1].UserId); + Assert.Equal(4, valeur[1].InquiryId); + Assert.True(valeur[1].IsFinished); + + + Assert.Equal(valeur[1].GetHashCode(), successesList[3].GetHashCode()); + Assert.True(valeur[1].Equals(successesList[3])); + Assert.False(valeur.Equals(new object())); + Assert.IsType(valeur[0]); + Assert.Contains(valeur[1], successesList); + } + } + + [Fact] + public void GetSuccessUserIdFail() + { + var successesList = GetSuccessesData(); + _successService.Setup(x => x.GetSuccessesByUserId(2)) + .Returns(new List { successesList[2], successesList[3] }); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var sucessesResult = successesController.GetSuccessByUserId(200); + if (sucessesResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, successesList); + } + } + + [Fact] + public void DeleteSuccessSuccess() + { + _successService.Setup(x => x.DeleteSuccess(1, 1)) + .Returns(true); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var sucessesResult = successesController.DeleteSuccess(1, 1); + if (sucessesResult is OkObjectResult okObjectResult) + { + bool valeur = (bool)okObjectResult.Value; + + Assert.True(valeur); + } + } + + [Fact] + public void DeleteSuccessFail() + { + _successService.Setup(x => x.DeleteSuccess(1, 1)) + .Returns(true); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var sucessesResult = successesController.DeleteSuccess(100, 278); + if (sucessesResult is NotFoundObjectResult nfObjectResult) + { + Assert.Null(nfObjectResult.Value); + Assert.IsNotType(nfObjectResult.Value); + } + } + + [Fact] + public void CreateSuccessSuccess() + { + _successService.Setup(x => x.CreateSuccess(8, 8, true)) + .Returns(new SuccessDto(8, 8, true)); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var successesResult = successesController.CreateSuccess(new SuccessDto(8, 8, true)); + if (successesResult is CreatedResult createdObjectResult) + { + SuccessDto valeur = createdObjectResult.Value as SuccessDto; + + Assert.NotNull(valeur); + Assert.Equal(8, valeur.UserId); + Assert.Equal(8, valeur.InquiryId); + Assert.True(valeur.IsFinished); + } + } + + [Fact] + public void CreateSuccessFail() + { + _successService.Setup(x => x.CreateSuccess(8, 8, true)) + .Returns(new SuccessDto(8, 8, true)); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var successesResult = successesController.CreateSuccess(new SuccessDto(882, 818, true)); + + if (successesResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + [Fact] + public void UpdateSuccessSuccess() + { + _successService.Setup(x => x.UpdateSuccess(1, 1, new SuccessDto(1, 1, true))) + .Returns(new SuccessDto(1, 1, true)); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var successesResult = successesController.UpdateSuccess(1, 1, new SuccessDto(1, 1, true)); + if (successesResult is OkObjectResult okObjectResult) + { + SuccessDto valeur = okObjectResult.Value as SuccessDto; + + Assert.NotNull(valeur); + Assert.Equal(1, valeur.UserId); + Assert.Equal(1, valeur.InquiryId); + Assert.True(valeur.IsFinished); + } + } + + [Fact] + public void UpdateSuccessFail() + { + _successService.Setup(x => x.UpdateSuccess(1, 1, new SuccessDto(1, 2, true))) + .Returns(new SuccessDto(1, 2, true)); + var successesController = + new SuccessesController(_successService.Object, new NullLogger()); + + var successesResult = successesController.UpdateSuccess(1, 1, new SuccessDto(1, 2, true)); + + if (successesResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + private List GetSuccessesData() + { + List successesData = new List(4) + { + new(0, 1, true), + new(1, 1, true), + new(2, 3, true), + new(2, 4, true), + }; + return successesData; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/TestAPI.csproj b/API_SQLuedo/TestAPI/TestAPI.csproj index f6cf968..a6cc9e9 100644 --- a/API_SQLuedo/TestAPI/TestAPI.csproj +++ b/API_SQLuedo/TestAPI/TestAPI.csproj @@ -22,6 +22,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -34,4 +35,8 @@ + + + + diff --git a/API_SQLuedo/TestAPI/UnitTest1.cs b/API_SQLuedo/TestAPI/UnitTest1.cs deleted file mode 100644 index c22e82f..0000000 --- a/API_SQLuedo/TestAPI/UnitTest1.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace TestAPI -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - } -} \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/UserUnitTest.cs b/API_SQLuedo/TestAPI/UserUnitTest.cs new file mode 100644 index 0000000..90d5045 --- /dev/null +++ b/API_SQLuedo/TestAPI/UserUnitTest.cs @@ -0,0 +1,281 @@ +using API.Controllers; +using Dto; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Shared; +using TestAPI.Extensions; + +namespace TestAPI; + +public class UserUnitTest +{ + private readonly Mock> _userService; + + public UserUnitTest() + { + _userService = new Mock>(); + } + + [Fact] + public void GetUserListSuccess() + { + var userList = GetUsersData(); + _userService.Setup(x => x.GetUsers(1, 4, 0)) + .Returns(userList); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.GetUsers(1, 4, 0); + + if (userResult is OkObjectResult okObjectResult) + { + var valeur = okObjectResult.Value; + + Assert.NotNull(valeur); + Assert.Equal(GetUsersData().ToString(), valeur.ToString()); + Assert.True(userList.SequenceEqual(valeur as IEnumerable, new UserIdEqualityComparer())); + } + } + + [Fact] + public void GetUserListFail() + { + _userService.Setup(x => x.GetUsers(1, 4, 0)) + .Returns(new List()); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.GetUsers(2, 3, 0); + + if (userResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204) + + { + Assert.IsNotType(userResult); + } + } + + + [Fact] + public void GetUserIdSuccess() + { + var userList = GetUsersData(); + _userService.Setup(x => x.GetUserById(1)) + .Returns(userList[1]); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.GetUserById(1); + if (userResult is OkObjectResult okObjectResult) + { + UserDto valeur = okObjectResult.Value as UserDto; + + Assert.NotNull(valeur); + Assert.Equal("Leuser", valeur.Username); + Assert.Equal("motdepasse", valeur.Password); + Assert.Equal("deuxadresse@gmail.com", valeur.Email); + Assert.IsType(valeur); + Assert.Contains(valeur, userList); + } + } + + [Fact] + public void GetUserIdFail() + { + var userList = GetUsersData(); + _userService.Setup(x => x.GetUserById(1)) + .Returns(userList[1]); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.GetUserById(100); + if (userResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, userList); + } + } + + [Fact] + public void GetUserUsernameSuccess() + { + var userList = GetUsersData(); + _userService.Setup(x => x.GetUserByUsername("Useruser")) + .Returns(userList[0]); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.GetUserByUsername("Useruser"); + if (userResult is OkObjectResult okObjectResult) + { + UserDto valeur = okObjectResult.Value as UserDto; + + Assert.NotNull(valeur); + Assert.IsType(valeur); + Assert.Contains(valeur, userList); + Assert.Equal("adressemail@gmail.com", valeur.Email); + Assert.Equal("Useruser", valeur.Username); + Assert.Equal("motdepasse", valeur.Password); + Assert.True(valeur.IsAdmin); + } + } + + [Fact] + public void GetUserUsernameFail() + { + var userList = GetUsersData(); + _userService.Setup(x => x.GetUserByUsername("Useruser")) + .Returns(userList[0]); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.GetUserByUsername("GYIIieihhh"); + + if (userResult is NotFoundObjectResult nfObjectResult) + { + var valeur = nfObjectResult.Value; + + Assert.NotNull(valeur); + Assert.IsNotType(valeur); + Assert.DoesNotContain(valeur, userList); + Assert.False(userList == valeur); + } + } + + [Fact] + public void DeleteUserSuccess() + { + _userService.Setup(x => x.DeleteUser(1)) + .Returns(true); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.DeleteUser(1); + if (userResult is OkObjectResult okObjectResult) + { + bool valeur = (bool)okObjectResult.Value; + + Assert.True(valeur); + } + } + + [Fact] + public void DeleteUserFail() + { + _userService.Setup(x => x.DeleteUser(1)) + .Returns(true); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.DeleteUser(100); + if (userResult is NotFoundObjectResult nfObjectResult) + { + Assert.Null(nfObjectResult.Value); + Assert.IsNotType(nfObjectResult.Value); + } + } + + [Fact] + public void CreateUserSuccess() + { + _userService.Setup(x => x.CreateUser("Nom", "Passssss", "heudfk@hdye.com", true)) + .Returns(new UserDto("Nom", "Passssss", "heudfk@hdye.com", true)); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.CreateUser(new UserDto("Nom", "Passssss", "heudfk@hdye.com", true)); + if (userResult is CreatedResult createdObjectResult) + { + UserDto valeur = createdObjectResult.Value as UserDto; + + Assert.NotNull(valeur); + Assert.Equal("Nom", valeur.Username); + Assert.Equal("Passssss", valeur.Password); + Assert.Equal("heudfk@hdye.com", valeur.Email); + Assert.True(valeur.IsAdmin); + } + } + + [Fact] + public void CreateUserFail() + { + GetUsersData(); + _userService.Setup(x => x.CreateUser("Nom", "Passssss", "heudfk@hdye.com", true)) + .Returns(new UserDto("Nom", "Passssss", "heudfk@hdye.com", true)); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.CreateUser(new UserDto(null, "Passssss", "heudfk@hdye.com", true)); + + if (userResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + [Fact] + public void UpdateUserSuccess() + { + _userService.Setup(x => x.UpdateUser(1, new UserDto("Nom", "Passssss", "heudfk@hdye.com", true))) + .Returns(new UserDto("Nom", "Passssss", "heudfk@hdye.com", true)); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto("Nom", "Passssss", "heudfk@hdye.com", true)); + if (userResult is OkObjectResult okObjectResult) + { + UserDto valeur = okObjectResult.Value as UserDto; + + Assert.NotNull(valeur); + Assert.Equal("Nom", valeur.Username); + Assert.Equal("Passssss", valeur.Password); + Assert.Equal("heudfk@hdye.com", valeur.Email); + Assert.True(valeur.IsAdmin); + } + } + + [Fact] + public void UpdateUserFail() + { + _userService.Setup(x => x.UpdateUser(1, new UserDto(1, "Nom", "Passssss", "heudfk@hdye.com", true))) + .Returns(new UserDto("Nom", "Passssss", "heudfk@hdye.com", true)); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto(2, "Nom", "Passssss", "heudfk@hdye.com", true)); + + if (userResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + + private List GetUsersData() + { + List usersData = new List(4) + { + new( + 0, + "Useruser", + "motdepasse", + "adressemail@gmail.com", + true + ), + new + ( + 1, + "Leuser", + "motdepasse", + "deuxadresse@gmail.com", + false + ), + new + ( + 2, + "gygyggyg", + "ennodlavehc", + "thirdadress@gmail.com", + false + ), + new + ( + "ferferf", + "h_nh_78", + "fourthadress@gmail.com", + false + ), + }; + return usersData; + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 19866e9..1bea860 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -1,20 +1,25 @@ // See https://aka.ms/new-console-template for more information using API.Controllers; +using API.Service; using DbContextLib; +using DbDataManager.Service; using Dto; using Microsoft.AspNetCore.Mvc; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Model.OrderCriteria; -using Shared; +using Service_LessonDataService = DbDataManager.Service.LessonDataService; +using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService; +using Service_SuccessDataService = DbDataManager.Service.SuccessDataService; +using Service_UserDataService = DbDataManager.Service.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); var options = new DbContextOptionsBuilder() - .UseSqlite(connection) - .Options; + .UseSqlite(connection) + .Options; using ILoggerFactory factory = new LoggerFactory(); ILogger userLogger = factory.CreateLogger(); ILogger inquiryLogger = factory.CreateLogger(); @@ -25,17 +30,22 @@ ILogger successLogger = factory.CreateLogger) + foreach (var item in users.Value as IEnumerable) { Console.WriteLine(item); } @@ -45,7 +55,7 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(); var inquiries = inquiryController.GetInquiries(1, 10, InquiryOrderCriteria.None) as OkObjectResult; - foreach (var item in inquiries.Value as IEnumerable) + foreach (var item in inquiries.Value as IEnumerable) { Console.WriteLine(item); } @@ -55,7 +65,7 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(); var paragraphs = paragraphController.GetParagraphs(1, 10, ParagraphOrderCriteria.None) as OkObjectResult; - foreach (var item in paragraphs.Value as IEnumerable) + foreach (var item in paragraphs.Value as IEnumerable) { Console.WriteLine(item); } @@ -65,7 +75,7 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(); var lessons = lessonController.GetLessons(1, 10, LessonOrderCriteria.None) as OkObjectResult; - foreach (var item in lessons.Value as IEnumerable) + foreach (var item in lessons.Value as IEnumerable) { Console.WriteLine(item); } @@ -75,7 +85,7 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(); var successes = successController.GetSuccesses(1, 10, SuccessOrderCriteria.None) as OkObjectResult; - foreach (var item in successes.Value as IEnumerable) + foreach (var item in successes.Value as IEnumerable) { Console.WriteLine(item); } @@ -91,8 +101,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(user.Value as UserDTO); + Console.WriteLine(user.Value as UserDto); } void SearchInquiryByTitle() @@ -105,7 +115,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(inquiry.Value as InquiryDTO); + + Console.WriteLine(inquiry.Value as InquiryDto); } void SearchParagraphByTitle() @@ -118,8 +129,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(paragraph.Value as ParagraphDTO); + Console.WriteLine(paragraph.Value as ParagraphDto); } void SearchLessonByTitle() @@ -132,8 +143,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(lesson.Value as LessonDTO); + Console.WriteLine(lesson.Value as LessonDto); } void SearchSuccessByUserId() @@ -146,8 +157,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(success.Value as SuccessDTO); + Console.WriteLine(success.Value as SuccessDto); } void SearchUserById() @@ -160,8 +171,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(user.Value as UserDTO); + Console.WriteLine(user.Value as UserDto); } void SearchInquiryById() @@ -174,7 +185,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(inquiry.Value as InquiryDTO); + + Console.WriteLine(inquiry.Value as InquiryDto); } void SearchParagraphById() @@ -187,8 +199,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(paragraph.Value as ParagraphDTO); + Console.WriteLine(paragraph.Value as ParagraphDto); } void SearchSuccessByInquiryId() @@ -201,8 +213,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(success.Value as SuccessDTO); + Console.WriteLine(success.Value as SuccessDto); } void SearchLessonById() @@ -215,8 +227,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur, la requête n'a rien donné."); return; } - Console.WriteLine(lesson.Value as LessonDTO); + Console.WriteLine(lesson.Value as LessonDto); } void AddUser() @@ -227,7 +239,7 @@ using (var context = new UserDbContext(options)) var email = Console.ReadLine(); Console.WriteLine("Veuillez saisir un mot de passe :"); var mdp = Console.ReadLine(); - var res = userController.CreateUser(new UserDTO(username, mdp, email, false)); + var res = userController.CreateUser(new UserDto(username, mdp, email, false)); if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nUtilisateur créé avec succès"); @@ -236,7 +248,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("\nErreur lors de la création de l'utilisateur !"); } - } void AddInquiry() @@ -251,7 +262,7 @@ using (var context = new UserDbContext(options)) var database = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Veuillez saisir l'id de la solution :"); var solution = Convert.ToInt32(Console.ReadLine()); - var res = inquiryController.CreateInquiry(new InquiryDTO(title, description, false)); + var res = inquiryController.CreateInquiry(new InquiryDto(title, description, false)); if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nEnquête créée avec succès"); @@ -276,7 +287,7 @@ using (var context = new UserDbContext(options)) var comment = Console.ReadLine(); Console.WriteLine("Veuillez saisir l'id de la leçon :"); var lesson = Convert.ToInt32(Console.ReadLine()); - var res = paragraphController.CreateParagraph(new ParagraphDTO(title, content, info, query, comment, lesson)); + var res = paragraphController.CreateParagraph(new ParagraphDto(title, content, info, query, comment, lesson)); if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nParagraphe créé avec succès"); @@ -285,7 +296,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("\nErreur lors de la création du paragraphe !"); } - } void AddLesson() @@ -294,7 +304,8 @@ using (var context = new UserDbContext(options)) var title = Console.ReadLine(); Console.WriteLine("Veuillez saisir votre nom :"); var lastPublisher = Console.ReadLine(); - var res = lessonController.CreateLesson(new LessonDTO(title, lastPublisher, DateOnly.FromDateTime(DateTime.Now))); + var res = lessonController.CreateLesson( + new LessonDto(title, lastPublisher, DateOnly.FromDateTime(DateTime.Now))); if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nLeçon créée avec succès"); @@ -303,7 +314,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("\nErreur lors de la création de la leçon !"); } - } void AddSuccess() @@ -314,7 +324,8 @@ using (var context = new UserDbContext(options)) var inquiryId = Console.ReadLine(); Console.WriteLine("Veuillez indiquer si l'enquête a été complété (true/false) :"); var isFinished = Console.ReadLine(); - var res = successController.CreateSuccess(new SuccessDTO(int.Parse(userId), int.Parse(inquiryId), bool.Parse(isFinished))); + var res = successController.CreateSuccess(new SuccessDto(int.Parse(userId), int.Parse(inquiryId), + bool.Parse(isFinished))); if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nSuccès créé avec succès"); @@ -323,7 +334,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("\nErreur lors de la création du succès !"); } - } void UpdateUser() @@ -333,7 +343,7 @@ using (var context = new UserDbContext(options)) var res = (userController.GetUserById(id)); if (res.GetType() == typeof(OkObjectResult)) { - var user = (res as OkObjectResult).Value as UserDTO; + var user = (res as OkObjectResult).Value as UserDto; if (user == null) { Console.WriteLine("Erreur, un problème est survenu"); @@ -346,7 +356,8 @@ using (var context = new UserDbContext(options)) var username = Console.ReadLine(); Console.WriteLine("Veuillez saisir l'email :"); var email = Console.ReadLine(); - var retour = userController.UpdateUser(id, new UserDTO(id, username, user.Password, email, user.IsAdmin)); + var retour = + userController.UpdateUser(id, new UserDto(id, username, user.Password, email, user.IsAdmin)); if (retour.GetType() == typeof(OkObjectResult)) { Console.WriteLine("Mise à jour effectué avec succès !"); @@ -361,7 +372,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } void UpdateInquiry() @@ -371,7 +381,7 @@ using (var context = new UserDbContext(options)) var res = (inquiryController.GetInquiryById(id)); if (res.GetType() == typeof(OkObjectResult)) { - var user = (res as OkObjectResult).Value as InquiryDTO; + var user = (res as OkObjectResult).Value as InquiryDto; if (user == null) { Console.WriteLine("Erreur, un problème est survenu"); @@ -390,7 +400,8 @@ using (var context = new UserDbContext(options)) var database = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Veuillez saisir un commentaire :"); var inquiryTable = Convert.ToInt32(Console.ReadLine()); - var retour = inquiryController.UpdateInquiry(id, new InquiryDTO(id, title, description, bool.Parse(isUser))); + var retour = + inquiryController.UpdateInquiry(id, new InquiryDto(id, title, description, bool.Parse(isUser))); if (retour.GetType() == typeof(OkObjectResult)) { Console.WriteLine("Mise à jour effectué avec succès !"); @@ -405,7 +416,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } void UpdateParagraph() @@ -415,7 +425,7 @@ using (var context = new UserDbContext(options)) var res = (paragraphController.GetParagraphById(id)); if (res.GetType() == typeof(OkObjectResult)) { - var paragraph = (res as OkObjectResult).Value as ParagraphDTO; + var paragraph = (res as OkObjectResult).Value as ParagraphDto; if (paragraph == null) { Console.WriteLine("Erreur, un problème est survenu"); @@ -436,7 +446,8 @@ using (var context = new UserDbContext(options)) var comment = Console.ReadLine(); Console.WriteLine("Veuillez saisir l'id de la leçon :"); var lesson = Convert.ToInt32(Console.ReadLine()); - var retour = paragraphController.UpdateParagraph(id, new ParagraphDTO(id, title, content, info, query, comment, lesson)); + var retour = paragraphController.UpdateParagraph(id, + new ParagraphDto(id, title, content, info, query, comment, lesson)); if (retour.GetType() == typeof(OkObjectResult)) { Console.WriteLine("Mise à jour effectué avec succès !"); @@ -451,7 +462,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } void UpdateLesson() @@ -461,7 +471,7 @@ using (var context = new UserDbContext(options)) var res = (lessonController.GetLessonById(id)); if (res.GetType() == typeof(OkObjectResult)) { - var lesson = (res as OkObjectResult).Value as LessonDTO; + var lesson = (res as OkObjectResult).Value as LessonDto; if (lesson == null) { Console.WriteLine("Erreur, un problème est survenu"); @@ -474,7 +484,8 @@ using (var context = new UserDbContext(options)) var title = Console.ReadLine(); Console.WriteLine("Veuillez saisir votre nom :"); var lastPublisher = Console.ReadLine(); - var retour = lessonController.UpdateLesson(id, new LessonDTO(id, title, lastPublisher, DateOnly.FromDateTime(DateTime.Now))); + var retour = lessonController.UpdateLesson(id, + new LessonDto(id, title, lastPublisher, DateOnly.FromDateTime(DateTime.Now))); if (retour.GetType() == typeof(OkObjectResult)) { Console.WriteLine("Mise à jour effectué avec succès !"); @@ -489,7 +500,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } void UpdateSuccess() @@ -499,7 +509,7 @@ using (var context = new UserDbContext(options)) var res = (successController.GetSuccessByUserId(id)); if (res.GetType() == typeof(OkObjectResult)) { - var lesson = (res as OkObjectResult).Value as SuccessDTO; + var lesson = (res as OkObjectResult).Value as SuccessDto; if (lesson == null) { Console.WriteLine("Erreur, un problème est survenu"); @@ -509,12 +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 !"); @@ -529,7 +540,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } void DeleteUser() @@ -545,7 +555,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Erreur lors de la suppression !"); } - } void DeleteInquiry() @@ -576,7 +585,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Erreur lors de la suppression !"); } - } void DeleteLesson() @@ -592,14 +600,15 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Erreur lors de la suppression !"); } - } 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 !"); @@ -608,7 +617,6 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("Erreur lors de la suppression !"); } - } void MenuUsers() @@ -747,6 +755,7 @@ using (var context = new UserDbContext(options)) default: break; } + Console.WriteLine("\nAppuyez sur n'importe quelle touche pour continuer..."); Console.ReadKey(); Console.Clear(); @@ -771,7 +780,7 @@ using (var context = new UserDbContext(options)) } else { - var users = res as IEnumerable; + var users = res as IEnumerable; if (users == null) { Console.WriteLine("\nErreur, les ustilisateurs n'ont pas été trouvés !"); @@ -827,7 +836,7 @@ using (var context = new UserDbContext(options)) // Ajout d'un utilisateur Console.WriteLine("\n##########################################################\n"); Console.WriteLine("Création de l'utilisateur :\n"); - var user2 = new UserDTO("JohnDoe", "motdepasse", "johndoe@gmail.com", false); + var user2 = new UserDto("JohnDoe", "motdepasse", "johndoe@gmail.com", false); Console.WriteLine(user2); var res3 = userController.CreateUser(user2); if (res3 == null) @@ -854,7 +863,7 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(user2); Console.WriteLine("\nNouvelle adresse : John.DOE@etu.uca.fr"); - var user3 = new UserDTO(user2.Id, user2.Username, user2.Password, "John.DOE@etu.uca.fr", user2.IsAdmin); + var user3 = new UserDto(user2.Id, user2.Username, user2.Password, "John.DOE@etu.uca.fr", user2.IsAdmin); var res4 = userController.UpdateUser(1, user3); if (res4 == null) { diff --git a/API_SQLuedo/TestConsoleEf/Program.cs b/API_SQLuedo/TestConsoleEf/Program.cs index 57aa45b..42a14e8 100644 --- a/API_SQLuedo/TestConsoleEf/Program.cs +++ b/API_SQLuedo/TestConsoleEf/Program.cs @@ -166,7 +166,7 @@ using (var db = new StubbedContext(options)) // Affichage de la solution de l'enquete sur les orang outan Console.WriteLine("\nAffichage de la solution de l'enquete sur les orang outan"); - + var inquiryEntity = await inquiries.FirstOrDefaultAsync(i => i.Title == "L'enquête sur les orang outan"); var solution = await solutions.FirstOrDefaultAsync(s => s.OwnerId == inquiryEntity.Id); foreach (var pptt in typeof(SolutionEntity).GetProperties() diff --git a/API_SQLuedo/TestEF/Dto/TestInquiryDTO.cs b/API_SQLuedo/TestEF/Dto/TestInquiryDTO.cs index 966c29f..e25e9ee 100644 --- a/API_SQLuedo/TestEF/Dto/TestInquiryDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestInquiryDTO.cs @@ -2,7 +2,7 @@ using Dto; namespace TestEF.Dto; -public class TestInquiryDTO +public class TestInquiryDto { private const int _id = 1; private const string _title = "Title"; @@ -12,7 +12,7 @@ public class TestInquiryDTO [Fact] public void TestConstructorWithId() { - InquiryDTO inquiry = new InquiryDTO(_id, _title, _description, _isUser); + InquiryDto inquiry = new InquiryDto(_id, _title, _description, _isUser); Assert.Equal(_id, inquiry.Id); Assert.Equal(_title, inquiry.Title); Assert.Equal(_description, inquiry.Description); @@ -22,7 +22,7 @@ public class TestInquiryDTO [Fact] public void TestConstructorWithoutId() { - InquiryDTO inquiry = new InquiryDTO(_title,_description,_isUser); + InquiryDto inquiry = new InquiryDto(_title,_description,_isUser); Assert.Equal(0, inquiry.Id); Assert.Equal(_title,inquiry.Title); Assert.Equal(_description,inquiry.Description); @@ -32,7 +32,7 @@ public class TestInquiryDTO [Fact] public void TestConstructorWithAllAttributes() { - InquiryDTO inquiry = new InquiryDTO(_id,_title,_description,_isUser); + InquiryDto inquiry = new InquiryDto(_id,_title,_description,_isUser); Assert.Equal(_id, inquiry.Id); Assert.Equal(_title,inquiry.Title); Assert.Equal(_description,inquiry.Description); diff --git a/API_SQLuedo/TestEF/Dto/TestInquiryTableDTO.cs b/API_SQLuedo/TestEF/Dto/TestInquiryTableDTO.cs index 93be409..4718c3f 100644 --- a/API_SQLuedo/TestEF/Dto/TestInquiryTableDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestInquiryTableDTO.cs @@ -2,25 +2,25 @@ using Dto; namespace TestEF.Dto; -public class TestInquiryTableDTO +public class TestInquiryTableDto { - private const int _id = 1; - private const string _database = "database"; - private const string _connection = "_connection"; + private const int Id = 1; + private const string Database = "database"; + private const string Connection = "_connection"; [Fact] public void TestConstructorWithId() { - InquiryTableDTO inquiry = new InquiryTableDTO(_id, _database, _connection); - Assert.Equal(_id, inquiry.OwnerId); - Assert.Equal(_database, inquiry.DatabaseName); - Assert.Equal(_connection, inquiry.ConnectionInfo); + InquiryTableDto inquiry = new InquiryTableDto(Id, Database, Connection); + Assert.Equal(Id, inquiry.OwnerId); + Assert.Equal(Database, inquiry.DatabaseName); + Assert.Equal(Connection, inquiry.ConnectionInfo); } [Fact] public void TestDefaultConstructor() { - InquiryTableDTO inquiry = new InquiryTableDTO(); + InquiryTableDto inquiry = new InquiryTableDto(); Assert.Equal(0, inquiry.OwnerId); Assert.Null(inquiry.DatabaseName); Assert.Null(inquiry.ConnectionInfo); diff --git a/API_SQLuedo/TestEF/Dto/TestLessonDTO.cs b/API_SQLuedo/TestEF/Dto/TestLessonDTO.cs index ec46211..0fb5b1a 100644 --- a/API_SQLuedo/TestEF/Dto/TestLessonDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestLessonDTO.cs @@ -2,40 +2,41 @@ using Dto; namespace TestEF.Dto; -public class TestLessonDTO +public class TestLessonDto { - private const int _id = 42; - private const string _title = "Title"; - private const string _lastPublisher = "Last Publisher"; - private static DateOnly _lastEdit = new DateOnly(); + private const int Id = 42; + private const string Title = "Title"; + private const string LastPublisher = "Last Publisher"; + private static readonly DateOnly LastEdit = new(); [Fact] public void TestDefaultConstructor() { - LessonDTO lesson = new LessonDTO(); + LessonDto lesson = new LessonDto(); Assert.Equal(0, lesson.Id); Assert.Null(lesson.Title); Assert.Null(lesson.LastPublisher); - Assert.Null(lesson.LastEdit); + // Default date + Assert.Equal(new DateOnly(0001, 01, 01), LastEdit); } - + [Fact] public void TestConstructorWithoutId() { - LessonDTO lesson = new LessonDTO(_title,_lastPublisher,_lastEdit); + LessonDto lesson = new LessonDto(Title, LastPublisher, LastEdit); Assert.Equal(0, lesson.Id); - Assert.Equal(_title,lesson.Title); - Assert.Equal(_lastPublisher,lesson.LastPublisher); - Assert.Equal(_lastEdit,lesson.LastEdit); + Assert.Equal(Title, lesson.Title); + Assert.Equal(LastPublisher, lesson.LastPublisher); + Assert.Equal(LastEdit, lesson.LastEdit); } - + [Fact] public void TestConstructorWithAllAttributes() { - LessonDTO lesson = new LessonDTO(_id,_title,_lastPublisher,_lastEdit); - Assert.Equal(_id, lesson.Id); - Assert.Equal(_title,lesson.Title); - Assert.Equal(_lastPublisher,lesson.LastPublisher); - Assert.Equal(_lastEdit,lesson.LastEdit); + LessonDto lesson = new LessonDto(Id, Title, LastPublisher, LastEdit); + Assert.Equal(Id, lesson.Id); + Assert.Equal(Title, lesson.Title); + Assert.Equal(LastPublisher, lesson.LastPublisher); + Assert.Equal(LastEdit, lesson.LastEdit); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/Dto/TestNotepadDTO.cs b/API_SQLuedo/TestEF/Dto/TestNotepadDTO.cs index ad76d8a..903f09a 100644 --- a/API_SQLuedo/TestEF/Dto/TestNotepadDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestNotepadDTO.cs @@ -2,17 +2,17 @@ using Dto; namespace TestEF.Dto; -public class TestNotepadDTO +public class TestNotepadDto { - private const int _id = 42; - private const int _userId = 42; - private const int _inquiryId = 42; - private const string _notes = "This is some notes example"; + private const int Id = 42; + private const int UserId = 42; + private const int InquiryId = 42; + private const string Notes = "This is some notes example"; [Fact] public void TestDefaultConstructor() { - NotepadDTO notepad = new NotepadDTO(); + NotepadDto notepad = new NotepadDto(); Assert.Equal(0,notepad.Id); Assert.Equal(0,notepad.UserId); Assert.Equal(0,notepad.InquiryId); @@ -22,20 +22,20 @@ public class TestNotepadDTO [Fact] public void TestConstructorWithoutId() { - NotepadDTO notepad = new NotepadDTO(_userId,_inquiryId,_notes); + NotepadDto notepad = new NotepadDto(UserId,InquiryId,Notes); Assert.Equal(0,notepad.Id); - Assert.Equal(_userId,notepad.UserId); - Assert.Equal(_inquiryId,notepad.InquiryId); - Assert.Equal(_notes,notepad.Notes); + Assert.Equal(UserId,notepad.UserId); + Assert.Equal(InquiryId,notepad.InquiryId); + Assert.Equal(Notes,notepad.Notes); } [Fact] public void TestConstructorWithAllAttributes() { - NotepadDTO notepad = new NotepadDTO(_id,_userId,_inquiryId,_notes); - Assert.Equal(_id,notepad.Id); - Assert.Equal(_userId,notepad.UserId); - Assert.Equal(_inquiryId,notepad.InquiryId); - Assert.Equal(_notes,notepad.Notes); + NotepadDto notepad = new NotepadDto(Id,UserId,InquiryId,Notes); + Assert.Equal(Id,notepad.Id); + Assert.Equal(UserId,notepad.UserId); + Assert.Equal(InquiryId,notepad.InquiryId); + Assert.Equal(Notes,notepad.Notes); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/Dto/TestParagraphDTO.cs b/API_SQLuedo/TestEF/Dto/TestParagraphDTO.cs index 95dee02..5e92cc3 100644 --- a/API_SQLuedo/TestEF/Dto/TestParagraphDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestParagraphDTO.cs @@ -2,19 +2,19 @@ using Dto; namespace TestEF.Dto; -public class TestParagraphDTO +public class TestParagraphDto { - private const int _id = 42; - private const string _title = "Title"; - private const string _info = "Info"; - private const string _content = "Content"; - private const string _query = "Query"; - private const string _comment = "Comment"; + private const int Id = 42; + private const string Title = "Title"; + private const string Info = "Info"; + private const string Content = "Content"; + private const string Query = "Query"; + private const string Comment = "Comment"; [Fact] public void TestDefaultConstructor() { - ParagraphDTO paragraph = new ParagraphDTO(); + ParagraphDto paragraph = new ParagraphDto(); Assert.Equal(0, paragraph.Id); Assert.Null(paragraph.Title); Assert.Null(paragraph.Info); @@ -26,25 +26,25 @@ public class TestParagraphDTO [Fact] public void TestConstructorWithoutId() { - ParagraphDTO paragraph = new ParagraphDTO(_title,_content,_info,_query,_comment, 10); + ParagraphDto paragraph = new ParagraphDto(Title,Content,Info,Query,Comment, 10); Assert.Equal(0, paragraph.Id); - Assert.Equal(_title,paragraph.Title); - Assert.Equal(_info,paragraph.Info); - Assert.Equal(_content,paragraph.Content); - Assert.Equal(_query,paragraph.Query); - Assert.Equal(_comment,paragraph.Comment); + Assert.Equal(Title,paragraph.Title); + Assert.Equal(Info,paragraph.Info); + Assert.Equal(Content,paragraph.Content); + Assert.Equal(Query,paragraph.Query); + Assert.Equal(Comment,paragraph.Comment); } [Fact] public void TestConstructorWithAllAttributes() { - ParagraphDTO paragraph = new ParagraphDTO(_id,_title,_content,_info,_query,_comment,10); - Assert.Equal(_id, paragraph.Id); - Assert.Equal(_title,paragraph.Title); - Assert.Equal(_info,paragraph.Info); - Assert.Equal(_content,paragraph.Content); - Assert.Equal(_query,paragraph.Query); - Assert.Equal(_comment,paragraph.Comment); + ParagraphDto paragraph = new ParagraphDto(Id,Title,Content,Info,Query,Comment,10); + Assert.Equal(Id, paragraph.Id); + Assert.Equal(Title,paragraph.Title); + Assert.Equal(Info,paragraph.Info); + Assert.Equal(Content,paragraph.Content); + Assert.Equal(Query,paragraph.Query); + Assert.Equal(Comment,paragraph.Comment); Assert.Equal(10, paragraph.LessonId); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/Dto/TestSolutionDTO.cs b/API_SQLuedo/TestEF/Dto/TestSolutionDTO.cs index 7a137b2..d9d9423 100644 --- a/API_SQLuedo/TestEF/Dto/TestSolutionDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestSolutionDTO.cs @@ -2,19 +2,19 @@ using Dto; namespace TestEF.Dto; -public class TestSolutionDTO +public class TestSolutionDto { - private const string _murdererFirstName = "John"; - private const string _murdererLastName = "Doe"; - private const string _murderPlace = "WhiteHouse"; - private const string _murderWeapon = "Nuclear Bomb"; - private const string _explaination = "This is an explaination"; - private const int _inquiryId = 42; + private const string MurdererFirstName = "John"; + private const string MurdererLastName = "Doe"; + private const string MurderPlace = "WhiteHouse"; + private const string MurderWeapon = "Nuclear Bomb"; + private const string Explaination = "This is an explaination"; + private const int InquiryId = 42; [Fact] public void TestDefaultConstructor() { - SolutionDTO solution = new SolutionDTO(); + SolutionDto solution = new SolutionDto(); Assert.Equal(0,solution.OwnerId); Assert.Null(solution.MurdererFirstName); Assert.Null(solution.MurdererLastName); @@ -25,24 +25,24 @@ public class TestSolutionDTO [Fact] public void TestConstructorWithoutOwnerId() { - SolutionDTO solution = new SolutionDTO(_murdererFirstName,_murdererLastName,_murderPlace,_murderWeapon, _explaination); + SolutionDto solution = new SolutionDto(MurdererFirstName,MurdererLastName,MurderPlace,MurderWeapon, Explaination); Assert.Equal(0,solution.OwnerId); - Assert.Equal(_murdererFirstName,solution.MurdererFirstName); - Assert.Equal(_murdererLastName,solution.MurdererLastName); - Assert.Equal(_murderPlace,solution.MurderPlace); - Assert.Equal(_murderWeapon,solution.MurderWeapon); - Assert.Equal(_explaination, solution.Explanation); + Assert.Equal(MurdererFirstName,solution.MurdererFirstName); + Assert.Equal(MurdererLastName,solution.MurdererLastName); + Assert.Equal(MurderPlace,solution.MurderPlace); + Assert.Equal(MurderWeapon,solution.MurderWeapon); + Assert.Equal(Explaination, solution.Explanation); } [Fact] public void TestConstructorWithAllAttributes() { - SolutionDTO solution = new SolutionDTO(_inquiryId,_murdererFirstName,_murdererLastName,_murderPlace,_murderWeapon, _explaination); - Assert.Equal(_inquiryId,solution.OwnerId); - Assert.Equal(_murdererFirstName,solution.MurdererFirstName); - Assert.Equal(_murdererLastName,solution.MurdererLastName); - Assert.Equal(_murderPlace,solution.MurderPlace); - Assert.Equal(_murderWeapon,solution.MurderWeapon); - Assert.Equal(_explaination, solution.Explanation); + SolutionDto solution = new SolutionDto(InquiryId,MurdererFirstName,MurdererLastName,MurderPlace,MurderWeapon, Explaination); + Assert.Equal(InquiryId,solution.OwnerId); + Assert.Equal(MurdererFirstName,solution.MurdererFirstName); + Assert.Equal(MurdererLastName,solution.MurdererLastName); + Assert.Equal(MurderPlace,solution.MurderPlace); + Assert.Equal(MurderWeapon,solution.MurderWeapon); + Assert.Equal(Explaination, solution.Explanation); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/Dto/TestSuccessDTO.cs b/API_SQLuedo/TestEF/Dto/TestSuccessDTO.cs index 097e35d..7be75f4 100644 --- a/API_SQLuedo/TestEF/Dto/TestSuccessDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestSuccessDTO.cs @@ -2,27 +2,27 @@ using Dto; namespace TestEF.Dto; -public class TestSuccessDTO +public class TestSuccessDto { - private const int _userId = 42; - private const int _inquiryId = 7; - private const bool _isFinished = true; + private const int UserId = 42; + private const int InquiryId = 7; + private const bool IsFinished = true; [Fact] public void TestDefaultConstructor() { - SuccessDTO success = new SuccessDTO(); + SuccessDto success = new SuccessDto(); Assert.Equal(0, success.UserId); Assert.Equal(0, success.InquiryId); Assert.False(success.IsFinished); - } - + } + [Fact] public void TestConstructorWithIds() { - SuccessDTO success = new SuccessDTO(_userId, _inquiryId, _isFinished); - Assert.Equal(_userId, success.UserId); - Assert.Equal(_inquiryId, success.InquiryId); + SuccessDto success = new SuccessDto(UserId, InquiryId, IsFinished); + Assert.Equal(UserId, success.UserId); + Assert.Equal(InquiryId, success.InquiryId); Assert.True(success.IsFinished); - } + } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/Dto/TestUserDTO.cs b/API_SQLuedo/TestEF/Dto/TestUserDTO.cs index b1e68ca..faff408 100644 --- a/API_SQLuedo/TestEF/Dto/TestUserDTO.cs +++ b/API_SQLuedo/TestEF/Dto/TestUserDTO.cs @@ -2,18 +2,18 @@ using Dto; namespace TestEF.Dto { - public class TestUserDTO + public class TestUserDto { - private const string _username = "username"; - private const string _email = "example@email.com"; - private const string _password = "password"; - private const bool _isAdmin = true; - private const int _id = 42; + private const string Username = "username"; + private const string Email = "example@email.com"; + private const string Password = "password"; + private const bool IsAdmin = true; + private const int Id = 42; [Fact] public void TestDefaultConstructor() { - UserDTO user = new UserDTO(); + UserDto user = new UserDto(); Assert.Equal(0,user.Id); Assert.Null(user.Username); Assert.Null(user.Email); @@ -24,22 +24,22 @@ namespace TestEF.Dto [Fact] public void TestConstructorWithoutId() { - UserDTO user = new UserDTO(_username, _password, _email, _isAdmin); + UserDto user = new UserDto(Username, Password, Email, IsAdmin); Assert.Equal(0,user.Id); - Assert.Equal(_username, user.Username); - Assert.Equal(_email, user.Email); - Assert.Equal(_password, user.Password); + Assert.Equal(Username, user.Username); + Assert.Equal(Email, user.Email); + Assert.Equal(Password, user.Password); Assert.True(user.IsAdmin); } [Fact] public void TestConstructorWithoutAllAttributes() { - UserDTO user = new UserDTO(_id, _username, _password, _email, _isAdmin); - Assert.Equal(_id,user.Id); - Assert.Equal(_username, user.Username); - Assert.Equal(_email, user.Email); - Assert.Equal(_password, user.Password); + UserDto user = new UserDto(Id, Username, Password, Email, IsAdmin); + Assert.Equal(Id,user.Id); + Assert.Equal(Username, user.Username); + Assert.Equal(Email, user.Email); + Assert.Equal(Password, user.Password); Assert.True(user.IsAdmin); } } diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs index 8803ac3..90281fd 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs @@ -5,7 +5,7 @@ namespace TestEF.EntitiesTests; public class TestInquiryTableEntity { private const int InquiryId = 42; - private static readonly InquiryEntity Inquiry = new (); + private static readonly InquiryEntity Inquiry = new(); private const string DatabaseName = "Database"; private const string ConnectionInfo = "Connection"; diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs index d77278b..366fa87 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs @@ -7,7 +7,7 @@ public class TestLessonEntity private const int Id = 42; private const string Title = "Title"; private const string LastPublisher = "Last Publisher"; - private static readonly DateOnly LastEdit = new (); + private static readonly DateOnly LastEdit = new(); [Fact] public void TestDefaultConstructor() @@ -16,7 +16,7 @@ public class TestLessonEntity Assert.Equal(0, lesson.Id); Assert.Null(lesson.Title); Assert.Null(lesson.LastPublisher); - Assert.Null(lesson.LastEdit); + Assert.Equal(new DateOnly(0001, 01, 01), LastEdit); } [Fact] diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs index 2b52f27..2a85d28 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs @@ -24,7 +24,7 @@ public class TestUserEntity [Fact] public void TestConstructorWithOnlyId() { - UserEntity user = new UserEntity{ Id = Id}; + UserEntity user = new UserEntity { Id = Id }; Assert.Equal(Id, user.Id); Assert.Null(user.Username); Assert.Null(user.Email); diff --git a/README.md b/README.md index 5b41071..343e215 100644 --- a/README.md +++ b/README.md @@ -83,4 +83,4 @@ Voilà, vous pouvez maintenant utilisez librement l'API ! Notre API est versionnée ce qui signifie qu'à chaque requête, la version souhaitée de l'API doit être fournie. Pour l'instant, il n'y a qu'une __version 1.0__. ---- \ No newline at end of file +--- \ No newline at end of file