using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using BLL;
using WebAPI.Filter;

namespace WebAPI.Controllers
{
    /// <summary>
    /// 
    /// </summary>
    public class uploadController : ApiController
    {
        #region 潮州华瀛项目出入记录接口
        /// <summary>
        /// 保存出入记录信息
        /// </summary>
        /// <param name="records">出入记录信息</param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData attendance([FromBody] Model.attendanceItems records)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (records != null && records.records.Count() > 0)
                {
                    List<Model.attendanceItem> attendanceItems = records.records;
                    using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                    {
                        string projectId = "310e790e-5ede-4345-98a4-8bd0866e69ef";  ////潮州华瀛
                        int maxId = 0;
                        var getmax = db.T_d_facerecord.Where(x => x.ProjectId == projectId && x.RoleID == "白名单").Select(x => x.ID);
                        if (getmax.Count() > 0)
                        {
                            maxId = getmax.Max() + 1;
                        }
                        foreach (var item in attendanceItems)
                        {
                            string name = string.Empty;
                            string cardNo = string.Empty;
                            var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == item.idCardNumber);
                            if (getPerson != null)
                            {
                                name = getPerson.PersonName;
                                cardNo = getPerson.CardNo;
                            }

                            Model.T_d_facerecord newFacerecord = new Model.T_d_facerecord()
                            {
                                NewID = SQLHelper.GetNewID(),
                                ProjectId = projectId,
                                ID = maxId + 1,
                                EmployName = name,
                                EmployNO = item.idCardNumber,
                                RoleID = "白名单",
                                DateTimeRecord = Funs.GetNewDateTime(item.attendanceTime),
                                RecordDes = "白名单:允许通行",
                                InOrOut = (item.attendanceType == 1 ? "进门" : "出门"),
                            };

                            db.T_d_facerecord.InsertOnSubmit(newFacerecord);
                            db.SubmitChanges();
                            ///// 根据出入记录 写入考勤记录
                            Model.t_d_facerecordItem facerecord = new Model.t_d_facerecordItem
                            {
                                ID = maxId + 1,
                                EmployName = name,
                                IDCardNo = item.idCardNumber,
                                EmployNO = item.idCardNumber,
                                ProjectId = projectId,
                                RoleID = "白名单",
                                DateTimeRecord = Funs.GetNewDateTime(item.attendanceTime),
                                RecordDes = "白名单:允许通行",
                                InOrOut = (item.attendanceType == 1 ? "进门" : "出门"),
                            };
                            DoorServerService.InsertEmployInOutRecord(facerecord);
                            if (facerecord.DateTimeRecord.HasValue)
                            {
                                int isIn = 0;
                                if (facerecord.InOrOut == "进门")
                                {
                                    isIn = 1;
                                }
                                APIPersonService.getPersonInOut(facerecord.ProjectId, facerecord.EmployNO, isIn, facerecord.DateTimeRecord.Value);
                            }
                        }
                        responeData.code = 0;
                    }
                }
                else
                {
                    responeData.message ="数据为空!";
                }
            }
            catch (Exception ex)
            {
                responeData.code = -1;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion
    }
}