using PolyclinicContracts.BindingModels;
using PolyclinicContracts.ViewModels;
using PolyclinicDataModels.Enums;
using PolyclinicDataModels.Models;
using System.ComponentModel.DataAnnotations;

namespace PolyclinicDatabaseImplement.Models
{
    public class User : IUserModel
    {
        [Required]
        public string FIO { get; set; } = string.Empty;
        [Required]
        public string Email { get; set; } = string.Empty;
        [Required]
        public string Password { get; set; } = string.Empty;
        [Required]
        public UserRole Role { get; set; } = UserRole.Неизвестный;
        public int Id { get; set; }
        
        public static User? Create(UserBindingModel? model)
        {
            if (model == null)
            {
                return null;
            }
            return new User
            {
                FIO = model.FIO,
                Email = model.Email,
                Password = model.Password,
                Role = model.Role,
                Id = model.Id
            };
        }

        public void Update(UserBindingModel? model)
        {
            if (model == null)
            {
                return;
            }
            FIO = model.FIO;
            Email = model.Email;
            Password = model.Password;
            Role = model.Role;
            FIO = model.FIO;
        }

        public UserViewModel GetViewModel => new()
        {
            FIO = FIO,
            Email = Email,
            Password = Password,
            Role = Role,
            Id = Id
        };
    }
}