MyBookmark/Modules.User.Domain/Entities/User/User.cs
2024-11-27 03:22:03 +03:00

75 lines
1.8 KiB
C#

using Modules.User.Domain.Gateways;
namespace Modules.User.Domain.Entities.User;
public class User
{
public Guid Id { get; private set; }
public Account.Account Account { get; private set; } = default!;
public string NickName { get; private set; } = default!;
public string? FirstName { get; private set; }
public string? Patronymic { get; private set; }
public string? LastName { get; private set; }
public DateOnly? BirthDate { get; set; }
public string? AvatarId { get; private set; }
public Guid? LanguageId { get; private set; }
private User() { }
public User(Models.User model)
{
Id = model.Id;
Account = new Account.Account(model.Account);
NickName = model.NickName;
FirstName = model.FirstName;
Patronymic = model.Patronymic;
LastName = model.LastName;
BirthDate = model.BirthDate;
AvatarId = model.AvatarId;
LanguageId = model.LanguageId;
}
public static User Create(string email, string password, IPasswordGateway passwordHasher, string nickname)
{
if (string.IsNullOrWhiteSpace(nickname)) throw new ArgumentNullException(nameof(nickname));
return new User
{
Account = Entities.Account.Account.Create(email, password, passwordHasher),
NickName = nickname,
};
}
public void SetAvatar(string? avatarId)
{
AvatarId = avatarId;
}
public void SetFirstName(string? value)
{
FirstName = value;
}
public void SetPatronymic(string? value)
{
Patronymic = value;
}
public void SetLastName(string? value)
{
LastName = value;
}
public void SetBirthDate(DateOnly? value)
{
BirthDate = value;
}
public void SetLanguageId(Guid? value)
{
LanguageId = value;
}
}