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

namespace Application.Features.Director.User.Get
{
    public class Response
    {
        [DisplayName("PK")]
        [Required(ErrorMessage = "ID는 필수 항목입니다.")]
        public required string ID { get; set; }

        [DisplayName("이름")]
        [Required(ErrorMessage = "{0}을 입력해주세요.")]
        public string? Name { get; set; }

        [DisplayName("이메일")]
        [Required(ErrorMessage = "{0}를 입력하세요.")]
        [EmailAddress(ErrorMessage = "올바른 이메일 주소를 입력하세요.")]
        public string? Email { get; set; }

        [DisplayName("연락처")]
        [Phone(ErrorMessage = "올바른 연락처를 입력하세요.")]
        public string? Phone { get; set; }

        [DisplayName("새 비밀번호")]
        [DataType(DataType.Password)]
        [StringLength(100, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.", MinimumLength = 6)]
        public string? NewPassword { get; set; }

        [DisplayName("새 비밀번호 재입력")]
        [DataType(DataType.Password)]
        [Compare("NewPassword", ErrorMessage = "두 비밀번호가 서로 일치하지 않습니다.")]
        public string? ConfirmPassword { get; set; }

        [DisplayName("비활성화")]
        public bool IsDeleted { get; set; } = false;

        [DisplayName("이메일 인증 여부")]
        public bool EmailConfirmed { get; set; } = false;

        [DisplayName("로그인 차단")]
        public bool LockoutEnd { get; set; } = false;

        public IEnumerable<string> Roles { get; set; } = [];
    }
}