59 lines
1.7 KiB
C#
59 lines
1.7 KiB
C#
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using AyCode.Interfaces.ServiceProviders;
|
|
using AyCode.Interfaces.Users;
|
|
|
|
namespace AyCode.Entities.ServiceProviders
|
|
{
|
|
[Table("ServiceProviders")]
|
|
public abstract class AcServiceProvider<TUser, TUserToServiceProvider> : IAcServiceProvider<TUser, TUserToServiceProvider>
|
|
where TUser : class, IAcUserBase
|
|
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
|
|
{
|
|
[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; }
|
|
|
|
public virtual List<TUser> Users { get; set; }
|
|
public virtual List<TUserToServiceProvider> UserToServiceProviders { get; set; }
|
|
|
|
public DateTime Created { get; set; }
|
|
public DateTime Modified { get; set; }
|
|
|
|
|
|
protected AcServiceProvider()
|
|
{
|
|
}
|
|
|
|
protected AcServiceProvider(string name, Guid ownerId) : this(Guid.NewGuid(), name, ownerId)
|
|
{
|
|
}
|
|
|
|
protected AcServiceProvider(Guid id, string name, Guid ownerId) : this(id, name, ownerId, Guid.NewGuid())
|
|
{
|
|
}
|
|
|
|
protected AcServiceProvider(Guid id, string name, Guid ownerId, Guid affiliateId, double? commissionPercent = null) : this()
|
|
{
|
|
Id = id;
|
|
Name = name;
|
|
OwnerId = ownerId;
|
|
|
|
AffiliateId = affiliateId;
|
|
CommissionPercent = commissionPercent;
|
|
}
|
|
}
|
|
}
|