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 : IAcServiceProvider where TUser : class, IAcUserBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase { [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } public Guid OwnerId { get; set; } public string Name { get; set; } public Guid AffiliateId { get; set; } public Guid? ReferralId { get; set; } public virtual List Users { get; set; } public virtual List 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) : this() { Id = id; Name = name; OwnerId = ownerId; AffiliateId = affiliateId; } } }