From 34098e207b03863865dcb55949afc8fba00c5503 Mon Sep 17 00:00:00 2001
From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN>
Date: Mon, 18 Dec 2023 23:08:11 +0100
Subject: [PATCH 1/2] Implement UserModels; Add Profile; improvements, fixes,
etc...
---
TIAM.Database.Test/ServiceProviderDalTest.cs | 27 +++++++++++++-
TIAM.Database.Test/UserDalTests.cs | 24 ++++++++-----
.../ServiceProviders/ServiceProviderDal.cs | 12 ++++---
.../ServiceProviderDalExtension.cs | 2 +-
TIAM.Database/DataLayers/Users/UserDal.cs | 16 ++++-----
TIAM.Database/DbContexts/DbContextBase.cs | 2 +-
.../DbContexts/Users/IUserDbContext.cs | 3 +-
.../DbContexts/Users/UserDbContext.cs | 6 +++-
TIAM.Database/DbSets/Users/IUserDbSet.cs | 3 +-
.../DbSets/Users/UserDbSetExtensions.cs | 15 ++++----
.../UserProductMappingDbSetExtensions.cs | 16 ++++-----
.../ProductEntityTypeBuilderExtensions.cs | 10 ++++--
.../ProductEntityTypeConfigurations.cs | 2 +-
.../Users/UserEntityTypeBuilderExtensions.cs | 24 +++++++------
.../Users/UserEntityTypeConfigurations.cs | 3 +-
TIAM.Database/TIAM.Database.csproj | 1 +
TIAM.Entities/Products/Product.cs | 6 ++--
TIAM.Entities/Products/ProductBase.cs | 6 ++--
TIAM.Entities/Profiles/IProfile.cs | 8 +++++
TIAM.Entities/Profiles/IProfileDto.cs | 8 +++++
TIAM.Entities/Profiles/Profile.cs | 8 +++++
TIAM.Entities/Users/IUser.cs | 13 +++++++
TIAM.Entities/Users/IUserDto.cs | 9 +++++
TIAM.Entities/Users/User.cs | 7 ++--
.../Dtos/Products}/AssignedPermissionModel.cs | 0
TIAM.Models/Dtos/Profiles/ProfileDto.cs | 13 +++++++
TIAM.Models/Dtos/Users/UserDto.cs | 9 +++++
TIAM.Models/Dtos/Users/UserModelDto.cs | 29 +++++++++++++++
TIAM.Models/TIAM.Models.csproj | 35 +++++++++++++++++++
.../UserPermissionAPIController.cs | 1 -
.../TIAMWebApp.Shared.Application.csproj | 1 +
TourIAmProject.sln | 6 ++++
32 files changed, 259 insertions(+), 66 deletions(-)
create mode 100644 TIAM.Entities/Profiles/IProfile.cs
create mode 100644 TIAM.Entities/Profiles/IProfileDto.cs
create mode 100644 TIAM.Entities/Profiles/Profile.cs
create mode 100644 TIAM.Entities/Users/IUser.cs
create mode 100644 TIAM.Entities/Users/IUserDto.cs
rename {TIAM.Entities/Products/DTOs => TIAM.Models/Dtos/Products}/AssignedPermissionModel.cs (100%)
create mode 100644 TIAM.Models/Dtos/Profiles/ProfileDto.cs
create mode 100644 TIAM.Models/Dtos/Users/UserDto.cs
create mode 100644 TIAM.Models/Dtos/Users/UserModelDto.cs
create mode 100644 TIAM.Models/TIAM.Models.csproj
diff --git a/TIAM.Database.Test/ServiceProviderDalTest.cs b/TIAM.Database.Test/ServiceProviderDalTest.cs
index faeca1bb..1c1e9e06 100644
--- a/TIAM.Database.Test/ServiceProviderDalTest.cs
+++ b/TIAM.Database.Test/ServiceProviderDalTest.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AyCode.Database.DataLayers.Users;
+using Newtonsoft.Json;
using TIAM.Database.DataLayers.ServiceProviders;
using TIAM.Database.DataLayers.Users;
using TIAM.Database.DbContexts.ServiceProviders;
@@ -97,11 +98,35 @@ namespace TIAM.Database.Test
public void GetUserProductMappingById_ReturnsUserProductMapping_WherHasUserAndProductRelation(string userProductMappingIdString)
{
var userProductMappingId = Guid.Parse(userProductMappingIdString);
- var userProductMapping = Dal.GetUserProductMappingById(userProductMappingId);
+ var userProductMapping = Dal.GetUserProductMappingById(userProductMappingId, true);
Assert.IsNotNull(userProductMapping);
Assert.IsNotNull(userProductMapping.User, "User is null");
Assert.IsNotNull(userProductMapping.Product, "Product is null");
}
+
+ //[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
+ // };
+
+ // var serializedUser = JsonConvert.SerializeObject(user, options);
+ // user = JsonConvert.DeserializeObject(serializedUser);
+
+ // Assert.IsNotNull(user);
+ // Assert.IsNotNull(user.Products);
+ // Assert.IsNotNull(user.UserProductMappings);
+ // Assert.IsNotNull(user.UserProductMappings.FirstOrDefault()?.Product);
+
+ // Assert.IsTrue(user.Products.Count > 0);
+ //}
}
}
diff --git a/TIAM.Database.Test/UserDalTests.cs b/TIAM.Database.Test/UserDalTests.cs
index b8969acd..a35e0586 100644
--- a/TIAM.Database.Test/UserDalTests.cs
+++ b/TIAM.Database.Test/UserDalTests.cs
@@ -10,12 +10,15 @@ using System.Text.Json.Serialization;
using System.Text.Json;
using TIAM.Database.DataLayers.Users;
using TIAM.Database.DbContexts.Users;
+using TIAM.Entities.Profiles;
using TIAM.Entities.Users;
+using TIAM.Models.Dtos.Users;
+using AyCode.Interfaces.Users.Dtos;
namespace TIAM.Database.Test
{
[TestClass]
- public class UserDalTests : AcUserDalTestBase
+ public class UserDalTests : AcUserDalTestBase
{
private Mock _mockContext;
@@ -51,23 +54,26 @@ namespace TIAM.Database.Test
[TestMethod]
[DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")]
- public void SerializeUser_ReturnDeserializedUser_WhenUserAndRelationsExists(string userIdString)
+ public void SerializeUserModelDto_ReturnDeserializedUser_WhenUserAndRelationsExists(string userIdString)
{
var userId = Guid.Parse(userIdString);
- var user = Dal.GetUserById(userId);
JsonSerializerSettings options = new()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- //NullValueHandling = NullValueHandling.Ignore
+ NullValueHandling = NullValueHandling.Ignore
};
- var serializedUser = JsonConvert.SerializeObject(user, options);
- user = JsonConvert.DeserializeObject(serializedUser);
+ var userModel = Dal.GetUserModelDtoById(userId);
- Assert.IsNotNull(user);
- Assert.IsNotNull(user.UserProductMappings);
- //Assert.IsNotNull(user.UserProductMappings.FirstOrDefault()?.Product);
+ var serializedUserModel = JsonConvert.SerializeObject(userModel, options);
+ userModel = JsonConvert.DeserializeObject(serializedUserModel);
+
+ Assert.IsNotNull(userModel);
+ Assert.IsNotNull(userModel.Profile);
+
+ Assert.IsTrue(userModel.Products.Count > 0);
+ Assert.IsTrue(userModel.UserProductMappings.Count > 0);
}
//[TestMethod]
diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs
index 36065d93..38041400 100644
--- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs
+++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs
@@ -8,14 +8,15 @@ using Microsoft.EntityFrameworkCore;
using TIAM.Entities.Permissions;
using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders;
-using TIAM.Entities.Products.DTOs;
using TIAM.Entities.Users;
using TIAM.Database.DbContexts.ServiceProviders;
using TIAM.Database.DbSets.Permissions;
using TIAM.Database.DbSets.Users;
+using TIAM.Entities.Products.DTOs;
using AyCode.Database.DataLayers;
using AyCode.Database.DbSets.Users;
using TIAM.Database.DbSets.Products;
+using TIAM.Models.Dtos.Users;
namespace TIAM.Database.DataLayers.ServiceProviders
@@ -31,10 +32,13 @@ namespace TIAM.Database.DataLayers.ServiceProviders
{
}
- public User? GetUserById(Guid userId, bool autoInclude = true) => Session(x => x.GetUserById(userId, autoInclude));
- public User? GetUserByEmail(string email, bool autoInclude = true) => Session(x => x.GetUserByEmail(email, autoInclude));
+ 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) => Session(x => x.GetUserProductMappingById(userProductMappingId));
+ public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId));
+ public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email));
+
+ public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude));
#region ServiceProviders
diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs
index cb7a9192..22796270 100644
--- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs
+++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs
@@ -99,7 +99,7 @@ public static class ServiceProviderDalExtension
existingProduct.Description = product.Description;
existingProduct.Price = product.Price;
existingProduct.JsonDetails = product.JsonDetails;
- existingProduct.UserMediaId = product.UserMediaId;
+ //existingProduct.UserMediaId = product.UserMediaId;
existingProduct.ProductType = product.ProductType;
diff --git a/TIAM.Database/DataLayers/Users/UserDal.cs b/TIAM.Database/DataLayers/Users/UserDal.cs
index bccb9f87..d9b73663 100644
--- a/TIAM.Database/DataLayers/Users/UserDal.cs
+++ b/TIAM.Database/DataLayers/Users/UserDal.cs
@@ -5,14 +5,18 @@ using System.Text;
using System.Threading.Tasks;
using AyCode.Database.DataLayers;
using AyCode.Database.DataLayers.Users;
+using AyCode.Database.DbSets.Users;
using AyCode.Entities.Users;
using Microsoft.EntityFrameworkCore;
using TIAM.Database.DbContexts.Users;
+using TIAM.Database.DbSets.Users;
+using TIAM.Entities.Profiles;
using TIAM.Entities.Users;
+using TIAM.Models.Dtos.Users;
namespace TIAM.Database.DataLayers.Users
{
- public class UserDal : AcUserDalBase
+ public class UserDal : AcUserDalBase
{
public UserDal() : base()
@@ -28,14 +32,8 @@ namespace TIAM.Database.DataLayers.Users
return Context.Users.ToListAsync();
}
- //public Task GetUserByEmailAsync(string email)
- //{
- // Console.WriteLine($"Getting user from db {email}");
- // //var emailLower = email.ToLower();
-
- // return Context.GetUserByEmail(email);
- // //return Context.Users.SingleOrDefaultAsync(x=>x.Email.ToLower() == emailLower);
- //}
+ public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId));
+ public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email));
public Task GetUserByPhoneNumberAsync(string phoneNumber)
{
diff --git a/TIAM.Database/DbContexts/DbContextBase.cs b/TIAM.Database/DbContexts/DbContextBase.cs
index b884bc06..ea346ee4 100644
--- a/TIAM.Database/DbContexts/DbContextBase.cs
+++ b/TIAM.Database/DbContexts/DbContextBase.cs
@@ -29,7 +29,7 @@ namespace TIAM.Database.DbContexts
{
base.OnConfiguring(optionsBuilder);
- optionsBuilder.UseLazyLoadingProxies(false);
+ optionsBuilder.UseLazyLoadingProxies(true);
optionsBuilder.EnableDetailedErrors(true);
//optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DeveloperDbConnection"));
diff --git a/TIAM.Database/DbContexts/Users/IUserDbContext.cs b/TIAM.Database/DbContexts/Users/IUserDbContext.cs
index a2ffac38..873d3348 100644
--- a/TIAM.Database/DbContexts/Users/IUserDbContext.cs
+++ b/TIAM.Database/DbContexts/Users/IUserDbContext.cs
@@ -1,10 +1,11 @@
using AyCode.Database.DbContexts.Users;
using AyCode.Entities.Users;
using TIAM.Database.DbSets.Users;
+using TIAM.Entities.Profiles;
using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.Users;
-public interface IUserDbContext : IAcUserDbContextBase
+public interface IUserDbContext : IAcUserDbContextBase, IUserDbSet
{
}
\ No newline at end of file
diff --git a/TIAM.Database/DbContexts/Users/UserDbContext.cs b/TIAM.Database/DbContexts/Users/UserDbContext.cs
index b0dba871..7f152c12 100644
--- a/TIAM.Database/DbContexts/Users/UserDbContext.cs
+++ b/TIAM.Database/DbContexts/Users/UserDbContext.cs
@@ -11,8 +11,10 @@ using AyCode.Entities.Users;
using AyCode.Interfaces.Users;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
+using TIAM.Database.ModelBuilders.Products;
using TIAM.Database.ModelBuilders.Users;
using TIAM.Entities.Permissions;
+using TIAM.Entities.Products;
using TIAM.Entities.Users;
namespace TIAM.Database.DbContexts.Users
@@ -51,7 +53,9 @@ namespace TIAM.Database.DbContexts.Users
base.OnModelCreating(modelBuilder);
new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity());
- new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity());
+
+ modelBuilder.Entity().BuildProductToServiceProviderRelation();
+ //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity());
}
}
}
diff --git a/TIAM.Database/DbSets/Users/IUserDbSet.cs b/TIAM.Database/DbSets/Users/IUserDbSet.cs
index 5be2259e..4374b6fc 100644
--- a/TIAM.Database/DbSets/Users/IUserDbSet.cs
+++ b/TIAM.Database/DbSets/Users/IUserDbSet.cs
@@ -1,8 +1,9 @@
using AyCode.Database.DbSets.Users;
+using TIAM.Entities.Profiles;
using TIAM.Entities.Users;
namespace TIAM.Database.DbSets.Users;
-public interface IUserDbSet : IAcUserDbSet
+public interface IUserDbSet : IAcUserDbSet
{
}
\ No newline at end of file
diff --git a/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs b/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs
index d0f43b42..92f7eb40 100644
--- a/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs
+++ b/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs
@@ -1,6 +1,8 @@
using System.Security.Cryptography.X509Certificates;
+using AyCode.Database.DbSets.Users;
using Microsoft.EntityFrameworkCore;
using TIAM.Entities.Users;
+using TIAM.Models.Dtos.Users;
namespace TIAM.Database.DbSets.Users;
@@ -13,16 +15,15 @@ public static class UserDbSetExtensions
.ThenInclude(x => x.Product)
: ctx.Users;
- //public static IQueryable UsersWithServiceProviderRelations(this IUserDbSet ctx, bool autoInclude = true)
- // => autoInclude
- // ? ctx.Users
- // .Include(x => x.UserProductMappings)
- // .ThenInclude(x => x.Product)
- // : ctx.Users;
-
public static User? GetUserById(this IUserDbSet ctx, Guid userId, bool autoInclude)
=> ctx.UsersWithProductRelations(autoInclude).FirstOrDefault(x => x.Id == userId);
public static User? GetUserByEmail(this IUserDbSet ctx, string email, bool autoInclude)
=> ctx.UsersWithProductRelations(autoInclude).FirstOrDefault(x => x.EmailAddress == email);
+
+ public static UserModelDto? GetUserModelDtoById(this IUserDbSet ctx, Guid userId)
+ => ctx.GetUsersById(userId).Select(x => new UserModelDto(x, x.Profile, x.UserProductMappings, x.Products)).FirstOrDefault();
+
+ public static UserModelDto? GetUserModelDtoByEmail(this IUserDbSet ctx, string email)
+ => ctx.GetUsersByEmail(email).Select(x => new UserModelDto(x, x.Profile, x.UserProductMappings, x.Products)).FirstOrDefault();
}
\ No newline at end of file
diff --git a/TIAM.Database/DbSets/Users/UserProductMappingDbSetExtensions.cs b/TIAM.Database/DbSets/Users/UserProductMappingDbSetExtensions.cs
index 66a16163..f92c6087 100644
--- a/TIAM.Database/DbSets/Users/UserProductMappingDbSetExtensions.cs
+++ b/TIAM.Database/DbSets/Users/UserProductMappingDbSetExtensions.cs
@@ -12,15 +12,15 @@ public static class UserProductMappingDbSetExtensions
: ctx.UserProductMappings;
- public static UserProductMapping? GetUserProductMappingById(this IUserProductMappingDbSet ctx, Guid userProductMappingId)
- => ctx.UserProductMappingsWithRelations().FirstOrDefault(x => x.Id == userProductMappingId);
+ public static UserProductMapping? GetUserProductMappingById(this IUserProductMappingDbSet ctx, Guid userProductMappingId, bool autoInclude = true)
+ => ctx.UserProductMappingsWithRelations(autoInclude).FirstOrDefault(x => x.Id == userProductMappingId);
- public static UserProductMapping? GetUserProductMapping(this IUserProductMappingDbSet ctx, Guid userId, Guid productId)
- => ctx.UserProductMappingsWithRelations().FirstOrDefault(x => x.UserId == userId && x.ProductId == productId);
+ public static UserProductMapping? GetUserProductMapping(this IUserProductMappingDbSet ctx, Guid userId, Guid productId, bool autoInclude = true)
+ => ctx.UserProductMappingsWithRelations(autoInclude).FirstOrDefault(x => x.UserId == userId && x.ProductId == productId);
- public static IQueryable GetUserProductMappingsByUserId(this IUserProductMappingDbSet ctx, Guid userId)
- => ctx.UserProductMappingsWithRelations().Where(x => x.UserId == userId);
+ public static IQueryable GetUserProductMappingsByUserId(this IUserProductMappingDbSet ctx, Guid userId, bool autoInclude = true)
+ => ctx.UserProductMappingsWithRelations(autoInclude).Where(x => x.UserId == userId);
- public static IQueryable GetUserProductMappingsByProductId(this IUserProductMappingDbSet ctx, Guid productId)
- => ctx.UserProductMappingsWithRelations().Where(x => x.ProductId == productId);
+ public static IQueryable GetUserProductMappingsByProductId(this IUserProductMappingDbSet ctx, Guid productId, bool autoInclude = true)
+ => ctx.UserProductMappingsWithRelations(autoInclude).Where(x => x.ProductId == productId);
}
\ No newline at end of file
diff --git a/TIAM.Database/ModelBuilders/Products/ProductEntityTypeBuilderExtensions.cs b/TIAM.Database/ModelBuilders/Products/ProductEntityTypeBuilderExtensions.cs
index 8d4658c8..69d37173 100644
--- a/TIAM.Database/ModelBuilders/Products/ProductEntityTypeBuilderExtensions.cs
+++ b/TIAM.Database/ModelBuilders/Products/ProductEntityTypeBuilderExtensions.cs
@@ -12,10 +12,16 @@ public static class ProductEntityTypeBuilderExtensions
public static void BuildProductToUserProductMappingRelation(this EntityTypeBuilder modelBuilder, bool autoInclude = true)
{
modelBuilder
- .HasMany(e => e.UserProductMappings)
- .WithOne(e => e.Product).HasForeignKey(x => x.ProductId);
+ .HasMany(e => e.Users)
+ .WithMany(e => e.Products)
+ .UsingEntity();
+
+ //modelBuilder
+ // .HasMany(e => e.UserProductMappings)
+ // .WithOne(e => e.Product).HasForeignKey(x => x.ProductId);
modelBuilder.Navigation(e => e.UserProductMappings).AutoInclude(autoInclude);
+ modelBuilder.Navigation(e => e.Users).AutoInclude(autoInclude);
}
public static void BuildProductToServiceProviderRelation(this EntityTypeBuilder modelBuilder, bool autoInclude = true)
diff --git a/TIAM.Database/ModelBuilders/Products/ProductEntityTypeConfigurations.cs b/TIAM.Database/ModelBuilders/Products/ProductEntityTypeConfigurations.cs
index 68d4b663..3a9b7a31 100644
--- a/TIAM.Database/ModelBuilders/Products/ProductEntityTypeConfigurations.cs
+++ b/TIAM.Database/ModelBuilders/Products/ProductEntityTypeConfigurations.cs
@@ -11,7 +11,7 @@ public class ProductEntityTypeDefaultConfiguration : IAcEntityTypeConfiguration<
{
public void Configure(EntityTypeBuilder builder)
{
- builder.BuildProductToUserProductMappingRelation();
+ //builder.BuildProductToUserProductMappingRelation();
builder.BuildProductToServiceProviderRelation();
}
}
\ No newline at end of file
diff --git a/TIAM.Database/ModelBuilders/Users/UserEntityTypeBuilderExtensions.cs b/TIAM.Database/ModelBuilders/Users/UserEntityTypeBuilderExtensions.cs
index eb595357..c6f0b9de 100644
--- a/TIAM.Database/ModelBuilders/Users/UserEntityTypeBuilderExtensions.cs
+++ b/TIAM.Database/ModelBuilders/Users/UserEntityTypeBuilderExtensions.cs
@@ -2,6 +2,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System.Numerics;
+using AyCode.Interfaces.Profiles;
using TIAM.Entities.Products;
using TIAM.Entities.Users;
@@ -13,17 +14,20 @@ public static class UserEntityTypeBuilderExtensions
public static void BuildUserToUserProductMappingRelation(this EntityTypeBuilder modelBuilder, bool autoInclude = true)
{
- //modelBuilder
- // .HasMany(e => e.Products)
- // .WithMany(e => e.Users)
- //.UsingEntity();
-
modelBuilder
- .HasMany(e => e.UserProductMappings)
- .WithOne(e => e.User).HasForeignKey(x => x.UserId);
- //.WithMany(e => e.User).
- //.UsingEntity.HasForeignKey(x => x.UserId);
+ .HasMany(e => e.Products)
+ .WithMany(e => e.Users)
+ .UsingEntity();
+ //l => l.HasOne().WithMany(x=>x.UserProductMappings).HasForeignKey(e => e.ProductId),
+ //r => r.HasOne().WithMany(x=>x.UserProductMappings).HasForeignKey(e => e.UserId));
+ //modelBuilder
+ // .HasMany(e => e.UserProductMappings)
+ // .WithOne(e => e.User).HasForeignKey(x => x.UserId);
+ // //.WithMany(e => e.User).
+ // //.UsingEntity.HasForeignKey(x => x.UserId);
+
+ modelBuilder.Navigation(e => e.Products).AutoInclude(autoInclude);
modelBuilder.Navigation(e => e.UserProductMappings).AutoInclude(autoInclude);
}
@@ -65,7 +69,7 @@ public static class UserEntityTypeBuilderExtensions
#endregion UserProductMapping
- public static void BuildUserToServiceProviderRelation(this EntityTypeBuilder modelBuilder) where TUser : class, IUserBase
+ public static void BuildUserToServiceProviderRelation(this EntityTypeBuilder modelBuilder) where TUser : class, IUserBase where TProfile : class, IAcProfileBase
{
}
diff --git a/TIAM.Database/ModelBuilders/Users/UserEntityTypeConfigurations.cs b/TIAM.Database/ModelBuilders/Users/UserEntityTypeConfigurations.cs
index 84f96d5c..d2b34ea1 100644
--- a/TIAM.Database/ModelBuilders/Users/UserEntityTypeConfigurations.cs
+++ b/TIAM.Database/ModelBuilders/Users/UserEntityTypeConfigurations.cs
@@ -2,6 +2,7 @@
using AyCode.Database.ModelBuilders.Users;
using AyCode.Interfaces.Users;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using TIAM.Entities.Profiles;
using TIAM.Entities.Users;
namespace TIAM.Database.ModelBuilders.Users;
@@ -21,6 +22,6 @@ public class UserEntityTypeDefaultConfiguration : IAcEntityTypeConfiguration
@code {
diff --git a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs
index 0fccbc97..8646c63b 100644
--- a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs
+++ b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs
@@ -16,7 +16,7 @@ namespace TIAMSharedUI.Pages.Components
public partial class InputWizard : ComponentBase
{
[Inject]
- LogToBrowserConsole logToBrowserConsole { get; set; }
+ public required LogToBrowserConsole LogToBrowserConsole { get; set; }
public Dictionary FormSteps { get; set; } = new Dictionary();
public int CurrentStep { get; set; } = 0;
@@ -28,37 +28,37 @@ namespace TIAMSharedUI.Pages.Components
public object Data { get; set; } = new object();
[Parameter]
- public EventCallback