diff --git a/WF_EF_Api/Contextlib/WTFContext.cs b/WF_EF_Api/Contextlib/WTFContext.cs index 2706b88..e82284d 100644 --- a/WF_EF_Api/Contextlib/WTFContext.cs +++ b/WF_EF_Api/Contextlib/WTFContext.cs @@ -75,9 +75,9 @@ namespace Contextlib l => l.HasOne().WithMany().HasForeignKey(q => q.IdQuestion), r => r.HasOne().WithMany().HasForeignKey(u => u.IdQuiz) ); - modelBuilder.Entity() - .HasOne(a => a.User) - .WithOne(u => u.admin); + //modelBuilder.Entity() + // .HasOne(a => a.User) + // .WithOne(u => u.admin); } public WTFContext() diff --git a/WF_EF_Api/Dto2Entities/Extention.cs b/WF_EF_Api/Dto2Entities/Extention.cs index a0b2a61..b58d527 100644 --- a/WF_EF_Api/Dto2Entities/Extention.cs +++ b/WF_EF_Api/Dto2Entities/Extention.cs @@ -159,6 +159,16 @@ namespace Dto2Entities return user; } + public static List ToDto(this List users) + { + List userDTOs = new List(); + foreach (Users user in users) + { + userDTOs.Add(ToDto(user)); + } + return userDTOs; + } + public static TypeLangageDTO ToDto(this LangEnum item) { switch (item) diff --git a/WF_EF_Api/Entity/Users.cs b/WF_EF_Api/Entity/Users.cs index 6b834eb..abcf80e 100644 --- a/WF_EF_Api/Entity/Users.cs +++ b/WF_EF_Api/Entity/Users.cs @@ -40,8 +40,8 @@ namespace Entity public ICollection Favorite { get; set; } = new List(); - [ForeignKey(nameof(Admin))] - public int Idadmin { get; set; } - public Admin admin { get; set; } + //[ForeignKey(nameof(Admin))] + //public int Idadmin { get; set; } + //public Admin admin { get; set; } } } diff --git a/WF_EF_Api/ServicesApi/ServicesApi.csproj b/WF_EF_Api/ServicesApi/ServicesApi.csproj new file mode 100644 index 0000000..89650c8 --- /dev/null +++ b/WF_EF_Api/ServicesApi/ServicesApi.csproj @@ -0,0 +1,16 @@ + + + + net8.0 + enable + enable + + + + + + + + + + diff --git a/WF_EF_Api/ServicesApi/UserService.cs b/WF_EF_Api/ServicesApi/UserService.cs new file mode 100644 index 0000000..367cd2b --- /dev/null +++ b/WF_EF_Api/ServicesApi/UserService.cs @@ -0,0 +1,94 @@ +using Shared; +using DTO; +using Contextlib; +using Entity; +using System.Xml.XPath; +using Dto2Entities; +namespace ServicesApi +{ + public class UserService : IUserService + { + + private IUserService userService; + + public UserService(IUserService user) + { + userService = user; + } + + + + public async Task AddUser(UserDTO user) + { + await userService.AddUser(user.ToEntity()); + } + + public async Task CountUser() + { + return await userService.CountUser(); + } + + public async Task ExistEmail(string email) + { + return await userService.ExistEmail(email); + } + + public async Task ExistUsername(string username) + { + return await userService.ExistUsername(username); + } + + public async Task> GetAllUser() + { + var users = userService.GetAllUser().Result.items; + return new PaginationResult(users.Count(), 0, 10, users.ToDto()); + } + + public async Task GetHashPassword(string username) + { + return await userService.GetHashPassword(username); + } + + public async Task GetLastUserId() + { + return await userService.GetLastUserId(); + } + + public async Task> GetSomeUser(int index, int pageSize) + { + var users = userService.GetSomeUser(index, pageSize).Result.items; + return new PaginationResult(users.Count(),index, pageSize, users.ToDto()); + } + + public async Task GetUserByEmail(string email) + { + return userService.GetUserByEmail(email).Result.ToDto(); + } + + public async Task GetUserById(int id) + { + return userService.GetUserById(id).Result.ToDto(); + } + + public async Task GetUserByUsername(string username) + { + return userService.GetUserByUsername(username).Result.ToDto(); + } + + public async Task RemoveUser(UserDTO user) + { + await userService.RemoveUser(user.ToEntity()); + } + + public async Task SetAdminRole(bool isAdmin) + { + await userService.SetAdminRole(isAdmin); + } + + public async Task UpdateUser(int userId, UserDTO user) + { + await userService.UpdateUser(userId, user.ToEntity()); + throw new NotImplementedException(); + } + } +} diff --git a/WF_EF_Api/StubApi/QuoteService.cs b/WF_EF_Api/StubApi/QuoteServiceStub.cs similarity index 97% rename from WF_EF_Api/StubApi/QuoteService.cs rename to WF_EF_Api/StubApi/QuoteServiceStub.cs index 53e261d..f0521b3 100644 --- a/WF_EF_Api/StubApi/QuoteService.cs +++ b/WF_EF_Api/StubApi/QuoteServiceStub.cs @@ -8,11 +8,11 @@ using System.Threading.Tasks; namespace StubApi { - public class QuoteService : IQuoteService + public class QuoteServiceStub : IQuoteService { private readonly List _quotes; - public QuoteService() + public QuoteServiceStub() { _quotes = new List { diff --git a/WF_EF_Api/StubApi/UserService.cs b/WF_EF_Api/StubApi/UserServiceStub.cs similarity index 96% rename from WF_EF_Api/StubApi/UserService.cs rename to WF_EF_Api/StubApi/UserServiceStub.cs index 315d9a5..b9c21f8 100644 --- a/WF_EF_Api/StubApi/UserService.cs +++ b/WF_EF_Api/StubApi/UserServiceStub.cs @@ -2,11 +2,11 @@ using DTO; namespace StubApi { - public class UserService : IUserService + public class UserServiceStub : IUserService { private readonly List _users; - public UserService() + public UserServiceStub() { _users = new List { diff --git a/WF_EF_Api/WF_EF_Api.sln b/WF_EF_Api/WF_EF_Api.sln index 728c68b..bb798b1 100644 --- a/WF_EF_Api/WF_EF_Api.sln +++ b/WF_EF_Api/WF_EF_Api.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.9.34723.18 @@ -25,6 +24,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DTO", "DTO\DTO.csproj", "{9 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dto2Entities", "Dto2Entities\Dto2Entities.csproj", "{08194729-E222-4C9A-B860-D944225B8895}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServicesApi", "ServicesApi\ServicesApi.csproj", "{6A9AC3D2-C1CD-450A-BD3C-22FAFC9B5328}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,10 +56,6 @@ Global {2CF20FAC-C2F1-4048-9D46-F39081B0FBEF}.Debug|Any CPU.Build.0 = Debug|Any CPU {2CF20FAC-C2F1-4048-9D46-F39081B0FBEF}.Release|Any CPU.ActiveCfg = Release|Any CPU {2CF20FAC-C2F1-4048-9D46-F39081B0FBEF}.Release|Any CPU.Build.0 = Release|Any CPU - {4A1CBA3D-C798-4E19-865F-39F919F1205A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A1CBA3D-C798-4E19-865F-39F919F1205A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A1CBA3D-C798-4E19-865F-39F919F1205A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A1CBA3D-C798-4E19-865F-39F919F1205A}.Release|Any CPU.Build.0 = Release|Any CPU {48002CA2-7CFF-4077-90CF-392476320CE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {48002CA2-7CFF-4077-90CF-392476320CE3}.Debug|Any CPU.Build.0 = Debug|Any CPU {48002CA2-7CFF-4077-90CF-392476320CE3}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -79,6 +76,10 @@ Global {08194729-E222-4C9A-B860-D944225B8895}.Debug|Any CPU.Build.0 = Debug|Any CPU {08194729-E222-4C9A-B860-D944225B8895}.Release|Any CPU.ActiveCfg = Release|Any CPU {08194729-E222-4C9A-B860-D944225B8895}.Release|Any CPU.Build.0 = Release|Any CPU + {6A9AC3D2-C1CD-450A-BD3C-22FAFC9B5328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A9AC3D2-C1CD-450A-BD3C-22FAFC9B5328}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A9AC3D2-C1CD-450A-BD3C-22FAFC9B5328}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A9AC3D2-C1CD-450A-BD3C-22FAFC9B5328}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/WF_EF_Api/WfApi/Program.cs b/WF_EF_Api/WfApi/Program.cs index 5813f96..524f35a 100644 --- a/WF_EF_Api/WfApi/Program.cs +++ b/WF_EF_Api/WfApi/Program.cs @@ -1,11 +1,19 @@ using DTO; using Shared; using StubApi; - +using Contextlib; +using Entity; +using StubbedContextLib; +using ServicesApi; var builder = WebApplication.CreateBuilder(args); - +//API builder.Services.AddScoped, UserService>(); -builder.Services.AddScoped, QuoteService>(); +builder.Services.AddScoped, QuoteServiceStub>(); + + +//EF +builder.Services.AddScoped(); +builder.Services.AddScoped, DbUsersManager>(); // Add services to the container. builder.Services.AddControllers(); diff --git a/WF_EF_Api/WfApi/WfApi.csproj b/WF_EF_Api/WfApi/WfApi.csproj index ab7442c..0416a92 100644 --- a/WF_EF_Api/WfApi/WfApi.csproj +++ b/WF_EF_Api/WfApi/WfApi.csproj @@ -17,9 +17,13 @@ + + + +