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? SecondName { get; private set; } public string? LastName { get; private 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; SecondName = model.LastName; LastName = model.LastName; 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; } }