using Microsoft.AspNetCore.Http;
using MTWorkHR.Core.Global;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace MTWorkHR.Application.Models
{
    public class UserUpdateDto
    {
        public string? Id { get; set; }
        [Required]
        public string FirstName { get; set; }
        public DateTime DateOfBirth { get; set; }

        public string IdNumber { get; set; }
        public string LastName { get; set; }
        [Required]
        [EmailAddress]
        public string Email { get; set; }

        public string PassportNumber { get; set; }
        public DateTime? PassportExpiryDate { get; set; }

        public string? FavoriteName { get; set; }

        public string PhoneNumber { get; set; }
        public string? LinkedInLink { get; set; }
        [Required]
        public UserTypeEnum UserType { get; set; }
        [Required]
        [MinLength(6)]
        public string UserName { get; set; }
        public string? Password { get; set; }

        public int? QualificationId { get; set; }
        public int? UniversityId { get; set; }
        public int? JobTitleId { get; set; }
        public int? IndustryId { get; set; }
        public int? CountryId { get; set; }
        public int? NationalityId { get; set; }
        public string? QualificationName { get; set; }
        public string? UniversityName { get; set; }
        public string? JobTitleName { get; set; }
        public string? IndustryName { get; set; }
        public string? CountryName { get; set; }
        public decimal TaxNumber { get; set; }
        public decimal IncomeTaxValue { get; set; }
        public string? Position { get; set; }
        public long? CompanyId { get; set; }
        public IFormFile? ProfileImage { get; set; }

        public IFormFile? CVAttach { get; set; }
        public IFormFile? PassportAttach { get; set; }
        public IFormFile? EduCertificateAttach { get; set; }
        public IFormFile? ExperienceCertificateAttach { get; set; }
        public IFormFile? ProfCertificateAttach { get; set; }

        public IList<UserRoleDto>? UserRoles { get; set; }
        public IList<AttachmentDto>? UserAttachments { get; set; }
        public UserAddressDto? UserAddress { get; set; }
    }
}