using EmitMapper;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
    public static class APIDoorServerService
    {
        /// 
        /// 保存 出入记录
        /// 
        /// 项目ID
        /// 身份证号码
        /// 1进0出
        /// 进出时间
        /// 进出方式
        public static void SaveDoorInOutRecord(string projectId, string idCard, int isIn, DateTime changeTime, string Intype)
        {
            Model.SitePerson_Person getPerson = new Model.SitePerson_Person();
            int maxId = 0;
            string name = string.Empty;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == idCard && x.ProjectId == projectId);
                if (getPerson != null)
                {
                    name = getPerson.PersonName;
                }
                else
                {
                    getPerson = db.SitePerson_Person.Where(x => x.IdentityCard == idCard).OrderByDescending(x => x.InTime).FirstOrDefault();
                    if (getPerson != null)
                    {
                        name = getPerson.PersonName;
                        projectId = getPerson.ProjectId;
                    }
                }
                var getmax = db.T_d_facerecord.Where(x => x.ProjectId == projectId && x.RoleID == Intype).Select(x => x.ID);
                if (getmax.Count() > 0)
                {
                    maxId = getmax.Max() + 1;
                }
                Model.T_d_facerecord newFacerecord = new Model.T_d_facerecord()
                {
                    NewID = SQLHelper.GetNewID(),
                    ProjectId = projectId,
                    ID = maxId + 1,
                    EmployName = name,
                    EmployNO = idCard,
                    RoleID = Intype,
                    DateTimeRecord = changeTime,
                    RecordDes = Intype,
                    InOrOut = (isIn == 1 ? "进门" : "出门"),
                };
                db.T_d_facerecord.InsertOnSubmit(newFacerecord);
                db.SubmitChanges();
            }
            if (getPerson != null)
            {
                ///// 根据出入记录 写入考勤记录
                Model.t_d_facerecordItem facerecord = new Model.t_d_facerecordItem
                {
                    ID = maxId + 1,
                    EmployName = name,
                    IDCardNo = idCard,
                    EmployNO = idCard,
                    ProjectId = projectId,
                    RoleID = Intype,
                    DateTimeRecord = changeTime,
                    RecordDes = Intype,
                    InOrOut = (isIn == 1 ? "进门" : "出门"),
                };
                DoorServerService.InsertEmployInOutRecord(facerecord, getPerson);
                APIPersonService.getPersonInOut(getPerson, isIn, changeTime);
            }
        }
    }
}