Add ToJson(); Add Address; Implement AcAddress and relations; refactoring, improvements, fixes, etc...

This commit is contained in:
jozsef.b@aycode.com 2024-01-12 16:06:21 +01:00
parent c3d2c5014a
commit 027344fe30
26 changed files with 311 additions and 94 deletions

View File

@ -0,0 +1,8 @@
namespace TIAM.Core.Enums;
public enum PriceType : byte
{
NotSet = 5,
Fix = 10,
Calculated = 15
}

View File

@ -1,4 +1,4 @@
namespace TIAM.Core;
namespace TIAM.Core.Enums;
public enum ProductType : byte
{

View File

@ -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<ServiceProviderDal, ServiceProviderDbContext>
public class AdminDalTest : AcDatabaseTestModelBase<AdminDal, AdminDbContext>
{
[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<User>(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<User>(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<List<User>>(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");
}
}
}

View File

@ -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<AdminDbContext>
{
public AdminDal() : base()
{
}
public Task<List<User>> GetUsersAsync()
{
return Context.Users.ToListAsync();
}
public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId));
public Task<User?> 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<bool> 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<UserModelDto?> GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId));
public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email));
public Task<bool> 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<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId)
=> Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList());
public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId)
=> Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList());
public List<PermissionContextMapping> GetPermissionContextsViewByContextId(Guid contextId)
=> Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId)
=> SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//public Task<List<User>> GetUsersAsync()
//{
// return Context.Users.ToListAsync();
//}
//public Task<User?> 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<bool> 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<bool> 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");
// }
//}
}
}

View File

@ -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<UserModelDto?> 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<UserModelDto?> 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<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId)
=> Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList());
//public List<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId)
// => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList());
public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId)
=> Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList());
//public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId)
// => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList());
public List<PermissionContextMapping> GetPermissionContextsViewByContextId(Guid contextId)
=> Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//public List<PermissionContextMapping> GetPermissionContextsViewByContextId(Guid contextId)
// => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId)
=> SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId)
// => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//3. (IPermissionService) get permissions of assigned users and groups
public Task<List<AssignedPermissionModel>> 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)

View File

@ -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<T>(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<T>(this IQueryable<T> source) where T : class, IEntity
{
JsonSerializerSettings options = new()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore
};
return JsonConvert.SerializeObject(source, options);
}
public static IQueryable<UserProductMapping> GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId)
{
return ctx.UserProductMappings

View File

@ -28,11 +28,6 @@ namespace TIAM.Database.DataLayers.Users
{
}
public Task<List<User>> GetUsersAsync()
{
return Context.Users.ToListAsync();
}
public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId));
public Task<UserModelDto?> GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId));
public Task<UserModelDto?> GetUserModelDtoByEmailAsync(string email) => SessionAsync(x => x.GetUserModelDtoByEmail(email));

View File

@ -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<User> Users { get; set; }
public DbSet<TransferDestination> TransferDestinations { get; set; }
public DbSet<TiamServiceProvider> ServiceProviders { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<UserProductMapping> UserProductMappings { get; set; }
public DbSet<PermissionGroup> PermissionGroups { get; set; }
public DbSet<PermissionGroupUserMapping> PermissionGroupUserMappings { get; set; }
public DbSet<PermissionContextMapping> PermissionContextMappings { get; set; }
public DbSet<PermissionsType> PermissionsTypes { get; set; }
public DbSet<Address> 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<User>());
//new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>());
new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<Product>());
modelBuilder.Entity<TransferDestination>().Navigation(e => e.Address).AutoInclude(true);
}
}
}

View File

@ -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
{
}

View File

@ -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
{
}

View File

@ -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<Address> Addresses { get; set; }
public DbSet<TransferDestination> TransferDestinations { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<UserProductMapping> UserProductMappings { get; set; }
@ -63,6 +68,7 @@ namespace TIAM.Database.DbContexts.ServiceProviders
//new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>());
new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<Product>());
modelBuilder.Entity<TransferDestination>().Navigation(e => e.Address).AutoInclude(true);
}
}
}

View File

@ -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<User, Profile, UserToken, TiamServiceProvider, UserToServiceProvider>, IUserDbSet
public interface IUserDbContext : IAcUserDbContextBase<User, Profile, UserToken, TiamServiceProvider, UserToServiceProvider>, IUserDbSet, IAddressDbSet, ITransferDestinationDbSet
{
}

View File

@ -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<User> Users { get; set; }
public DbSet<UserToken> UserTokens { get; set; }
public DbSet<Address> Addresses { get; set; }
public DbSet<TransferDestination> TransferDestinations { get; }
public UserDbContext() //: this(string.Empty)
{
@ -55,6 +59,8 @@ namespace TIAM.Database.DbContexts.Users
new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<User>());
new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<Product>());
modelBuilder.Entity<TransferDestination>().Navigation(e => e.Address).AutoInclude(true);
//modelBuilder.Entity<Product>().BuildProductToServiceProviderRelation();
//new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>());
}

View File

@ -0,0 +1,9 @@
using AyCode.Database.DbSets.Addresses;
using TIAM.Entities.Addresses;
namespace TIAM.Database.DbSets.Addresses;
public interface IAddressDbSet : IAcAddressDbSetBase<Address>
{
}

View File

@ -5,5 +5,5 @@ namespace TIAM.Database.DbSets.Products;
public interface IProductDbSet
{
public DbSet<Product> Products { get; }
public DbSet<Product> Products { get; set; }
}

View File

@ -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<TransferDestination> TransferDestinations { get; }
}

View File

@ -10,12 +10,15 @@
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<Folder Include="DataLayers\DTOs\" />
<Folder Include="DataLayers\Permissions\" />
<Folder Include="DataLayers\Products\" />
<Folder Include="DbSets\Addresses\" />
<Folder Include="DbSets\Transfers\" />
<Folder Include="DbSets\ServiceProvider\" />
<Folder Include="Extensions\" />
</ItemGroup>

View File

@ -0,0 +1,7 @@
using AyCode.Entities.Addresses;
namespace TIAM.Entities.Addresses;
public class Address : AcAddress, IAddress
{
}

View File

@ -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
{
}

View File

@ -0,0 +1,8 @@
using AyCode.Interfaces.Addresses.Dtos;
namespace TIAM.Entities.Addresses;
public interface IAddressDto : IAcAddressDtoBase
{
}

View File

@ -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;

View File

@ -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;

View File

@ -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; }

View File

@ -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;

View File

@ -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<TiamServiceProvider> ServiceProviders { get; set; }
public List<UserToServiceProvider> UserToServiceProviders { get; set; }

View File

@ -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
{