using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using CK.SCP.Models.ScpEntity;

namespace CK.SCP.Models.AppBoxEntity
{
    public class User : IKeyID
    {
        [Key]
        public int ID { get; set; }

        [Required, StringLength(50)]
        public string Name { get; set; }

        [Required, StringLength(100)]
        public string Email { get; set; }

        [Required, StringLength(50)]
        public string Password { get; set; }

        [Required]
        public bool Enabled { get; set; }

        [StringLength(10)]
        public string Gender { get; set; }

        [StringLength(100)]
        public string ChineseName { get; set; }

        [StringLength(100)]
        public string EnglishName { get; set; }

        [StringLength(200)]
        public string Photo { get; set; }

        [StringLength(50)]
        public string QQ { get; set; }

        [StringLength(100)]
        public string CompanyEmail { get; set; }

        [StringLength(50)]
        public string OfficePhone { get; set; }

        [StringLength(50)]
        public string OfficePhoneExt { get; set; }

        [StringLength(50)]
        public string HomePhone { get; set; }

        [StringLength(50)]
        public string CellPhone { get; set; }

        [StringLength(500)]
        public string Address { get; set; }

        [StringLength(500)]
        public string Remark { get; set; }

        [StringLength(500)]
        public string SupplierCode { get; set; }

        [NotMapped]
        [StringLength(500)]
        public string VendName { get; set; }

        [StringLength(50)]
        public string IdentityCard { get; set; }

       


        public DateTime? Birthday { get; set; }
        public DateTime? TakeOfficeTime { get; set; }
        public DateTime? LastLoginTime { get; set; }
        public DateTime? CreateTime { get; set; }

        public int ErrorCount { get; set; }

        public DateTime LastUpdatePasswordTime { get; set; } = DateTime.Now;

        public virtual ICollection<TA_FACTORY> TA_FACTORY { get; set; }
        /*
        public virtual ICollection<FACTORY_ADDRESS> FACTORY_ADDRESS { get; set; }
        */
        public virtual ICollection<Role> Roles { get; set; }
        public virtual ICollection<Title> Titles { get; set; }

        public virtual Dept Dept { get; set; }

        [NotMapped]
        public List<string> VenderList { set; get; }
        [NotMapped]
        public List<string> FactoryList { set; get; }
        [NotMapped]
        public List<string> PowerList { set; get; }
        [NotMapped]
        public List<string> RoleList { set; get; }
        [NotMapped]
        public Dictionary<string,string> ConfigList { set; get; }

        [NotMapped]
        public List<string> SubSiteList { set; get; }

        [NotMapped]
        public string UsedDomain { set; get; }




    }
}