using Contracts.BindingModels; using Contracts.ViewModels; using DataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DatabaseImplement.Models { public class User : IUser { public Guid Id { get; set; } [Required] public string FirstName { get; set; } = string.Empty; [Required] public string SecondName { get; set; } = string.Empty; [Required] public string PasswordHash { get; set; } = string.Empty; [Required] public string Email { get; set; } = string.Empty; [Required] public DateTime Birthday { get; set; } public Role? Role { get; set; } public UserBindingModel GetBindingModel() { // TODO: get binding with a role by database contetxt throw new NotImplementedException(); } public static User ToUserFromView(UserViewModel model) => new() { Id = model.Id, FirstName = model.FirstName, SecondName = model.SecondName, Email = model.Email, Birthday = model.Birthday, Role = Models.Role.ToRoleFromView(model.Role) }; public static User ToUserFromBinding(UserBindingModel model) => new() { Id = model.Id, FirstName = model.FirstName, SecondName = model.SecondName, Email = model.Email, PasswordHash = model.PasswordHash, Birthday = model.Birthday, Role = Models.Role.ToRoleFromBinding(model.Role) }; public void Update(UserBindingModel model) { if (model is null) { throw new ArgumentNullException("Update user: binding model is null"); } Email = model.Email; FirstName = model.FirstName; SecondName = model.SecondName; PasswordHash = model.PasswordHash; Birthday = model.Birthday; Role = Models.Role.ToRoleFromBinding(model.Role); } } }