AyCode.Core/AyCode.Entities/Users/AcUser.cs

73 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.Users;
using AyCode.Entities.ServiceProviders;
using AyCode.Interfaces.ServiceProviders;
//- szétszedni az UserToServiceProvider és UserToProduct mapping list-eket külön interface-re
//- külön interface-ek az entity foreignId -khoz! pl: IUserForeignKey, IProductForeignKey, stb...
//- ModelDto Initialize(...)
namespace AyCode.Entities.Users
{
[Table("Users")]
public abstract class AcUser<TProfile, TServiceProvider, TUserToServiceProvider> : IAcUser<TProfile, TServiceProvider, TUserToServiceProvider>
where TProfile : class, IAcProfile
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
[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; }
public Guid ProfileId { get; set; }
[ForeignKey(nameof(ProfileId))]
public virtual TProfile Profile { get; set; }
//[NotMapped]
public virtual List<TServiceProvider> ServiceProviders { get; set; }
public virtual List<TUserToServiceProvider> UserToServiceProviders { get; set; }
public DateTime Created { get; set; }
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()
{
Id = id;
EmailAddress = email;
Password = password;
}
protected AcUser(string email, string phoneNumber, string password) : this(Guid.NewGuid(), email, phoneNumber, password) { }
protected AcUser(Guid id, string email, string phoneNumber, string password) : this(id, email, password)
{
PhoneNumber = phoneNumber;
}
protected AcUser(string email, string phoneNumber, string password, string refreshToken) : this(Guid.NewGuid(), email, phoneNumber, password, refreshToken) { }
protected AcUser(Guid id, string email, string phoneNumber, string password, string refreshToken) : this(id, email, phoneNumber, password)
{
RefreshToken = refreshToken;
}
}
}