diff --git a/TIAM.Core/Enums/PriceType.cs b/TIAM.Core/Enums/PriceType.cs new file mode 100644 index 00000000..661bf578 --- /dev/null +++ b/TIAM.Core/Enums/PriceType.cs @@ -0,0 +1,8 @@ +namespace TIAM.Core.Enums; + +public enum PriceType : byte +{ + NotSet = 5, + Fix = 10, + Calculated = 15 +} \ No newline at end of file diff --git a/TIAM.Core/ProductType.cs b/TIAM.Core/Enums/ProductType.cs similarity index 74% rename from TIAM.Core/ProductType.cs rename to TIAM.Core/Enums/ProductType.cs index b37f1a3c..180adb1d 100644 --- a/TIAM.Core/ProductType.cs +++ b/TIAM.Core/Enums/ProductType.cs @@ -1,4 +1,4 @@ -namespace TIAM.Core; +namespace TIAM.Core.Enums; public enum ProductType : byte { diff --git a/TIAM.Database.Test/ServiceProviderDalTest.cs b/TIAM.Database.Test/AdminDalTest.cs similarity index 67% rename from TIAM.Database.Test/ServiceProviderDalTest.cs rename to TIAM.Database.Test/AdminDalTest.cs index c40d4ce9..089f014d 100644 --- a/TIAM.Database.Test/ServiceProviderDalTest.cs +++ b/TIAM.Database.Test/AdminDalTest.cs @@ -5,19 +5,23 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using AyCode.Database.DataLayers.Users; +using AyCode.Utils.Extensions; using Newtonsoft.Json; +using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DataLayers.Users; +using TIAM.Database.DbContexts.Admins; using TIAM.Database.DbContexts.ServiceProviders; using TIAM.Database.DbSets.Permissions; using TIAM.Entities.Products; using TIAM.Entities.Users; using TIAM.Models.Dtos.Users; +using TIAM.Entities.TransferDestinations; namespace TIAM.Database.Test { [TestClass] - public class ServiceProviderDalTest : AcDatabaseTestModelBase + public class AdminDalTest : AcDatabaseTestModelBase { [TestInitialize] public void Setup() @@ -90,7 +94,10 @@ namespace TIAM.Database.Test var user = Dal.GetUserById(userId); Assert.IsNotNull(user); + + Assert.IsTrue(user.Id == userId, "user.Id != userId"); Assert.IsTrue(user.UserProductMappings.Count > 0, "UserProductMappings count: 0"); + Assert.IsNotNull(user.UserProductMappings[0].Product, "Product is null"); } @@ -104,6 +111,8 @@ namespace TIAM.Database.Test Assert.IsNotNull(userProductMapping); Assert.IsNotNull(userProductMapping.User, "User is null"); Assert.IsNotNull(userProductMapping.Product, "Product is null"); + + Assert.IsTrue(userProductMapping.Id == userProductMappingId, "userProductMapping.Id != userProductMappingId"); } [TestMethod] @@ -129,6 +138,8 @@ namespace TIAM.Database.Test Assert.IsNotNull(userModel.UserDto); Assert.IsNotNull(userModel.Profile); + Assert.IsTrue(userModel.Id == userId, "userModel.Id != userId"); + if (userId != Guid.Parse("540271F6-C604-4C16-8160-D5A7CAFEDF00")) return; //csak az "540271F6.."-nek van product-ja! - J. Assert.IsTrue(userModel.Products.Count > 0); @@ -137,28 +148,62 @@ namespace TIAM.Database.Test Assert.IsTrue(userModel.ServiceProviders.Count > 0); Assert.IsTrue(userModel.UserToServiceProviders.Count > 0); } - //[TestMethod] - //[DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")] - //public void SerializeUser_ReturnDeserializedUser_WhenUserAndRelationsExists(string userIdString) - //{ - // var userId = Guid.Parse(userIdString); - // var user = Dal.GetUserProductMappingById(userId); - // JsonSerializerSettings options = new() - // { - // ReferenceLoopHandling = ReferenceLoopHandling.Ignore, - // //NullValueHandling = NullValueHandling.Ignore - // }; + [TestMethod] + [DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")] + [DataRow("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd")] + [DataRow("ac612aa8-863b-4b4f-9d63-f5d261b5c5f9")] + public void SerializeUserEntity_ReturnDeserializedUser_WhenUserAndRelationsExists(string userIdString) + { + var userId = Guid.Parse(userIdString); + var userJson = Dal.GetUserJsonById(userId); - // var serializedUser = JsonConvert.SerializeObject(user, options); - // user = JsonConvert.DeserializeObject(serializedUser); + Assert.IsFalse(userJson?.IsNullOrWhiteSpace()); - // Assert.IsNotNull(user); - // Assert.IsNotNull(user.Products); - // Assert.IsNotNull(user.UserProductMappings); - // Assert.IsNotNull(user.UserProductMappings.FirstOrDefault()?.Product); + var user = JsonConvert.DeserializeObject(userJson); - // Assert.IsTrue(user.Products.Count > 0); - //} + Assert.IsNotNull(user); + Assert.IsNotNull(user.Profile); + + Assert.IsTrue(user.Id == userId, "user.Id != userId"); + + if (userId != Guid.Parse("540271F6-C604-4C16-8160-D5A7CAFEDF00")) return; //csak az "540271F6.."-nek van product-ja! - J. + + Assert.IsTrue(user.Products.Count > 0); + Assert.IsTrue(user.UserProductMappings.Count > 0); + + Assert.IsTrue(user.ServiceProviders.Count > 0); + Assert.IsTrue(user.UserToServiceProviders.Count > 0); + } + + [TestMethod] + public void SerializeUsers_ReturnDeserializedUsers_WhenUsersAndRelationsExists() + { + var userJson = Dal.GetUsersJson(); + + Assert.IsFalse(userJson.IsNullOrWhiteSpace()); + + var users = JsonConvert.DeserializeObject>(userJson); + + Assert.IsNotNull(users); + Assert.IsTrue(users.Count>0); + } + + [TestMethod] + [DataRow("273EFE3C-D19F-4C2A-BF19-7397DC835C60")] + public void GetTransferDestionationById_ReturnsTransferDestination_WhenHasAddressRelation(string transferDestinationIdString) + { + var transferDestinationId = Guid.Parse(transferDestinationIdString); + var transferDestination = Dal.GetTransferDestinationById(transferDestinationId); + + Assert.IsNotNull(transferDestination); + Assert.IsNotNull(transferDestination.Address); + + Assert.IsTrue(transferDestination.Id == transferDestinationId, "transferDestination.Id != transferDestinationId"); + + //Assert.IsTrue(user.UserProductMappings.Count > 0, "UserProductMappings count: 0"); + //Assert.IsNotNull(user.UserProductMappings[0].Product, "Product is null"); + } } } + \ No newline at end of file diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index c568770a..e397ca76 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -1,51 +1,87 @@ -using Microsoft.EntityFrameworkCore; +using AyCode.Database.DbSets.Users; +using Microsoft.EntityFrameworkCore; +using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DbContexts.Admins; +using TIAM.Database.DbSets.Permissions; +using TIAM.Database.DbSets.Products; +using TIAM.Database.DbSets.Users; +using TIAM.Entities.Permissions; +using TIAM.Entities.Products; +using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; +using TIAM.Models.Dtos.Users; namespace TIAM.Database.DataLayers.Admins { public class AdminDal : DalBase { - public AdminDal() : base() { } - public Task> GetUsersAsync() - { - return Context.Users.ToListAsync(); - } + public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId)); - public Task GetUserByEmailAsync(string email) - { - Console.WriteLine($"Getting user from db {email}"); - var emailLower = email.ToLower(); - return Context.Users.SingleOrDefaultAsync(x=>x.EmailAddress.ToLower() == emailLower); - } + public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude)); + public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude)); - public Task CreateUserAsync(User user) - { - user.Created = DateTime.UtcNow; - user.Modified = DateTime.UtcNow; - Context.Users.Add(user); - Console.WriteLine($"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}"); - return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0); - } + public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); + public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); + public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email)); - public Task UpdateUserAsync(User user) - { - var existingUser = Context.Users.FirstOrDefault(u => u.EmailAddress == user.EmailAddress); - if (existingUser != null) - { - //user.Modified = DateTime.UtcNow; //ezt nem kell megadni, a háttérben ezt magától megcsinálja a DbContextBase - J. - existingUser = user; - Context.Users.Update(existingUser); - return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - } - else - { - throw new Exception("User not found"); - } - } + public string? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson()); + public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); + + public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId)); + + public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); + + public List GetPermissionContextsView(Guid subjectId, Guid contextId) + => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); + + public List GetPermissionContextsViewBySubjectId(Guid contextId) + => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList()); + + public List GetPermissionContextsViewByContextId(Guid contextId) + => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); + + public Task> GetPermissionContextsViewByContextIdAsync(Guid contextId) + => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); + + //public Task> GetUsersAsync() + //{ + // return Context.Users.ToListAsync(); + //} + + //public Task GetUserByEmailAsync(string email) + //{ + // Console.WriteLine($"Getting user from db {email}"); + // var emailLower = email.ToLower(); + // return Context.Users.SingleOrDefaultAsync(x=>x.EmailAddress.ToLower() == emailLower); + //} + + //public Task CreateUserAsync(User user) + //{ + // user.Created = DateTime.UtcNow; + // user.Modified = DateTime.UtcNow; + // Context.Users.Add(user); + // Console.WriteLine($"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}"); + // return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0); + //} + + //public Task UpdateUserAsync(User user) + //{ + // var existingUser = Context.Users.FirstOrDefault(u => u.EmailAddress == user.EmailAddress); + // if (existingUser != null) + // { + // //user.Modified = DateTime.UtcNow; //ezt nem kell megadni, a háttérben ezt magától megcsinálja a DbContextBase - J. + // existingUser = user; + // Context.Users.Update(existingUser); + // return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + // } + // else + // { + // throw new Exception("User not found"); + // } + //} } } diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs index ea952308..876bafb9 100644 --- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs +++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs @@ -16,7 +16,9 @@ using TIAM.Entities.Products.DTOs; using AyCode.Database.DataLayers; using AyCode.Database.DbSets.Users; using TIAM.Database.DbSets.Products; +using TIAM.Entities.TransferDestinations; using TIAM.Models.Dtos.Users; +using Newtonsoft.Json; namespace TIAM.Database.DataLayers.ServiceProviders @@ -32,14 +34,20 @@ namespace TIAM.Database.DataLayers.ServiceProviders { } - public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude)); - public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude)); + //public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId)); - public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); - public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); - public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email)); + //public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude)); + //public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude)); - public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); + //public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); + //public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); + //public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email)); + + //public string? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson()); + //public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); + + + //public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); #region ServiceProviders @@ -204,17 +212,17 @@ namespace TIAM.Database.DataLayers.ServiceProviders #region PermissionMappings - public List GetPermissionContextsView(Guid subjectId, Guid contextId) - => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); + //public List GetPermissionContextsView(Guid subjectId, Guid contextId) + // => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); - public List GetPermissionContextsViewBySubjectId(Guid contextId) - => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList()); + //public List GetPermissionContextsViewBySubjectId(Guid contextId) + // => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList()); - public List GetPermissionContextsViewByContextId(Guid contextId) - => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); + //public List GetPermissionContextsViewByContextId(Guid contextId) + // => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); - public Task> GetPermissionContextsViewByContextIdAsync(Guid contextId) - => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); + //public Task> GetPermissionContextsViewByContextIdAsync(Guid contextId) + // => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); //3. (IPermissionService) get permissions of assigned users and groups public Task> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId) @@ -379,8 +387,7 @@ namespace TIAM.Database.DataLayers.ServiceProviders #region Products - public Product? GetProductById(Guid contextId) - => Session(x => x.GetProductById(contextId)); + //public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId)); //* 19. (IServiceProviderDataService) Create product public bool CreateProductAsync(Product product) diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs index 22796270..e0e3cef2 100644 --- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs +++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs @@ -1,7 +1,10 @@ using AyCode.Database.DataLayers.Users; +using AyCode.Interfaces.Entities; using AyCode.Models.Enums; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Newtonsoft.Json; using TIAM.Database.DbContexts; using TIAM.Database.DbContexts.ServiceProviders; using TIAM.Database.DbSets.Permissions; @@ -16,6 +19,28 @@ namespace TIAM.Database.DataLayers.ServiceProviders; public static class ServiceProviderDalExtension { + public static string ToJson(this T source) where T : class, IEntity + { + JsonSerializerSettings options = new() + { + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore + }; + + return JsonConvert.SerializeObject(source, options); + } + + public static string ToJson(this IQueryable source) where T : class, IEntity + { + JsonSerializerSettings options = new() + { + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore + }; + + return JsonConvert.SerializeObject(source, options); + } + public static IQueryable GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId) { return ctx.UserProductMappings diff --git a/TIAM.Database/DataLayers/Users/UserDal.cs b/TIAM.Database/DataLayers/Users/UserDal.cs index 5328ca5b..5dddeb4d 100644 --- a/TIAM.Database/DataLayers/Users/UserDal.cs +++ b/TIAM.Database/DataLayers/Users/UserDal.cs @@ -28,11 +28,6 @@ namespace TIAM.Database.DataLayers.Users { } - public Task> GetUsersAsync() - { - return Context.Users.ToListAsync(); - } - public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); public Task GetUserModelDtoByEmailAsync(string email) => SessionAsync(x => x.GetUserModelDtoByEmail(email)); diff --git a/TIAM.Database/DbContexts/Admins/AdminDbContext.cs b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs index bf6b43e4..b8b7e967 100644 --- a/TIAM.Database/DbContexts/Admins/AdminDbContext.cs +++ b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs @@ -5,16 +5,31 @@ using System.Text; using System.Threading.Tasks; using AyCode.Database.DbContexts; using Microsoft.EntityFrameworkCore; +using TIAM.Database.ModelBuilders.Products; +using TIAM.Database.ModelBuilders.Users; +using TIAM.Entities.Addresses; +using TIAM.Entities.Permissions; +using TIAM.Entities.Products; +using TIAM.Entities.ServiceProviders; using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; namespace TIAM.Database.DbContexts.Admins { - public class AdminDbContext : DbContextBase + public class AdminDbContext : DbContextBase, IAdminDbContext { public DbSet Users { get; set; } public DbSet TransferDestinations { get; set; } + public DbSet ServiceProviders { get; set; } + public DbSet Products { get; set; } + public DbSet UserProductMappings { get; set; } + public DbSet PermissionGroups { get; set; } + public DbSet PermissionGroupUserMappings { get; set; } + public DbSet PermissionContextMappings { get; set; } + public DbSet PermissionsTypes { get; set; } + public DbSet
Addresses { get; set; } + public AdminDbContext() //: this(string.Empty) { @@ -32,5 +47,16 @@ namespace TIAM.Database.DbContexts.Admins { base.OnConfiguring(optionsBuilder); } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); + //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); + + new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); + modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); + } } } diff --git a/TIAM.Database/DbContexts/Admins/IAdminDbContext.cs b/TIAM.Database/DbContexts/Admins/IAdminDbContext.cs new file mode 100644 index 00000000..3440de7e --- /dev/null +++ b/TIAM.Database/DbContexts/Admins/IAdminDbContext.cs @@ -0,0 +1,12 @@ +using TIAM.Database.DbSets.Addresses; +using TIAM.Database.DbSets.Permissions; +using TIAM.Database.DbSets.Products; +using TIAM.Database.DbSets.ServiceProvider; +using TIAM.Database.DbSets.Transfers; +using TIAM.Database.DbSets.Users; + +namespace TIAM.Database.DbContexts.Admins; + +public interface IAdminDbContext : IServiceProviderDbSet, IProductDbSet, IUserProductMappingDbSet, IUserDbSet, IPermissionsDbSetContext, IAddressDbSet, ITransferDestinationDbSet +{ +} \ No newline at end of file diff --git a/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs b/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs index bb0524ff..400e9367 100644 --- a/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs +++ b/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs @@ -1,11 +1,13 @@ using AyCode.Database.DbSets.Users; +using TIAM.Database.DbSets.Addresses; using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Products; using TIAM.Database.DbSets.ServiceProvider; +using TIAM.Database.DbSets.Transfers; using TIAM.Database.DbSets.Users; namespace TIAM.Database.DbContexts.ServiceProviders; -public interface IServiceProviderDbContext : IServiceProviderDbSet, IProductDbSet, IUserProductMappingDbSet, IUserDbSet, IPermissionsDbSetContext +public interface IServiceProviderDbContext : IServiceProviderDbSet, IProductDbSet, IUserProductMappingDbSet, IUserDbSet, IPermissionsDbSetContext, IAddressDbSet, ITransferDestinationDbSet { } \ No newline at end of file diff --git a/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs index 73a21689..8c9884aa 100644 --- a/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs +++ b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs @@ -11,15 +11,20 @@ using TIAM.Database.DbContexts.Users; using TIAM.Database.DbSets.Users; using TIAM.Database.ModelBuilders.Products; using TIAM.Database.ModelBuilders.Users; +using TIAM.Entities.Addresses; using TIAM.Entities.Permissions; using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; +using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; namespace TIAM.Database.DbContexts.ServiceProviders { - public class ServiceProviderDbContext : DbContextBase, IServiceProviderDbContext, IUserProductMappingDbSet + public class ServiceProviderDbContext : DbContextBase, IServiceProviderDbContext { + public DbSet
Addresses { get; set; } + public DbSet TransferDestinations { get; set; } + public DbSet Users { get; set; } public DbSet UserProductMappings { get; set; } @@ -63,6 +68,7 @@ namespace TIAM.Database.DbContexts.ServiceProviders //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); + modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); } } } diff --git a/TIAM.Database/DbContexts/Users/IUserDbContext.cs b/TIAM.Database/DbContexts/Users/IUserDbContext.cs index 311b4d7e..0b35dec0 100644 --- a/TIAM.Database/DbContexts/Users/IUserDbContext.cs +++ b/TIAM.Database/DbContexts/Users/IUserDbContext.cs @@ -1,12 +1,15 @@ using AyCode.Database.DbContexts.Users; using AyCode.Entities.Users; +using TIAM.Database.DbSets.Addresses; +using TIAM.Database.DbSets.Transfers; using TIAM.Database.DbSets.Users; +using TIAM.Entities.Addresses; using TIAM.Entities.Profiles; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Users; namespace TIAM.Database.DbContexts.Users; -public interface IUserDbContext : IAcUserDbContextBase, IUserDbSet +public interface IUserDbContext : IAcUserDbContextBase, IUserDbSet, IAddressDbSet, ITransferDestinationDbSet { } \ No newline at end of file diff --git a/TIAM.Database/DbContexts/Users/UserDbContext.cs b/TIAM.Database/DbContexts/Users/UserDbContext.cs index 85df6bad..900af945 100644 --- a/TIAM.Database/DbContexts/Users/UserDbContext.cs +++ b/TIAM.Database/DbContexts/Users/UserDbContext.cs @@ -13,8 +13,10 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; using TIAM.Database.ModelBuilders.Products; using TIAM.Database.ModelBuilders.Users; +using TIAM.Entities.Addresses; using TIAM.Entities.Permissions; using TIAM.Entities.Products; +using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; namespace TIAM.Database.DbContexts.Users @@ -24,6 +26,8 @@ namespace TIAM.Database.DbContexts.Users public DbSet Users { get; set; } public DbSet UserTokens { get; set; } + public DbSet
Addresses { get; set; } + public DbSet TransferDestinations { get; } public UserDbContext() //: this(string.Empty) { @@ -55,6 +59,8 @@ namespace TIAM.Database.DbContexts.Users new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); + modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); + //modelBuilder.Entity().BuildProductToServiceProviderRelation(); //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); } diff --git a/TIAM.Database/DbSets/Addresses/IAddressDbSet.cs b/TIAM.Database/DbSets/Addresses/IAddressDbSet.cs new file mode 100644 index 00000000..f538fb2b --- /dev/null +++ b/TIAM.Database/DbSets/Addresses/IAddressDbSet.cs @@ -0,0 +1,9 @@ +using AyCode.Database.DbSets.Addresses; +using TIAM.Entities.Addresses; + +namespace TIAM.Database.DbSets.Addresses; + +public interface IAddressDbSet : IAcAddressDbSetBase
+{ + +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Products/IProductDbSet.cs b/TIAM.Database/DbSets/Products/IProductDbSet.cs index 457b5da3..f65ad5dd 100644 --- a/TIAM.Database/DbSets/Products/IProductDbSet.cs +++ b/TIAM.Database/DbSets/Products/IProductDbSet.cs @@ -5,5 +5,5 @@ namespace TIAM.Database.DbSets.Products; public interface IProductDbSet { - public DbSet Products { get; } + public DbSet Products { get; set; } } \ No newline at end of file diff --git a/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs b/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs new file mode 100644 index 00000000..ef7fd126 --- /dev/null +++ b/TIAM.Database/DbSets/Transfers/ITransferDestinationDbSet.cs @@ -0,0 +1,10 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Products; +using TIAM.Entities.TransferDestinations; + +namespace TIAM.Database.DbSets.Transfers; + +public interface ITransferDestinationDbSet +{ + public DbSet TransferDestinations { get; } +} \ No newline at end of file diff --git a/TIAM.Database/TIAM.Database.csproj b/TIAM.Database/TIAM.Database.csproj index 450f166d..c219be5b 100644 --- a/TIAM.Database/TIAM.Database.csproj +++ b/TIAM.Database/TIAM.Database.csproj @@ -10,12 +10,15 @@ + + + diff --git a/TIAM.Entities/Addresses/Address.cs b/TIAM.Entities/Addresses/Address.cs new file mode 100644 index 00000000..b8580035 --- /dev/null +++ b/TIAM.Entities/Addresses/Address.cs @@ -0,0 +1,7 @@ +using AyCode.Entities.Addresses; + +namespace TIAM.Entities.Addresses; + +public class Address : AcAddress, IAddress +{ +} \ No newline at end of file diff --git a/TIAM.Entities/Addresses/IAddress.cs b/TIAM.Entities/Addresses/IAddress.cs new file mode 100644 index 00000000..77b1fac3 --- /dev/null +++ b/TIAM.Entities/Addresses/IAddress.cs @@ -0,0 +1,11 @@ +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Addresses.Dtos; +using AyCode.Interfaces.Profiles; +using TIAM.Entities.Profiles; + +namespace TIAM.Entities.Addresses; + +public interface IAddress : IAcAddress, IAddressDto +{ + +} \ No newline at end of file diff --git a/TIAM.Entities/Addresses/IAddressDto.cs b/TIAM.Entities/Addresses/IAddressDto.cs new file mode 100644 index 00000000..53b3c1ac --- /dev/null +++ b/TIAM.Entities/Addresses/IAddressDto.cs @@ -0,0 +1,8 @@ +using AyCode.Interfaces.Addresses.Dtos; + +namespace TIAM.Entities.Addresses; + +public interface IAddressDto : IAcAddressDtoBase +{ + +} \ No newline at end of file diff --git a/TIAM.Entities/Products/Product.cs b/TIAM.Entities/Products/Product.cs index fc8a01aa..48a6e700 100644 --- a/TIAM.Entities/Products/Product.cs +++ b/TIAM.Entities/Products/Product.cs @@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations.Schema; using AyCode.Interfaces.Entities; using AyCode.Interfaces.TimeStampInfo; -using TIAM.Core; +using TIAM.Core.Enums; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Users; diff --git a/TIAM.Entities/Products/ProductBase.cs b/TIAM.Entities/Products/ProductBase.cs index 3ff25513..80315e7d 100644 --- a/TIAM.Entities/Products/ProductBase.cs +++ b/TIAM.Entities/Products/ProductBase.cs @@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations.Schema; using AyCode.Interfaces.Entities; using AyCode.Interfaces.TimeStampInfo; -using TIAM.Core; +using TIAM.Core.Enums; namespace TIAM.Entities.Products; diff --git a/TIAM.Entities/TransferDestinations/TransferDestination.cs b/TIAM.Entities/TransferDestinations/TransferDestination.cs index 16d538db..adcb8f16 100644 --- a/TIAM.Entities/TransferDestinations/TransferDestination.cs +++ b/TIAM.Entities/TransferDestinations/TransferDestination.cs @@ -4,22 +4,19 @@ using AyCode.Entities.Locations; using AyCode.Interfaces.TimeStampInfo; using System.ComponentModel.DataAnnotations; using System.Text.RegularExpressions; +using TIAM.Core.Enums; +using TIAM.Entities.Addresses; namespace TIAM.Entities.TransferDestinations { - public enum PriceType : byte - { - NotSet = 5, - Fix = 10, - Calculated = 15 - } - [Table("TransferDestination")] public class TransferDestination : IEntityGuid, ITimeStampInfo //LocationBase { [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } + public Guid AddressId { get; set; } + public virtual Address Address { get; set; } //[Required(ErrorMessage = "The Username value should be specified.")] public string Name { get; set; } diff --git a/TIAM.Entities/Users/IUserDto.cs b/TIAM.Entities/Users/IUserDto.cs index 3d953cad..4b985e0d 100644 --- a/TIAM.Entities/Users/IUserDto.cs +++ b/TIAM.Entities/Users/IUserDto.cs @@ -1,4 +1,5 @@ -using AyCode.Interfaces.Users; +using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Users; using AyCode.Interfaces.Users.Dtos; using TIAM.Entities.Products; using TIAM.Entities.Profiles; diff --git a/TIAM.Models/Dtos/Users/UserDto.cs b/TIAM.Models/Dtos/Users/UserDto.cs index a82eb157..d61ace33 100644 --- a/TIAM.Models/Dtos/Users/UserDto.cs +++ b/TIAM.Models/Dtos/Users/UserDto.cs @@ -8,7 +8,7 @@ namespace TIAM.Models.Dtos.Users; public class UserDto : IUserDto { public Guid Id { get; set; } - public Guid ProfileId { get; } + public Guid ProfileId { get; set; } public Profile Profile { get; set; } public List ServiceProviders { get; set; } public List UserToServiceProviders { get; set; } diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index d1ec118b..40e0093e 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -4,6 +4,7 @@ using Microsoft.EntityFrameworkCore; using Newtonsoft.Json.Linq; using System.Reflection.Metadata; using System.Text.Json; +using TIAM.Core.Enums; using TIAM.Database.DataLayers; using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.TransferDestinations; @@ -111,7 +112,6 @@ namespace TIAMWebApp.Server.Controllers await _transferDestinationDal.CreateTransferDestinationAsync(transferDestination); return Ok(transferDestination); } - } else {