From 375ec42ea25cf9c7ed7e54c664157dce077efc60 Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Wed, 31 Jan 2024 07:25:31 +0100 Subject: [PATCH] Implement AcAddress; improvements, refactoring, fixes, etc... --- .../Users/AcUserDalTestBase.cs | 15 ++++++++----- .../DataLayers/Users/AcUserDalBase.cs | 10 +++++---- .../DbContexts/Users/AcUserDbContextBase.cs | 8 ++++--- .../DbContexts/Users/IAcUserDbContextBase.cs | 8 ++++--- AyCode.Database/DbSets/Users/IAcUserDbSet.cs | 8 ++++--- .../AcProfileEntityTypeBuilderExtensions.cs | 17 ++++++++++++++ .../AcProfileEntityTypeConfigurations.cs | 22 +++++++++++++++++++ .../AcUserEntityTypeBuilderExtensions.cs | 12 ++++------ .../Users/AcUserEntityTypeConfigurations.cs | 10 +++++---- AyCode.Entities/Profiles/AcProfile.cs | 8 ++++++- AyCode.Entities/Users/AcUser.cs | 6 +++-- .../Profiles/Dtos/IAcProfileDtoBase.cs | 5 +++-- AyCode.Interfaces/Profiles/IAcProfile.cs | 3 ++- .../Profiles/IAcProfileRelation.cs | 3 ++- .../Users/Dtos/IAcUserDtoBase.cs | 8 +++++-- .../Users/Dtos/IAcUserDtoDetailBase.cs | 8 ++++--- .../Users/Dtos/IAcUserDtoMinBase.cs | 3 ++- AyCode.Interfaces/Users/IAcUser.cs | 7 ++++-- AyCode.Models/Users/AcUserModelDtoBase.cs | 12 +++++----- .../Users/AcUserModelDtoDetailBase.cs | 12 +++++----- AyCode.Models/Users/AcUserModelDtoMinBase.cs | 8 ++++--- 21 files changed, 135 insertions(+), 58 deletions(-) create mode 100644 AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeBuilderExtensions.cs create mode 100644 AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeConfigurations.cs diff --git a/AyCode.Database.Tests/Users/AcUserDalTestBase.cs b/AyCode.Database.Tests/Users/AcUserDalTestBase.cs index 0959b96..8230842 100644 --- a/AyCode.Database.Tests/Users/AcUserDalTestBase.cs +++ b/AyCode.Database.Tests/Users/AcUserDalTestBase.cs @@ -1,17 +1,19 @@ using AyCode.Database.DataLayers.Users; using AyCode.Database.DbContexts; using AyCode.Database.DbContexts.Users; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; namespace AyCode.Database.Tests.Users { - public abstract class AcUserDalTestBase : AcDatabaseTestModelBase - where TDal : AcUserDalBase - where TDbContext : AcDbContextBase, IAcUserDbContextBase - where TUser : class, IAcUser - where TProfile : class, IAcProfile + public abstract class AcUserDalTestBase : AcDatabaseTestModelBase + where TDal : AcUserDalBase + where TDbContext : AcDbContextBase, IAcUserDbContextBase + where TUser : class, IAcUser + where TProfile : class, IAcProfile + where TProfileAddress : class, IAcAddress where TUserToken : class, IAcUserTokenBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase @@ -23,6 +25,7 @@ namespace AyCode.Database.Tests.Users Assert.IsNotNull(user, "User is null"); Assert.IsNotNull(user.Profile, "Profile is null"); + Assert.IsNotNull(user.Profile.Address, "Profile.Address is null"); Assert.AreEqual(userId, user.Id); @@ -35,6 +38,7 @@ namespace AyCode.Database.Tests.Users Assert.IsNotNull(user, "User is null"); Assert.IsNotNull(user.Profile, "Profile is null"); + Assert.IsNotNull(user.Profile.Address, "Profile.Address is null"); Assert.AreEqual(email, user.EmailAddress); @@ -56,6 +60,7 @@ namespace AyCode.Database.Tests.Users Assert.IsNotNull(user, "User is null"); Assert.IsNotNull(user.Profile, "Profile is null"); + Assert.IsNotNull(user.Profile.Address, "Profile.Address is null"); Assert.AreEqual(email, user.EmailAddress); diff --git a/AyCode.Database/DataLayers/Users/AcUserDalBase.cs b/AyCode.Database/DataLayers/Users/AcUserDalBase.cs index b22631c..7e1fe31 100644 --- a/AyCode.Database/DataLayers/Users/AcUserDalBase.cs +++ b/AyCode.Database/DataLayers/Users/AcUserDalBase.cs @@ -11,18 +11,20 @@ using Microsoft.EntityFrameworkCore; using AyCode.Database.Extensions; using AyCode.Core.Consts; using AyCode.Database.DbSets.Users; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; namespace AyCode.Database.DataLayers.Users { - public abstract class AcUserDalBase : AcDalBase - where TDbContext : AcDbContextBase, IAcUserDbContextBase - where TUser : class, IAcUser - where TProfile : class, IAcProfile + public abstract class AcUserDalBase : AcDalBase + where TDbContext : AcDbContextBase, IAcUserDbContextBase + where TUser : class, IAcUser + where TProfile : class, IAcProfile where TUserToken : class, IAcUserTokenBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { public TUser? GetUserById(Guid userId) => Session(x => x.GetUserById(userId)); public Task GetUserByIdAsync(Guid userId) => SessionAsync(x => x.GetUserById(userId)); diff --git a/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs b/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs index 0328297..4119726 100644 --- a/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs +++ b/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; @@ -10,12 +11,13 @@ using Microsoft.EntityFrameworkCore; namespace AyCode.Database.DbContexts.Users { - public abstract class AcUserDbContextBase : AcDbContextBase, IAcUserDbContextBase - where TUser : class, IAcUser - where TProfile : class, IAcProfile + public abstract class AcUserDbContextBase : AcDbContextBase, IAcUserDbContextBase + where TUser : class, IAcUser + where TProfile : class, IAcProfile where TUserToken : class, IAcUserTokenBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { public required DbSet Users { get; set; } public required DbSet UserTokens { get; set; } diff --git a/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs b/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs index d410d19..46566d5 100644 --- a/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs +++ b/AyCode.Database/DbContexts/Users/IAcUserDbContextBase.cs @@ -1,4 +1,5 @@ using AyCode.Database.DbSets.Users; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; @@ -6,11 +7,12 @@ using Microsoft.EntityFrameworkCore; namespace AyCode.Database.DbContexts.Users; -public interface IAcUserDbContextBase : IAcUserDbSet, IAcUserTokenDbSet - where TUser : class, IAcUser - where TProfile : class, IAcProfile +public interface IAcUserDbContextBase : IAcUserDbSet, IAcUserTokenDbSet + where TUser : class, IAcUser + where TProfile : class, IAcProfile where TUserToken : class, IAcUserTokenBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { } \ No newline at end of file diff --git a/AyCode.Database/DbSets/Users/IAcUserDbSet.cs b/AyCode.Database/DbSets/Users/IAcUserDbSet.cs index dfebde9..52e5bd2 100644 --- a/AyCode.Database/DbSets/Users/IAcUserDbSet.cs +++ b/AyCode.Database/DbSets/Users/IAcUserDbSet.cs @@ -1,13 +1,15 @@ using AyCode.Database.DbContexts; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; namespace AyCode.Database.DbSets.Users; -public interface IAcUserDbSet : IAcUserDbSetBase - where TUser : class, IAcUser - where TProfile : class, IAcProfile +public interface IAcUserDbSet : IAcUserDbSetBase + where TUser : class, IAcUser + where TProfile : class, IAcProfile where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { } \ No newline at end of file diff --git a/AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeBuilderExtensions.cs b/AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeBuilderExtensions.cs new file mode 100644 index 0000000..7aab75f --- /dev/null +++ b/AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeBuilderExtensions.cs @@ -0,0 +1,17 @@ +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Profiles.Dtos; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace AyCode.Database.ModelBuilders.Profiles; + +public static class AcProfileEntityTypeBuilderExtensions +{ + public static void BuildEntityToAddressRelation(this EntityTypeBuilder modelBuilder, bool autoInclude = true) + where TAddressRelation : class, IAcAddressRelation + where TAddress : class, IAcAddress + { + //modelBuilder.HasOne(e => e.Address).WithOne().HasForeignKey(e => e.AddressId); + modelBuilder.Navigation(e => e.Address).AutoInclude(autoInclude); + } +} \ No newline at end of file diff --git a/AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeConfigurations.cs b/AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeConfigurations.cs new file mode 100644 index 0000000..8c164b5 --- /dev/null +++ b/AyCode.Database/ModelBuilders/Profiles/AcProfileEntityTypeConfigurations.cs @@ -0,0 +1,22 @@ +using AyCode.Database.DbContexts; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.ServiceProviders; +using AyCode.Interfaces.Users; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace AyCode.Database.ModelBuilders.Profiles; + +public abstract class AcProfileEntityTypeConfigurations +{ + public abstract class AcProfileEntityTypeDefaultConfiguration : IAcEntityTypeConfiguration + where TProfile : class, IAcProfile + where TProfileAddress : class, IAcAddress + { + public virtual void Configure(EntityTypeBuilder modelBuilder) + { + modelBuilder.BuildEntityToAddressRelation(); + } + } + +} \ No newline at end of file diff --git a/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeBuilderExtensions.cs b/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeBuilderExtensions.cs index 0414be2..83cbbb9 100644 --- a/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeBuilderExtensions.cs +++ b/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeBuilderExtensions.cs @@ -2,7 +2,10 @@ using AyCode.Interfaces.Users; using Microsoft.EntityFrameworkCore.Metadata.Builders; using System.Formats.Tar; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles.Dtos; using AyCode.Interfaces.ServiceProviders; +using Microsoft.EntityFrameworkCore; namespace AyCode.Database.ModelBuilders.Users; @@ -10,7 +13,7 @@ public static class AcUserEntityTypeBuilderExtensions { public static void BuildEntityToProfileRelation(this EntityTypeBuilder modelBuilder, bool autoInclude = true) where TProfileRelation : class, IAcProfileRelation - where TProfile : class, IAcProfile + where TProfile : class, IAcProfileDtoBase { modelBuilder.Navigation(e => e.Profile).AutoInclude(autoInclude); } @@ -36,11 +39,4 @@ public static class AcUserEntityTypeBuilderExtensions modelBuilder.Navigation(e => e.ServiceProviders).AutoInclude(autoInclude); modelBuilder.Navigation(e => e.UserToServiceProviders).AutoInclude(autoInclude); } - - public static void BuildEntityToAddressRelation(this EntityTypeBuilder modelBuilder) - where TProfileRelation : class, IAcProfileRelation - where TProfile : class, IAcProfile - { - //throw new NotImplementedException(); - } } \ No newline at end of file diff --git a/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeConfigurations.cs b/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeConfigurations.cs index 712d2d9..b640d76 100644 --- a/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeConfigurations.cs +++ b/AyCode.Database/ModelBuilders/Users/AcUserEntityTypeConfigurations.cs @@ -1,4 +1,5 @@ using AyCode.Database.DbContexts; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; @@ -6,16 +7,17 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace AyCode.Database.ModelBuilders.Users; -public abstract class AcUserEntityTypeDefaultConfiguration : IAcEntityTypeConfiguration - where TUser : class, IAcUser - where TProfile : class, IAcProfile +public abstract class AcUserEntityTypeDefaultConfiguration : IAcEntityTypeConfiguration + where TUser : class, IAcUser + where TProfile : class, IAcProfile where TServiceProvider : class, IAcServiceProvider where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { public virtual void Configure(EntityTypeBuilder modelBuilder) { modelBuilder.BuildEntityToProfileRelation(); - modelBuilder.BuildEntityToAddressRelation(); + //modelBuilder.BuildEntityToAddressRelation(); modelBuilder.BuildEntityToServiceProviderRelation(); } } diff --git a/AyCode.Entities/Profiles/AcProfile.cs b/AyCode.Entities/Profiles/AcProfile.cs index b810a89..854c977 100644 --- a/AyCode.Entities/Profiles/AcProfile.cs +++ b/AyCode.Entities/Profiles/AcProfile.cs @@ -6,11 +6,12 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; +using AyCode.Interfaces.Addresses; namespace AyCode.Entities.Profiles { [Table("Profile")] - public abstract class AcProfile : IAcProfile + public abstract class AcProfile : IAcProfile where TAddress : class, IAcAddress { protected AcProfile() { } @@ -23,6 +24,11 @@ namespace AyCode.Entities.Profiles public Guid Id { get; set; } public Guid? UserMediaId { get; set; } + [Required] + public Guid AddressId { get; set; } + [ForeignKey(nameof(AddressId))] + public virtual TAddress Address { get; set; } + [Required] public string Name { get; set; } public string? Description { get; set; } diff --git a/AyCode.Entities/Users/AcUser.cs b/AyCode.Entities/Users/AcUser.cs index 6697ccc..3a36dbd 100644 --- a/AyCode.Entities/Users/AcUser.cs +++ b/AyCode.Entities/Users/AcUser.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.Users; using AyCode.Entities.ServiceProviders; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.ServiceProviders; //- szétszedni az UserToServiceProvider és UserToProduct mapping list-eket külön interface-re @@ -16,10 +17,11 @@ using AyCode.Interfaces.ServiceProviders; namespace AyCode.Entities.Users { [Table("Users")] - public abstract class AcUser() : IAcUser - where TProfile : class, IAcProfile + public abstract class AcUser() : IAcUser + where TProfile : class, IAcProfile where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } diff --git a/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs b/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs index 1a99596..ce248b3 100644 --- a/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs +++ b/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs @@ -1,9 +1,10 @@ -using AyCode.Interfaces.Entities; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Entities; using AyCode.Interfaces.MediaInfo; namespace AyCode.Interfaces.Profiles.Dtos; -public interface IAcProfileDtoBase : IEntityGuid, IMediaInfo +public interface IAcProfileDtoBase : IEntityGuid, IMediaInfo, IAcAddressForeignKey { string Name { get; set; } string? Description { get; set; } diff --git a/AyCode.Interfaces/Profiles/IAcProfile.cs b/AyCode.Interfaces/Profiles/IAcProfile.cs index 044047d..7bf2934 100644 --- a/AyCode.Interfaces/Profiles/IAcProfile.cs +++ b/AyCode.Interfaces/Profiles/IAcProfile.cs @@ -1,4 +1,5 @@ using AyCode.Interfaces; +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.MediaInfo; using AyCode.Interfaces.Entities; @@ -6,6 +7,6 @@ using AyCode.Interfaces.Profiles.Dtos; namespace AyCode.Interfaces.Profiles; -public interface IAcProfile : IAcProfileDtoBase, ITimeStampInfo +public interface IAcProfile : IAcProfileDtoBase, ITimeStampInfo, IAcAddressRelation where TAddress : class, IAcAddress { } \ No newline at end of file diff --git a/AyCode.Interfaces/Profiles/IAcProfileRelation.cs b/AyCode.Interfaces/Profiles/IAcProfileRelation.cs index 06ae9c3..6f17d77 100644 --- a/AyCode.Interfaces/Profiles/IAcProfileRelation.cs +++ b/AyCode.Interfaces/Profiles/IAcProfileRelation.cs @@ -1,10 +1,11 @@ using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.Users.Dtos; using AyCode.Interfaces.Users; +using AyCode.Interfaces.Profiles.Dtos; namespace AyCode.Interfaces.Profiles; -public interface IAcProfileRelation : IAcProfileForeignKey where TProfile : class, IAcProfile +public interface IAcProfileRelation : IAcProfileForeignKey where TProfile : class, IAcProfileDtoBase { public TProfile Profile { get; set; } } \ No newline at end of file diff --git a/AyCode.Interfaces/Users/Dtos/IAcUserDtoBase.cs b/AyCode.Interfaces/Users/Dtos/IAcUserDtoBase.cs index dc386c1..28d31ff 100644 --- a/AyCode.Interfaces/Users/Dtos/IAcUserDtoBase.cs +++ b/AyCode.Interfaces/Users/Dtos/IAcUserDtoBase.cs @@ -1,12 +1,16 @@ using AyCode.Interfaces.Entities; using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Profiles.Dtos; using AyCode.Interfaces.ServiceProviders; +using System.Net; +using AyCode.Interfaces.Addresses; namespace AyCode.Interfaces.Users.Dtos; -public interface IAcUserDtoBase : IAcUserDtoMinBase, IAcServiceProviderRelation - where TProfile : class, IAcProfile +public interface IAcUserDtoBase : IAcUserDtoMinBase, IAcServiceProviderRelation + where TProfile : class, IAcProfile where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { } \ No newline at end of file diff --git a/AyCode.Interfaces/Users/Dtos/IAcUserDtoDetailBase.cs b/AyCode.Interfaces/Users/Dtos/IAcUserDtoDetailBase.cs index 73e337c..7631712 100644 --- a/AyCode.Interfaces/Users/Dtos/IAcUserDtoDetailBase.cs +++ b/AyCode.Interfaces/Users/Dtos/IAcUserDtoDetailBase.cs @@ -1,12 +1,14 @@ -using AyCode.Interfaces.Entities; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Entities; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; namespace AyCode.Interfaces.Users.Dtos; -public interface IAcUserDtoDetailBase : IAcUserBase, IAcUserDtoBase - where TProfile : class, IAcProfile +public interface IAcUserDtoDetailBase : IAcUserBase, IAcUserDtoBase + where TProfile : class, IAcProfile where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { } \ No newline at end of file diff --git a/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs b/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs index aae98e1..06047bc 100644 --- a/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs +++ b/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs @@ -1,10 +1,11 @@  using AyCode.Interfaces.Entities; using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Profiles.Dtos; namespace AyCode.Interfaces.Users.Dtos; -public interface IAcUserDtoMinBase : IEntityGuid, IAcProfileRelation where TProfile : class, IAcProfile +public interface IAcUserDtoMinBase : IEntityGuid, IAcProfileRelation where TProfile : class, IAcProfileDtoBase { public Guid AffiliateId { get; set; } } \ No newline at end of file diff --git a/AyCode.Interfaces/Users/IAcUser.cs b/AyCode.Interfaces/Users/IAcUser.cs index 8f8cccf..75060a5 100644 --- a/AyCode.Interfaces/Users/IAcUser.cs +++ b/AyCode.Interfaces/Users/IAcUser.cs @@ -1,13 +1,16 @@  +using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Entities; using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Profiles.Dtos; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users.Dtos; namespace AyCode.Interfaces.Users; -public interface IAcUser : IAcUserDtoDetailBase - where TProfile : class, IAcProfile +public interface IAcUser : IAcUserDtoDetailBase + where TProfile : class, IAcProfile where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { } \ No newline at end of file diff --git a/AyCode.Models/Users/AcUserModelDtoBase.cs b/AyCode.Models/Users/AcUserModelDtoBase.cs index 0609c3e..46f5a18 100644 --- a/AyCode.Models/Users/AcUserModelDtoBase.cs +++ b/AyCode.Models/Users/AcUserModelDtoBase.cs @@ -1,4 +1,5 @@ -using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles; using AyCode.Interfaces.Profiles.Dtos; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; @@ -6,19 +7,20 @@ using AyCode.Interfaces.Users.Dtos; namespace AyCode.Models.Users; -public abstract class AcUserModelDtoBase : AcUserModelDtoMinBase, IAcServiceProviderRelation - where TUserDto : class, IAcUserDtoBase - where TProfile : class, IAcProfile +public abstract class AcUserModelDtoBase : AcUserModelDtoMinBase, IAcServiceProviderRelation + where TUserDto : class, IAcUserDtoBase + where TProfile : class, IAcProfile where TProfileDto : class, IAcProfileDtoBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { public List ServiceProviders { get; set; } public List UserToServiceProviders { get; set; } protected AcUserModelDtoBase() {} - protected AcUserModelDtoBase(IAcUserDtoBase user) : base(user) + protected AcUserModelDtoBase(IAcUserDtoBase user) : base(user) { if (user.ServiceProviders.Count == 0) return; diff --git a/AyCode.Models/Users/AcUserModelDtoDetailBase.cs b/AyCode.Models/Users/AcUserModelDtoDetailBase.cs index 83d8d29..960f93a 100644 --- a/AyCode.Models/Users/AcUserModelDtoDetailBase.cs +++ b/AyCode.Models/Users/AcUserModelDtoDetailBase.cs @@ -1,4 +1,5 @@ -using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles; using AyCode.Interfaces.Profiles.Dtos; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; @@ -6,15 +7,16 @@ using AyCode.Interfaces.Users.Dtos; namespace AyCode.Models.Users; -public abstract class AcUserModelDtoDetailBase : AcUserModelDtoBase - where TUserDtoDetail : class, IAcUserDtoDetailBase - where TProfile : class, IAcProfile +public abstract class AcUserModelDtoDetailBase : AcUserModelDtoBase + where TUserDtoDetail : class, IAcUserDtoDetailBase + where TProfile : class, IAcProfile where TProfileDto : class, IAcProfileDtoBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase + where TProfileAddress : class, IAcAddress { protected AcUserModelDtoDetailBase() {} - protected AcUserModelDtoDetailBase(IAcUserDtoDetailBase user) : base(user) + protected AcUserModelDtoDetailBase(IAcUserDtoDetailBase user) : base(user) { } } \ No newline at end of file diff --git a/AyCode.Models/Users/AcUserModelDtoMinBase.cs b/AyCode.Models/Users/AcUserModelDtoMinBase.cs index 23df5ad..ebb4511 100644 --- a/AyCode.Models/Users/AcUserModelDtoMinBase.cs +++ b/AyCode.Models/Users/AcUserModelDtoMinBase.cs @@ -1,14 +1,16 @@ -using AyCode.Interfaces.Profiles; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles; using AyCode.Interfaces.Profiles.Dtos; using AyCode.Interfaces.Users; using AyCode.Interfaces.Users.Dtos; namespace AyCode.Models.Users; -public abstract class AcUserModelDtoMinBase : AcModelDtoBase +public abstract class AcUserModelDtoMinBase : AcModelDtoBase where TUserDtoMin : class, IAcUserDtoMinBase - where TProfile : class, IAcProfile + where TProfile : class, IAcProfile where TProfileDto : class, IAcProfileDtoBase + where TProfileAddress : class, IAcAddress { public TUserDtoMin UserDto { get; set;} public TProfileDto? Profile { get; set; }