using Microsoft.AspNetCore.Identity;
using MTWorkHR.Core.Entities;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MTWorkHR.Infrastructure.Entities
{
    public class ApplicationUser : IdentityUser
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string IdNumber { get; set; }
        public DateTime DateOfBirth { get; set; }
        public int UserType { get; set; }
        public string? FavoriteName { get; set; }
        public string PassportNumber { get; set; }
        public DateTime? PassportExpiryDate { get; set; }
        public long? QualificationId { get; set; }

        [ForeignKey("QualificationId")]
        public Qualification? Qualification { get; set; }
        public long? UniversityId { get; set; }
        [ForeignKey("UniversityId")]
        public University? University { get; set; }
        public long? JobTitleId { get; set; }
        [ForeignKey("JobTitleId")]
        public JobTitle? JobTitle { get; set; }
        public long? IndustryId { get; set; }
        [ForeignKey("IndustryId")]
        public Industry? Industry { get; set; }
        public long? NationalityId { get; set; }
        [ForeignKey("NationalityId")]

        public Nationality? Nationality { get; set; }
        public long? CountryId { get; set; }
        [ForeignKey("CountryId")]

        public CountryLookup? Country { get; set; }

        public string? ManagerId { get; set; }
        [Column(TypeName = "decimal(18,2)")]

        public decimal? TaxNumber { get; set; }
        [Column(TypeName = "decimal(18,2)")]

        public decimal? IncomeTaxValue { get; set; }

        [ForeignKey("ManagerId")]
        public ApplicationUser Manager { get; set; }


        public string? CreateUser { get; set; }
        public DateTime? CreateDate { get; set; }
        public DateTime? UpdateDate{ get; set; }
        public string? UpdateUser { get; set; }

        public bool IsStopped { get; set; }
        public bool IsDeleted { get; set; }
        public string? DeleteUserId { get; set; }
        public string? LinkedInLink { get; set; }
        public string? Position { get; set; }
        public long? CompanyId { get; set; }
        public string? CompanyRepresentativeTitle { get; set; }

        public ICollection<ApplicationRole> UserRoles { get; set; }
        public ICollection<UserAttachment> UserAttachments { get; set; }
        public UserAddress UserAddress { get; set; }

    }
}