diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 286d6a2..a2ef3df 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -19,8 +19,8 @@ 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, InquiryDataService>(); builder.Services.AddScoped, InquiryDataServiceApi>(); diff --git a/API_SQLuedo/API/Service/UserDataServiceAPI.cs b/API_SQLuedo/API/Service/UserDataServiceAPI.cs index c1d4997..482a679 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/DbDataManager/Service/UserDataService.cs b/API_SQLuedo/DbDataManager/Service/UserDataService.cs index b4de650..b3c30dd 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) @@ -70,15 +89,13 @@ public class UserDataService : IUserService 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; DbContext.SaveChangesAsync(); 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/Shared/UserDataService.cs b/API_SQLuedo/Shared/UserDataService.cs deleted file mode 100644 index a90b809..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/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 9243568..a3b4275 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -13,7 +13,7 @@ using Model.OrderCriteria; using Service_LessonDataService = DbDataManager.Service.LessonDataService; using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService; using Service_SuccessDataService = DbDataManager.Service.SuccessDataService; -using UserDataService = Shared.UserDataService; +using Service_UserDataService = DbDataManager.Service.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); @@ -30,13 +30,16 @@ ILogger successLogger = factory.CreateLogger