diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 98766d0..286d6a2 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -28,8 +28,8 @@ builder.Services.AddScoped, InquiryDataServiceApi>() 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, LessonDataService>(); builder.Services.AddScoped, LessonDataServiceApi>(); diff --git a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs index 7433a91..af403c5 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 SuccessDTO GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id).FromEntityToDTO(); - public SuccessEntity GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id); + public SuccessDTO GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id).FromEntityToDTO(); public bool DeleteSuccess(int id) => sucessService.DeleteSuccess(id); - public SuccessEntity UpdateSuccess(int id, SuccessEntity success) => - sucessService.UpdateSuccess(id, success); + public SuccessDTO UpdateSuccess(int id, SuccessDTO success) => + sucessService.UpdateSuccess(id, 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/DbDataManager/Service/SuccessDataService.cs b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs index 4a079fa..22e3b2e 100644 --- a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs @@ -16,43 +16,61 @@ 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 SuccessEntity GetSuccessByUserId(int id) { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); - if (successEntity == null) + var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); + if (userEntity == 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 userEntity; } - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public SuccessEntity GetSuccessByInquiryId(int id) { - return DbContext.Successes.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + 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; } public bool DeleteSuccess(int id) { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (userEntity == null) + var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); + if (successEntity == null) { return false; } - DbContext.Successes.Remove(userEntity); + DbContext.Successes.Remove(successEntity); DbContext.SaveChangesAsync(); return true; } @@ -62,14 +80,12 @@ public class SuccessDataService : ISuccessService var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id); 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(id)); } updatingSuccess.UserId = success.UserId; updatingSuccess.InquiryId = success.InquiryId; 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; } diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 6921e72..9243568 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -12,7 +12,7 @@ using Microsoft.Extensions.Logging; using Model.OrderCriteria; using Service_LessonDataService = DbDataManager.Service.LessonDataService; using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService; -using SuccessDataService = Shared.SuccessDataService; +using Service_SuccessDataService = DbDataManager.Service.SuccessDataService; using UserDataService = Shared.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); @@ -36,7 +36,7 @@ using (var context = new UserDbContext(options)) var paragraphController = new ParagraphsController(new ParagraphDataServiceApi(new Service_ParagraphDataService(context)), paragraphLogger); var lessonController = new LessonsController(new LessonDataServiceApi(new Service_LessonDataService(context)), lessonLogger); - var successController = new SuccessesController(new SuccessDataService(context), successLogger); + var successController = new SuccessesController(new SuccessDataServiceApi(new Service_SuccessDataService(context)), successLogger); void PrintUsers() {