using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace WorkFlowCheck.Common.DTO
{
    public class UserDTO
    {
        public int Id { get; set; }

        [Required(ErrorMessage = "Az utónév kötelező.")]
        [EmailAddress(ErrorMessage = "Érvénytelen email cím.")]
        [RegularExpression(@"^[^@\s]+@[^@\s]+\.[^@\s]+$", ErrorMessage = "Az email formátum nem megfelelő.")]
        [DisplayName("E-mail")]
        public string Email { get; set; } = null!;
        
        [Required(ErrorMessage = "Az utónév kötelező.")]
        [DisplayName("Utónév")]
        public string FirstName { get; set; } = null!;
        
        [Required(ErrorMessage = "Az vezetéknév kötelező.")]
        [DisplayName("Vezetéknév")]
        public string LastName { get; set; } = null!;
        
        [Required(ErrorMessage = "A felhasználónév kötelező.")]
        [DisplayName("Felhasználó neve")]
        public string UserName { get;set; } = null!;

        [Required(ErrorMessage = "A jelszó kötelező.")]
        [RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{6,}$", ErrorMessage = "A jelszónak legalább 6 karakter hosszúnak kell lennie, és tartalmaznia kell kis- és nagybetűt, számot és speciális karaktert.")]
        [DisplayName("Jelszó")]
        public string Password { get; set; } = null!;


        public string JwtToken { get; set; } = null!;

        [DisplayName("Aktív")]
        public bool Active { get; set; }

        [DisplayName("NFC belépés")]
        public bool NFCActive { get; set; }

        [DisplayName("NFC kód")]
        public string NFCCode { get; set; } = null!;

        public ICollection<RoleDTO>? RoleDTO { get; set; } = new List<RoleDTO>();
    }
}
