This commit is contained in:
Adam 2024-01-12 18:17:45 +01:00
commit 7388a5879a
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 public enum ProductType : byte
{ {

View File

@ -5,19 +5,23 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using AyCode.Database.DataLayers.Users; using AyCode.Database.DataLayers.Users;
using AyCode.Utils.Extensions;
using Newtonsoft.Json; using Newtonsoft.Json;
using TIAM.Database.DataLayers.Admins;
using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DataLayers.ServiceProviders;
using TIAM.Database.DataLayers.Users; using TIAM.Database.DataLayers.Users;
using TIAM.Database.DbContexts.Admins;
using TIAM.Database.DbContexts.ServiceProviders; using TIAM.Database.DbContexts.ServiceProviders;
using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.Users; using TIAM.Entities.Users;
using TIAM.Models.Dtos.Users; using TIAM.Models.Dtos.Users;
using TIAM.Entities.TransferDestinations;
namespace TIAM.Database.Test namespace TIAM.Database.Test
{ {
[TestClass] [TestClass]
public class ServiceProviderDalTest : AcDatabaseTestModelBase<ServiceProviderDal, ServiceProviderDbContext> public class AdminDalTest : AcDatabaseTestModelBase<AdminDal, AdminDbContext>
{ {
[TestInitialize] [TestInitialize]
public void Setup() public void Setup()
@ -90,7 +94,10 @@ namespace TIAM.Database.Test
var user = Dal.GetUserById(userId); var user = Dal.GetUserById(userId);
Assert.IsNotNull(user); Assert.IsNotNull(user);
Assert.IsTrue(user.Id == userId, "user.Id != userId");
Assert.IsTrue(user.UserProductMappings.Count > 0, "UserProductMappings count: 0"); Assert.IsTrue(user.UserProductMappings.Count > 0, "UserProductMappings count: 0");
Assert.IsNotNull(user.UserProductMappings[0].Product, "Product is null"); Assert.IsNotNull(user.UserProductMappings[0].Product, "Product is null");
} }
@ -104,6 +111,8 @@ namespace TIAM.Database.Test
Assert.IsNotNull(userProductMapping); Assert.IsNotNull(userProductMapping);
Assert.IsNotNull(userProductMapping.User, "User is null"); Assert.IsNotNull(userProductMapping.User, "User is null");
Assert.IsNotNull(userProductMapping.Product, "Product is null"); Assert.IsNotNull(userProductMapping.Product, "Product is null");
Assert.IsTrue(userProductMapping.Id == userProductMappingId, "userProductMapping.Id != userProductMappingId");
} }
[TestMethod] [TestMethod]
@ -129,6 +138,8 @@ namespace TIAM.Database.Test
Assert.IsNotNull(userModel.UserDto); Assert.IsNotNull(userModel.UserDto);
Assert.IsNotNull(userModel.Profile); 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. if (userId != Guid.Parse("540271F6-C604-4C16-8160-D5A7CAFEDF00")) return; //csak az "540271F6.."-nek van product-ja! - J.
Assert.IsTrue(userModel.Products.Count > 0); Assert.IsTrue(userModel.Products.Count > 0);
@ -137,28 +148,62 @@ namespace TIAM.Database.Test
Assert.IsTrue(userModel.ServiceProviders.Count > 0); Assert.IsTrue(userModel.ServiceProviders.Count > 0);
Assert.IsTrue(userModel.UserToServiceProviders.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() [TestMethod]
// { [DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")]
// ReferenceLoopHandling = ReferenceLoopHandling.Ignore, [DataRow("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd")]
// //NullValueHandling = NullValueHandling.Ignore [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); Assert.IsFalse(userJson?.IsNullOrWhiteSpace());
// user = JsonConvert.DeserializeObject<User>(serializedUser);
// Assert.IsNotNull(user); var user = JsonConvert.DeserializeObject<User>(userJson);
// Assert.IsNotNull(user.Products);
// Assert.IsNotNull(user.UserProductMappings);
// Assert.IsNotNull(user.UserProductMappings.FirstOrDefault()?.Product);
// 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.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.Entities.Users;
using TIAM.Models.Dtos.Users;
namespace TIAM.Database.DataLayers.Admins namespace TIAM.Database.DataLayers.Admins
{ {
public class AdminDal : DalBase<AdminDbContext> public class AdminDal : DalBase<AdminDbContext>
{ {
public AdminDal() : base() public AdminDal() : base()
{ {
} }
public Task<List<User>> GetUsersAsync() public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId));
{
return Context.Users.ToListAsync();
}
public Task<User?> GetUserByEmailAsync(string 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));
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) public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId));
{ public Task<UserModelDto?> GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId));
user.Created = DateTime.UtcNow; public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email));
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) public string? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson());
{ public string GetUsersJson() => Session(ctx => ctx.Users.ToJson());
var existingUser = Context.Users.FirstOrDefault(u => u.EmailAddress == user.EmailAddress);
if (existingUser != null) public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId));
{
//user.Modified = DateTime.UtcNow; //ezt nem kell megadni, a háttérben ezt magától megcsinálja a DbContextBase - J. public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude));
existingUser = user;
Context.Users.Update(existingUser); public List<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId)
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList());
}
else public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId)
{ => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList());
throw new Exception("User not found");
} 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.DataLayers;
using AyCode.Database.DbSets.Users; using AyCode.Database.DbSets.Users;
using TIAM.Database.DbSets.Products; using TIAM.Database.DbSets.Products;
using TIAM.Entities.TransferDestinations;
using TIAM.Models.Dtos.Users; using TIAM.Models.Dtos.Users;
using Newtonsoft.Json;
namespace TIAM.Database.DataLayers.ServiceProviders 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 TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId));
public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude));
public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); //public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude));
public Task<UserModelDto?> GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); //public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude));
public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email));
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 #region ServiceProviders
@ -204,17 +212,17 @@ namespace TIAM.Database.DataLayers.ServiceProviders
#region PermissionMappings #region PermissionMappings
public List<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId) //public List<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId)
=> Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); // => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList());
public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId) //public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId)
=> Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList()); // => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList());
public List<PermissionContextMapping> GetPermissionContextsViewByContextId(Guid contextId) //public List<PermissionContextMapping> GetPermissionContextsViewByContextId(Guid contextId)
=> Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); // => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId) //public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId)
=> SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); // => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//3. (IPermissionService) get permissions of assigned users and groups //3. (IPermissionService) get permissions of assigned users and groups
public Task<List<AssignedPermissionModel>> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId) public Task<List<AssignedPermissionModel>> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId)
@ -379,8 +387,7 @@ namespace TIAM.Database.DataLayers.ServiceProviders
#region Products #region Products
public Product? GetProductById(Guid contextId) //public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId));
=> Session(x => x.GetProductById(contextId));
//* 19. (IServiceProviderDataService) Create product //* 19. (IServiceProviderDataService) Create product
public bool CreateProductAsync(Product product) public bool CreateProductAsync(Product product)

View File

@ -1,7 +1,10 @@
using AyCode.Database.DataLayers.Users; using AyCode.Database.DataLayers.Users;
using AyCode.Interfaces.Entities;
using AyCode.Models.Enums; using AyCode.Models.Enums;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Newtonsoft.Json;
using TIAM.Database.DbContexts; using TIAM.Database.DbContexts;
using TIAM.Database.DbContexts.ServiceProviders; using TIAM.Database.DbContexts.ServiceProviders;
using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Permissions;
@ -16,6 +19,28 @@ namespace TIAM.Database.DataLayers.ServiceProviders;
public static class ServiceProviderDalExtension 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) public static IQueryable<UserProductMapping> GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId)
{ {
return ctx.UserProductMappings 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 UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId));
public Task<UserModelDto?> GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(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)); 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 System.Threading.Tasks;
using AyCode.Database.DbContexts; using AyCode.Database.DbContexts;
using Microsoft.EntityFrameworkCore; 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.TransferDestinations;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.Admins namespace TIAM.Database.DbContexts.Admins
{ {
public class AdminDbContext : DbContextBase public class AdminDbContext : DbContextBase, IAdminDbContext
{ {
public DbSet<User> Users { get; set; } public DbSet<User> Users { get; set; }
public DbSet<TransferDestination> TransferDestinations { 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) public AdminDbContext() //: this(string.Empty)
{ {
@ -32,5 +47,16 @@ namespace TIAM.Database.DbContexts.Admins
{ {
base.OnConfiguring(optionsBuilder); 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 AyCode.Database.DbSets.Users;
using TIAM.Database.DbSets.Addresses;
using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Permissions;
using TIAM.Database.DbSets.Products; using TIAM.Database.DbSets.Products;
using TIAM.Database.DbSets.ServiceProvider; using TIAM.Database.DbSets.ServiceProvider;
using TIAM.Database.DbSets.Transfers;
using TIAM.Database.DbSets.Users; using TIAM.Database.DbSets.Users;
namespace TIAM.Database.DbContexts.ServiceProviders; 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.DbSets.Users;
using TIAM.Database.ModelBuilders.Products; using TIAM.Database.ModelBuilders.Products;
using TIAM.Database.ModelBuilders.Users; using TIAM.Database.ModelBuilders.Users;
using TIAM.Entities.Addresses;
using TIAM.Entities.Permissions; using TIAM.Entities.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders; using TIAM.Entities.ServiceProviders;
using TIAM.Entities.TransferDestinations;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.ServiceProviders 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<User> Users { get; set; }
public DbSet<UserProductMapping> UserProductMappings { get; set; } public DbSet<UserProductMapping> UserProductMappings { get; set; }
@ -63,6 +68,7 @@ namespace TIAM.Database.DbContexts.ServiceProviders
//new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>()); //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>());
new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<Product>()); 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.Database.DbContexts.Users;
using AyCode.Entities.Users; using AyCode.Entities.Users;
using TIAM.Database.DbSets.Addresses;
using TIAM.Database.DbSets.Transfers;
using TIAM.Database.DbSets.Users; using TIAM.Database.DbSets.Users;
using TIAM.Entities.Addresses;
using TIAM.Entities.Profiles; using TIAM.Entities.Profiles;
using TIAM.Entities.ServiceProviders; using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.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 Microsoft.Extensions.Options;
using TIAM.Database.ModelBuilders.Products; using TIAM.Database.ModelBuilders.Products;
using TIAM.Database.ModelBuilders.Users; using TIAM.Database.ModelBuilders.Users;
using TIAM.Entities.Addresses;
using TIAM.Entities.Permissions; using TIAM.Entities.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.TransferDestinations;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.Users namespace TIAM.Database.DbContexts.Users
@ -24,6 +26,8 @@ namespace TIAM.Database.DbContexts.Users
public DbSet<User> Users { get; set; } public DbSet<User> Users { get; set; }
public DbSet<UserToken> UserTokens { get; set; } public DbSet<UserToken> UserTokens { get; set; }
public DbSet<Address> Addresses { get; set; }
public DbSet<TransferDestination> TransferDestinations { get; }
public UserDbContext() //: this(string.Empty) public UserDbContext() //: this(string.Empty)
{ {
@ -55,6 +59,8 @@ namespace TIAM.Database.DbContexts.Users
new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<User>()); new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<User>());
new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<Product>()); new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<Product>());
modelBuilder.Entity<TransferDestination>().Navigation(e => e.Address).AutoInclude(true);
//modelBuilder.Entity<Product>().BuildProductToServiceProviderRelation(); //modelBuilder.Entity<Product>().BuildProductToServiceProviderRelation();
//new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<UserProductMapping>()); //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 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" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="DataLayers\DTOs\" /> <Folder Include="DataLayers\DTOs\" />
<Folder Include="DataLayers\Permissions\" /> <Folder Include="DataLayers\Permissions\" />
<Folder Include="DataLayers\Products\" /> <Folder Include="DataLayers\Products\" />
<Folder Include="DbSets\Addresses\" />
<Folder Include="DbSets\Transfers\" />
<Folder Include="DbSets\ServiceProvider\" /> <Folder Include="DbSets\ServiceProvider\" />
<Folder Include="Extensions\" /> <Folder Include="Extensions\" />
</ItemGroup> </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 System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using TIAM.Core; using TIAM.Core.Enums;
using TIAM.Entities.ServiceProviders; using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users; using TIAM.Entities.Users;

View File

@ -2,7 +2,7 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using TIAM.Core; using TIAM.Core.Enums;
namespace TIAM.Entities.Products; namespace TIAM.Entities.Products;

View File

@ -4,22 +4,19 @@ using AyCode.Entities.Locations;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using TIAM.Core.Enums;
using TIAM.Entities.Addresses;
namespace TIAM.Entities.TransferDestinations namespace TIAM.Entities.TransferDestinations
{ {
public enum PriceType : byte
{
NotSet = 5,
Fix = 10,
Calculated = 15
}
[Table("TransferDestination")] [Table("TransferDestination")]
public class TransferDestination : IEntityGuid, ITimeStampInfo //LocationBase public class TransferDestination : IEntityGuid, ITimeStampInfo //LocationBase
{ {
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } public Guid Id { get; set; }
public Guid AddressId { get; set; } public Guid AddressId { get; set; }
public virtual Address Address { get; set; }
//[Required(ErrorMessage = "The Username value should be specified.")] //[Required(ErrorMessage = "The Username value should be specified.")]
public string Name { get; set; } 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 AyCode.Interfaces.Users.Dtos;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.Profiles; using TIAM.Entities.Profiles;

View File

@ -8,7 +8,7 @@ namespace TIAM.Models.Dtos.Users;
public class UserDto : IUserDto public class UserDto : IUserDto
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
public Guid ProfileId { get; } public Guid ProfileId { get; set; }
public Profile Profile { get; set; } public Profile Profile { get; set; }
public List<TiamServiceProvider> ServiceProviders { get; set; } public List<TiamServiceProvider> ServiceProviders { get; set; }
public List<UserToServiceProvider> UserToServiceProviders { get; set; } public List<UserToServiceProvider> UserToServiceProviders { get; set; }

View File

@ -4,6 +4,7 @@ using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System.Reflection.Metadata; using System.Reflection.Metadata;
using System.Text.Json; using System.Text.Json;
using TIAM.Core.Enums;
using TIAM.Database.DataLayers; using TIAM.Database.DataLayers;
using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Admins;
using TIAM.Database.DataLayers.TransferDestinations; using TIAM.Database.DataLayers.TransferDestinations;
@ -111,7 +112,6 @@ namespace TIAMWebApp.Server.Controllers
await _transferDestinationDal.CreateTransferDestinationAsync(transferDestination); await _transferDestinationDal.CreateTransferDestinationAsync(transferDestination);
return Ok(transferDestination); return Ok(transferDestination);
} }
} }
else else
{ {