diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 716256e..060b520 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -33,8 +33,8 @@ builder.Services.AddScoped, Shared.ParagraphData builder.Services.AddScoped, DbDataManager.Service.SuccessDataService>(); builder.Services.AddScoped, Shared.SuccessDataService>(); -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 +72,11 @@ builder.Services.AddSwaggerGen(option => { Reference = new OpenApiReference { - Type=ReferenceType.SecurityScheme, - Id="Bearer" + Type = ReferenceType.SecurityScheme, + Id = "Bearer" } }, - new string[]{} + new string[] { } } }); }); @@ -86,7 +86,7 @@ var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { - app.UseSwagger(); + app.UseSwagger(); app.UseSwaggerUI(); } @@ -98,4 +98,4 @@ app.MapControllers(); app.MapIdentityApi(); -app.Run(); +app.Run(); \ No newline at end of file diff --git a/API_SQLuedo/API/Service/LessonDataServiceAPI.cs b/API_SQLuedo/API/Service/LessonDataServiceAPI.cs index 7b26363..391d081 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/DbDataManager/Service/InquiryDataService.cs b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs index 2f9b580..df9c2ce 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.Select(s => s); + } + 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,12 @@ 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, description, isUser); + DbContext.Inquiries.Add(newInquiryEntity); + DbContext.SaveChangesAsync(); + return newInquiryEntity; } public bool DeleteInquiry(int id) @@ -68,22 +94,7 @@ public class InquiryDataService : IInquiryService 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() - { - Title = title, - Description = description, - IsUser = isUser, - }; - DbContext.Inquiries.Add(newInquiryEntity); - DbContext.SaveChangesAsync(); - return newInquiryEntity; - } } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs index 65ed957..c932f74 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.Select(s => s); + } + 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,7 +77,7 @@ 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)); @@ -68,8 +86,6 @@ public class LessonDataService : ILessonService 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; DbContext.SaveChangesAsync(); return updatingLesson; } diff --git a/API_SQLuedo/Shared/LessonDataService.cs b/API_SQLuedo/Shared/LessonDataService.cs deleted file mode 100644 index e37b67e..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