diff --git a/AyCode.Entities/Profiles/AcProfile.cs b/AyCode.Entities/Profiles/AcProfile.cs index 889fdd6..b810a89 100644 --- a/AyCode.Entities/Profiles/AcProfile.cs +++ b/AyCode.Entities/Profiles/AcProfile.cs @@ -23,7 +23,10 @@ namespace AyCode.Entities.Profiles public Guid Id { get; set; } public Guid? UserMediaId { get; set; } - public string? Name { get; set; } + [Required] + public string Name { get; set; } + public string? Description { get; set; } + public string? ThumbnailUrl { get ; set; } public DateTime Created { get; set; } diff --git a/AyCode.Entities/ServiceProviders/AcServiceProvider.cs b/AyCode.Entities/ServiceProviders/AcServiceProvider.cs index dafcc07..4911b33 100644 --- a/AyCode.Entities/ServiceProviders/AcServiceProvider.cs +++ b/AyCode.Entities/ServiceProviders/AcServiceProvider.cs @@ -14,10 +14,15 @@ namespace AyCode.Entities.ServiceProviders [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } + [Required] public Guid OwnerId { get; set; } + [Required] public string Name { get; set; } + public double? CommissionPercent { get; set; } + + [Required] public Guid AffiliateId { get; set; } public Guid? ReferralId { get; set; } @@ -40,13 +45,14 @@ namespace AyCode.Entities.ServiceProviders { } - protected AcServiceProvider(Guid id, string name, Guid ownerId, Guid affiliateId) : this() + protected AcServiceProvider(Guid id, string name, Guid ownerId, Guid affiliateId, double? commissionPercent = null) : this() { Id = id; Name = name; OwnerId = ownerId; AffiliateId = affiliateId; + CommissionPercent = commissionPercent; } } } diff --git a/AyCode.Entities/Users/AcUser.cs b/AyCode.Entities/Users/AcUser.cs index 4ccf29b..6697ccc 100644 --- a/AyCode.Entities/Users/AcUser.cs +++ b/AyCode.Entities/Users/AcUser.cs @@ -16,22 +16,28 @@ 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 { [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } - [Column("Email")] + + [Required, Column("Email")] public string EmailAddress { get; set; } //public string NormalizedEmail { get; set; } public string PhoneNumber { get; set; } public string Password { get; set; } public string? RefreshToken { get; set; } - + public bool EmailConfirmed { get; set; } + [Required] + public Guid AffiliateId { get; set; } = Guid.NewGuid(); + public Guid? RefferalId { get; set; } + + [Required] public Guid ProfileId { get; set; } [ForeignKey(nameof(ProfileId))] public virtual TProfile Profile { get; set; } @@ -44,8 +50,6 @@ namespace AyCode.Entities.Users public DateTime Modified { get; set; } - protected AcUser() { } - protected AcUser(string email, string password) : this(Guid.NewGuid(), email, password) { } protected AcUser(Guid id, string email, string password) : this() diff --git a/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs b/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs index b57dba6..1a99596 100644 --- a/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs +++ b/AyCode.Interfaces/Profiles/Dtos/IAcProfileDtoBase.cs @@ -5,5 +5,6 @@ namespace AyCode.Interfaces.Profiles.Dtos; public interface IAcProfileDtoBase : IEntityGuid, IMediaInfo { - string? Name { get; set; } + string Name { get; set; } + string? Description { get; set; } } \ No newline at end of file diff --git a/AyCode.Interfaces/ServiceProviders/IAcServiceProviderBase.cs b/AyCode.Interfaces/ServiceProviders/IAcServiceProviderBase.cs index 070695c..b59c001 100644 --- a/AyCode.Interfaces/ServiceProviders/IAcServiceProviderBase.cs +++ b/AyCode.Interfaces/ServiceProviders/IAcServiceProviderBase.cs @@ -3,6 +3,7 @@ using AyCode.Interfaces.Entities; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.TimeStampInfo; using System; +using System.Dynamic; namespace AyCode.Interfaces.ServiceProviders; @@ -10,6 +11,8 @@ public interface IAcServiceProviderBase : IEntityGuid, ITimeStampInfo, IOwnerId { string Name { get; set; } + double? CommissionPercent { get; set; } + Guid AffiliateId { get; set; } Guid? ReferralId { get; set; } } \ No newline at end of file diff --git a/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs b/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs index f102833..aae98e1 100644 --- a/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs +++ b/AyCode.Interfaces/Users/Dtos/IAcUserDtoMinBase.cs @@ -6,5 +6,5 @@ namespace AyCode.Interfaces.Users.Dtos; public interface IAcUserDtoMinBase : IEntityGuid, IAcProfileRelation where TProfile : class, IAcProfile { - + public Guid AffiliateId { get; set; } } \ No newline at end of file diff --git a/AyCode.Interfaces/Users/IAcUserBase.cs b/AyCode.Interfaces/Users/IAcUserBase.cs index 37cb496..685c511 100644 --- a/AyCode.Interfaces/Users/IAcUserBase.cs +++ b/AyCode.Interfaces/Users/IAcUserBase.cs @@ -9,4 +9,6 @@ public interface IAcUserBase : IEntityGuid, IAcProfileForeignKey, IEmailAddress, { public string PhoneNumber { get; set; } public string? RefreshToken { get; set; } + + public Guid? RefferalId { get; set; } } \ No newline at end of file diff --git a/AyCode.Models/Users/AcUserModelDtoBase.cs b/AyCode.Models/Users/AcUserModelDtoBase.cs index abdf04a..0609c3e 100644 --- a/AyCode.Models/Users/AcUserModelDtoBase.cs +++ b/AyCode.Models/Users/AcUserModelDtoBase.cs @@ -22,10 +22,12 @@ public abstract class AcUserModelDtoBase(user.ServiceProviders); //UserToServiceProviders = new List(user.UserToServiceProviders); - + ServiceProviders = new List(user.ServiceProviders.Count); UserToServiceProviders = new List(user.UserToServiceProviders.Count); diff --git a/AyCode.Models/Users/AcUserModelDtoMinBase.cs b/AyCode.Models/Users/AcUserModelDtoMinBase.cs index a5c9b37..23df5ad 100644 --- a/AyCode.Models/Users/AcUserModelDtoMinBase.cs +++ b/AyCode.Models/Users/AcUserModelDtoMinBase.cs @@ -20,6 +20,7 @@ public abstract class AcUserModelDtoMinBase UserDto = Activator.CreateInstance(); UserDto.Id = user.Id; + UserDto.AffiliateId = user.AffiliateId; Profile = Activator.CreateInstance(); Profile.Id = user.Profile.Id;