using Model;
using Model.HJGL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Web.UI.WebControls;

namespace BLL
{
    /// <summary>
    /// 焊工管理
    /// </summary>
    public static class APIWelderEntranceService
    {

        public static List<WelderEntrance> GetWelderList(string projectId, int index, int page, string name)
        {
            List<WelderEntrance> res = new List<WelderEntrance>();
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                var q = from x in db.BS_Welder_Entrance
                        where x.ProjectId == projectId
                        where name == "" || x.WED_Name.Contains(name)
                        select x;
                var list = q.Skip(index * page).Take(page).ToList();
                foreach (var item in list)
                {
                    WelderEntrance welderEntrance = new WelderEntrance();
                    welderEntrance.Auditor = item.Auditor;
                    if (!string.IsNullOrEmpty(item.Auditor))
                    {
                        var unit = db.Sys_User.FirstOrDefault(x => x.UserId == item.Auditor);
                        if (unit != null)
                        {
                            welderEntrance.AuditorName = unit.UserName;
                        }
                    }
                    welderEntrance.WED_ID = item.WED_ID;
                    welderEntrance.WED_Name = item.WED_Name;
                    welderEntrance.WED_Code = item.WED_Code;
                    welderEntrance.IdentityCard = item.IdentityCard;

                    welderEntrance.WED_Unit = item.WED_Unit;
                    if (!string.IsNullOrEmpty(item.WED_Unit))
                    {
                        var unit = db.Base_Unit.FirstOrDefault(x => x.UnitId == item.WED_Unit);
                        if (unit != null)
                        {
                            welderEntrance.WED_UnitName = unit.UnitName;
                        }
                    }
                    welderEntrance.WED_WorkCode = item.WED_WorkCode;
                    welderEntrance.SE_Equipment = item.SE_Equipment;
                    welderEntrance.Exam_Res = item.Exam_Res;
                    welderEntrance.SE_Equipment_Apply = item.SE_Equipment_Apply;
                    welderEntrance.Status = item.Status;
                    welderEntrance.ProjectId = item.ProjectId;
                    welderEntrance.Auditor = item.Auditor;
                    welderEntrance.Limit_Date = item.Limit_Date.HasValue ? item.Limit_Date.Value.ToString("yyyy-MM-dd") : "";
                    welderEntrance.SE_Equipment_Apply = item.SE_Equipment_Apply;


                    res.Add(welderEntrance);
                }

            }
            return res;
        }

        /// <summary>
        /// 根据主键获取焊工信息
        /// </summary>
        /// <param name="welderId"></param>
        /// <returns></returns>
        public static WelderEntrance GetWelderById(string welderId)
        {
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                var item = db.BS_Welder_Entrance.FirstOrDefault(e => e.WED_ID == welderId);

                WelderEntrance welderEntrance = new WelderEntrance();
                welderEntrance.Auditor = item.Auditor;
                if (!string.IsNullOrEmpty(item.Auditor))
                {
                    var unit = db.Sys_User.FirstOrDefault(x => x.UserId == item.Auditor);
                    if (unit != null)
                    {
                        welderEntrance.AuditorName = unit.UserName;
                    }
                }
                welderEntrance.WED_ID = item.WED_ID;
                welderEntrance.WED_Name = item.WED_Name;
                welderEntrance.WED_Code = item.WED_Code;
                welderEntrance.IdentityCard = item.IdentityCard;

                welderEntrance.WED_Unit = item.WED_Unit;
                if (!string.IsNullOrEmpty(item.WED_Unit))
                {
                    var unit = db.Base_Unit.FirstOrDefault(x => x.UnitId == item.WED_Unit);
                    if (unit != null)
                    {
                        welderEntrance.WED_UnitName = unit.UnitName;
                    }
                }
                welderEntrance.WED_WorkCode = item.WED_WorkCode;
                welderEntrance.SE_Equipment = item.SE_Equipment;
                welderEntrance.Exam_Res = item.Exam_Res;
                welderEntrance.SE_Equipment_Apply = item.SE_Equipment_Apply;
                welderEntrance.Status = item.Status;
                welderEntrance.ProjectId = item.ProjectId;
                welderEntrance.Auditor = item.Auditor;
                welderEntrance.Limit_Date = item.Limit_Date.HasValue ? item.Limit_Date.Value.ToString("yyyy-MM-dd") : "";
                welderEntrance.SE_Equipment_Apply = item.SE_Equipment_Apply;

                return welderEntrance;
            }
        }

        /// <summary>
        /// 增加焊工
        /// </summary>
        /// <param name="welder"></param>
        public static void AddBSWelder(WelderEntrance welder)
        {
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                Model.BS_Welder_Entrance newWelder = new Model.BS_Welder_Entrance();
                newWelder.WED_ID = welder.WED_ID;
                newWelder.WED_Code = welder.WED_Code;
                newWelder.WED_Name = welder.WED_Name;
                newWelder.WED_WorkCode = welder.WED_WorkCode;
                newWelder.IdentityCard = welder.IdentityCard;
                if (!string.IsNullOrEmpty(welder.Limit_Date))
                {
                    newWelder.Limit_Date = DateTime.Parse(welder.Limit_Date);
                }
                newWelder.Status = welder.Status;
                newWelder.WED_Unit = welder.WED_Unit;
                newWelder.SE_Equipment = welder.SE_Equipment;
                newWelder.SE_Equipment_Apply = welder.SE_Equipment_Apply;
                newWelder.ProjectId = welder.ProjectId;
                newWelder.Exam_Res = welder.Exam_Res;

                db.BS_Welder_Entrance.InsertOnSubmit(newWelder);
                db.SubmitChanges();
            }
        }
        /// <summary>
        /// 修改人员信息
        /// </summary>
        /// <param name="teamGroup"></param>
        public static void UpdateBSWelder(WelderEntrance welder)
        {
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                Model.BS_Welder_Entrance newWelder = db.BS_Welder_Entrance.FirstOrDefault(e => e.WED_ID == welder.WED_ID);
                if (newWelder != null)
                {
                    newWelder.SE_Equipment_Apply = welder.SE_Equipment_Apply;
                    newWelder.WED_ID = welder.WED_ID;
                    newWelder.WED_Code = welder.WED_Code;
                    newWelder.WED_Name = welder.WED_Name;
                    newWelder.WED_WorkCode = welder.WED_WorkCode;
                    newWelder.IdentityCard = welder.IdentityCard;
                    if (!string.IsNullOrEmpty(welder.Limit_Date))
                    {
                        newWelder.Limit_Date = DateTime.Parse(welder.Limit_Date);
                    }
                    newWelder.Status = welder.Status;
                    newWelder.WED_Unit = welder.WED_Unit;
                    newWelder.SE_Equipment = welder.SE_Equipment;
                    newWelder.ProjectId = welder.ProjectId;
                    newWelder.Exam_Res = welder.Exam_Res;
                    var bswelder = db.BS_Welder.FirstOrDefault(x=>x.ProjectId== welder.ProjectId&&x.WED_WorkCode== welder.WED_Code);
                    if (bswelder == null)
                    {
                        bswelder = new Model.BS_Welder();
                        bswelder.IdentityCard = welder.IdentityCard;
                        bswelder.WED_Unit = welder.WED_Unit;
                        bswelder.ProjectId = welder.ProjectId;
                        bswelder.WED_Name = welder.WED_Name;
                        bswelder.WED_ID = Guid.NewGuid().ToString();
                        bswelder.WED_Code = welder.WED_Code;
                        bswelder.WED_WorkCode = welder.WED_WorkCode;
                        bswelder.LimitDate = newWelder.Limit_Date;
                        db.BS_Welder.InsertOnSubmit(bswelder);
                       // WelderService.AddBSWelder(bswelder);
                    }
                    else
                    {
                        bswelder.IdentityCard = welder.IdentityCard;
                        bswelder.WED_Unit = welder.WED_Unit;
                        bswelder.ProjectId = welder.ProjectId;
                        bswelder.WED_Name = welder.WED_Name;
                        // bswelder.WED_ID = Guid.NewGuid().ToString();
                        bswelder.WED_Code = welder.WED_Code;
                        bswelder.WED_WorkCode = welder.WED_WorkCode;
                        bswelder.LimitDate = newWelder.Limit_Date;
                       // WelderService.UpdateBSWelder(bswelder);
                    }



                    db.SubmitChanges();
                }
            }
        }

        

        /// <summary>
        /// 是否存在人员编号
        /// </summary>
        /// <param name="EDU_Code"></param>
        /// <returns>true-存在,false-不存在</returns>
        public static bool IsExistWEDName(string WED_Name, string projectId)
        {
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                var q = from x in db.BS_Welder_Entrance where x.WED_Name == WED_Name && x.ProjectId == projectId select x;
                if (q.Count() > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }


        /// <summary>
        /// 是否存在人员编号
        /// </summary>
        /// <param name="EDU_Code"></param>
        /// <returns>true-存在,false-不存在</returns>
        public static bool IsExistWEDCode(string WED_Code, string projectId)
        {
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                var q = from x in db.BS_Welder_Entrance where x.WED_Code == WED_Code && x.ProjectId == projectId select x;
                if (q.Count() > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        /// <summary>
        /// 删除人员信息
        /// </summary>
        /// <param name="WED_ID"></param>
        public static void DeleteBSWelder(string WED_ID)
        {
            using (Model.CNPCDB db = new Model.CNPCDB(Funs.ConnString))
            {
                Model.BS_Welder_Entrance welder = db.BS_Welder_Entrance.FirstOrDefault(e => e.WED_ID == WED_ID);
                if (welder != null)
                {
                    Funs.DB.BS_Welder_Entrance.DeleteOnSubmit(welder);
                    Funs.DB.SubmitChanges();
                }
            }
        }

        
        
    }
}