using System;
using System.ComponentModel;

namespace Bp.Sync.Domain.Entities.FcCustomers.Customers
{
    public class FcCustomer
    {
        #region General Info
        public string BarCode { get; set; }
        public string BloodType { get; set; }
        public string Weight { get; set; }
        public int EarnPoint { get; set; }
        #endregion

        #region BaseEntity
        public Status Status { get; set; }
        public bool IsDeleted { get; set; }
        public DateTimeOffset CreatedTime { get; set; }
        public DateTimeOffset UpdatedTime { get; set; }
        public int? CreatedBy { get; set; }
        public string CreatedByUserName { get; set; }
        public int? UpdatedBy { get; set; }
        public string UpdatedByUserName { get; set; }
        public string Token { get; set; }
        public DateTimeOffset? LockedDate { get; set; }
        public string FullName { get; set; }
        public bool? IsDefault { get; set; }
        #endregion

        #region Tài chính       
        /// <summary>
        /// Tên ngân hàng
        /// </summary>
        /// 
        public string BankName { get; set; }
        /// <summary>
        /// Tên chi nhánh ngân hàng
        /// </summary>
        /// 
        public string BankBranchName { get; set; }
        /// <summary>
        /// Tên chủ thẻ 
        /// </summary>
        /// 
        public string BankAccountName { get; set; }
        /// <summary>
        /// Số thẻ ngân hàng
        /// </summary>
        /// 
        public string BankCardNumber { get; set; }
        /// <summary>
        /// Số tài khoản ngân hàng
        /// </summary>
        /// 
        public string BankAccountNumber { get; set; }
        #endregion

        #region Location
        /// <summary>
        /// Mã tỉnh / thành phố
        /// </summary>
        public int? CityId { get; set; }
        /// <summary>
        /// Mã quận / huyện
        /// </summary>
        public int? DistrictId { get; set; }
        /// <summary>
        /// Mã phường / xã
        /// </summary>
        public int? WardId { get; set; }


        ///// <summary>
        ///// Địa chỉ
        ///// </summary>
        public string Address { get; set; }



        #endregion

        #region Basic
        /// <summary>
        /// Giới tính (True = Nam, False = Nữ)
        /// </summary>
        public bool? Sex { get; set; }
        /// <summary>
        /// Ngày sinh
        /// </summary>
        public DateTimeOffset DateOfBirth { get; set; }
        /// <summary>
        /// Số CMTND
        /// </summary>
        public string IdentityNumber { get; set; }
        /// <summary>
        /// Ngày cấp CMTND
        /// </summary>
        public DateTime? DateOfIssue { get; set; }
        /// <summary>
        /// Nơi cấp CMTND
        /// </summary>
        public string PlaceOfIssue { get; set; }

        #endregion

        #region Store
        /// <summary>
        /// Mã cửa hàng
        /// </summary>
        public int BranchId { get; set; }
        /// <summary>
        /// Người quản lý, người Sale nếu là đối tác
        /// </summary>
        public int? ManagerId { get; set; }
        public string ManagerUserName { get; set; }
        #endregion

        #region Group
        /// <summary>
        /// Thuộc Group nào
        /// </summary>
        public int? GroupId { get; set; }
        #endregion

        public DateTimeOffset? LockoutEnd { get; set; }

        public bool TwoFactorEnabled { get; set; }

        public bool PhoneNumberConfirmed { get; set; }

        public string PhoneNumber { get; set; }

        public string ConcurrencyStamp { get; set; }

        public string SecurityStamp { get; set; }

        public string PasswordHash { get; set; }

        public bool EmailConfirmed { get; set; }

        public string NormalizedEmail { get; set; }

        public string Email { get; set; }

        public string NormalizedUserName { get; set; }

        public string UserName { get; set; }

        public long Id { get; set; }

        public bool LockoutEnabled { get; set; }

        public virtual int AccessFailedCount { get; set; }
    }

    public enum Status
    {
        [Description("Kích hoạt")]
        Active = 0,
        [Description("Đã khóa")]
        Lock = 1
    }
}
