using OASystem.Domain.Attributes;
using OASystem.Domain.Entities.Customer;
using OASystem.Domain.Enums;
using Org.BouncyCastle.Asn1.Ocsp;
using Org.BouncyCastle.Asn1.X9;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Google.Protobuf.Reflection.SourceCodeInfo.Types;

namespace OASystem.Domain.ViewModels.CRM
{

    public class DetailsView
    {
        public int Id { get; set; }
        /// <summary>
        /// 客户分类
        /// </summary>
        public int Category { get; set; }

        /// <summary>
        /// 地市州Id
        /// </summary>
        public int Lvlid { get; set; }

        /// <summary>
        /// 权重
        /// </summary>
        [Encrypted]
        public string Weight { get; set; }

        /// <summary>
        /// 联系人
        /// </summary>
        [Encrypted]
        public string Contact { get; set; }

        /// <summary>
        /// 联系人性别
        /// </summary>
        public int Gender { get; set; }

        /// <summary>
        /// 联系手机号
        /// </summary>
        [Encrypted]
        public string Telephone { get; set; }

        /// <summary>
        /// 联系座机号
        /// </summary>
        [Encrypted]
        public string Phone { get; set; }

        /// <summary>
        /// 邮件
        /// </summary>
        [Encrypted]
        public string Email { get; set; }

        /// <summary>
        /// 职位
        /// </summary>
        [Encrypted]
        public string Job { get; set; }

        /// <summary>
        /// 客户单位
        /// </summary>
        [Encrypted]
        public string Client { get; set; }

        /// <summary>
        /// 客户单位简写
        /// </summary>
        [Encrypted]
        public string ClientShort { get; set; }

        /// <summary>
        /// 所属区域(所在城市)
        /// </summary>
        [Encrypted]
        public string Location { get; set; }

        /// <summary>
        /// 地址
        /// </summary>
        [Encrypted]
        public string Address { get; set; }

        /// <summary>
        /// 护照
        /// </summary>
        [Encrypted]
        public string Passport { get; set; }

        /// <summary>
        /// 护照日期
        /// </summary>
        [Encrypted]
        public string? PassportDate { get; set; }

        /// <summary>
        /// 生日
        /// </summary>
        [Encrypted]
        public string Birthday { get; set; }

        /// <summary>
        /// 预计出团
        /// </summary>
        public int PreDele { get; set; }

        /// <summary>
        /// 已出团
        /// </summary>
        public int FinlishedDele { get; set; }

        /// <summary>
        /// 归属人员
        /// </summary>
        public List<int>? AscribedUser { get; set; }

        /// <summary>
        /// 归属部门
        /// </summary>
        public List<int>? AscribedDepartment { get; set; }


        /// <summary>
        /// 微信
        /// </summary>
        [Encrypted]
        public string WeChat { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [Encrypted]
        public string Remark { get; set; }
    }

    public class NewClientDataAndroidIOSView
    {
        /// <summary>
        /// 编号
        /// </summary>
        public int RowNumber { get; set; }

        public int Id { get; set; }


        /// <summary>
        /// 客户单位
        /// </summary>
        public string? Client { get; set; }

        /// <summary>
        /// 联系人
        /// </summary>
        public string? Contact { get; set; }

        /// <summary>
        /// 职位
        /// </summary>
        public string? Job { get; set; }

        /// <summary>
        /// 联系手机号
        /// </summary>
        public string? Telephone { get; set; }

        /// <summary>
        /// 所在区域
        /// </summary>
        public string? Location { get; set; }

    }

    public class NewClientDataView : Crm_NewClientData
    {
        /// <summary>
        /// 总条数
        /// </summary>
        public int countPage { get; set; }
        /// <summary>
        /// 编号
        /// </summary>
        public int RowNumber { get; set; }

        /// <summary>
        /// 客户分类
        /// </summary>
        public string CategoryStr { get; set; }

        /// <summary>
        /// 地市州Id
        /// </summary>
        public string LvlidStr { get; set; }

        /// <summary>
        /// 归属人员
        /// </summary>
        public dynamic AscribedUser { get; set; }

        /// <summary>
        /// 归属部门
        /// </summary>
        public dynamic AscribedDepartment { get; set; }
    }
    /// <summary>
    ///归属人员
    /// </summary>
    public class AscribedUser
    {
        /// <summary>
        /// 人员Id
        /// </summary>
        public int UserId { get; set; }
        /// <summary>
        /// 归属人员姓名
        /// </summary>
        public string CnName { get; set; }

        public int NewClientDataId { get; set; }
    }

    /// <summary>
    ///归属部门
    /// </summary>
    public class AscribedDepartment
    {
        /// <summary>
        /// setData部门部门Id
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 归属部门名称
        /// </summary>
        public string Name { get; set; }

        public int NewClientDataId { get; set; }
    }


    public class NewClientDataExcelDownloadView : Crm_NewClientData
    {
        /// <summary>
        /// 编号
        /// </summary>
        public int RowNumber { get; set; }

        /// <summary>
        /// 客户分类
        /// </summary>
        public string CategoryStr { get; set; }

        /// <summary>
        /// 地市州Id
        /// </summary>
        public string LvlidStr { get; set; }

        public string CreateUserName { get; set; }

        public string WeightLable {
            get
            {
                if (int.TryParse(Weight,out int weightId))
                {
                    if (weightId == 393) return "A";
                    else if (weightId == 392) return "B";
                    else if (weightId == 391) return "C";
                    else return "D";
                }
                return "D";
            }
        }

        public string SexLable
        {
            get
            {
                return Gender == 0 ? "男" : Gender == 1 ? "女" : "未设置";
            }
        }

        public string AscribedUserLable { get; set; } = "";
        public string AscribedDepartmentLable { get; set; } = "";
    }

    public class CRMWeekStatisticsView
    {
        public string UserName { get; set; }
        public int InsertNum { get; set; }
        public int DeleteNum { get; set; }
    }


    public class NewClientDataRecordView
    {
        public int RowIndex { get; set; }
        public int Id { get; set; }
        public int PortType { get; set; }
        public string PortTypeLabel
        {
            get
            {
                string lable = string.Empty;
                if (PortType == 1) lable = "WEB";
                else if (PortType == 2) lable = "ANDROID";
                else if (PortType == 3) lable = "IOS";
                return lable;
            }
        }
        public OperationEnum OperationItem { get; set; }
        public string OperationItemLable
        {
            get
            {
                return OperationItem.GetEnumDescription();
            }
        }
        public int CreateUserId { get; set; }
        public string CreateUserName { get; set; }
        public DateTime CreateTime { get; set; }
        public string UpdatePreData { get; set; }
        public string UpdateBefData { get; set; }
    }

}