using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
namespace BLL
{
    public class TechnicalContactListService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 根据工程联络单信息Id删除一个工程联络单信息信息
        /// 
        /// 工程联络单信息Id
        public static void DeleteTechnicalContactList(string TechnicalContactListId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Check_TechnicalContactList TechnicalContactList = db.Check_TechnicalContactList.First(e => e.TechnicalContactListId == TechnicalContactListId);
            db.Check_TechnicalContactList.DeleteOnSubmit(TechnicalContactList);
            db.SubmitChanges();
        }
        /// 
        /// 增加工程联络单信息信息
        /// 
        /// 工程联络单信息实体
        public static void AddTechnicalContactListForApi(Model.Check_TechnicalContactList TechnicalContactList)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                Model.Check_TechnicalContactList newTechnicalContactList = new Model.Check_TechnicalContactList();
                newTechnicalContactList.TechnicalContactListId = TechnicalContactList.TechnicalContactListId;
                newTechnicalContactList.ProjectId = TechnicalContactList.ProjectId;
                newTechnicalContactList.Code = TechnicalContactList.Code;
                newTechnicalContactList.ProposedUnitId = TechnicalContactList.ProposedUnitId;
                newTechnicalContactList.MainSendUnitId = TechnicalContactList.MainSendUnitId;
                newTechnicalContactList.CCUnitIds = TechnicalContactList.CCUnitIds;
                newTechnicalContactList.UnitWorkId = TechnicalContactList.UnitWorkId;
                newTechnicalContactList.CNProfessionalCode = TechnicalContactList.CNProfessionalCode;
                newTechnicalContactList.ContactListType = TechnicalContactList.ContactListType;
                newTechnicalContactList.IsReply = TechnicalContactList.IsReply;
                newTechnicalContactList.Cause = TechnicalContactList.Cause;
                newTechnicalContactList.Contents = TechnicalContactList.Contents;
                newTechnicalContactList.AttachUrl = TechnicalContactList.AttachUrl;
                newTechnicalContactList.CompileMan = TechnicalContactList.CompileMan;
                newTechnicalContactList.CompileDate = TechnicalContactList.CompileDate;
                newTechnicalContactList.State = TechnicalContactList.State;
                newTechnicalContactList.ReOpinion = TechnicalContactList.ReOpinion;
                newTechnicalContactList.SaveHandleMan = TechnicalContactList.SaveHandleMan;
                db.Check_TechnicalContactList.InsertOnSubmit(newTechnicalContactList);
                db.SubmitChanges();
            }
        }
        public static void AddTechnicalContactList(Model.Check_TechnicalContactList TechnicalContactList)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Check_TechnicalContactList newTechnicalContactList = new Model.Check_TechnicalContactList();
            newTechnicalContactList.TechnicalContactListId = TechnicalContactList.TechnicalContactListId;
            newTechnicalContactList.ProjectId = TechnicalContactList.ProjectId;
            newTechnicalContactList.Code = TechnicalContactList.Code;
            newTechnicalContactList.ProposedUnitId = TechnicalContactList.ProposedUnitId;
            newTechnicalContactList.MainSendUnitId = TechnicalContactList.MainSendUnitId;
            newTechnicalContactList.CCUnitIds = TechnicalContactList.CCUnitIds;
            newTechnicalContactList.UnitWorkId = TechnicalContactList.UnitWorkId;
            newTechnicalContactList.CNProfessionalCode = TechnicalContactList.CNProfessionalCode;
            newTechnicalContactList.ContactListType = TechnicalContactList.ContactListType;
            newTechnicalContactList.IsReply = TechnicalContactList.IsReply;
            newTechnicalContactList.Cause = TechnicalContactList.Cause;
            newTechnicalContactList.Contents = TechnicalContactList.Contents;
            newTechnicalContactList.AttachUrl = TechnicalContactList.AttachUrl;
            newTechnicalContactList.CompileMan = TechnicalContactList.CompileMan;
            newTechnicalContactList.CompileDate = TechnicalContactList.CompileDate;
            newTechnicalContactList.State = TechnicalContactList.State;
            newTechnicalContactList.ReOpinion = TechnicalContactList.ReOpinion;
            newTechnicalContactList.SaveHandleMan = TechnicalContactList.SaveHandleMan;
            db.Check_TechnicalContactList.InsertOnSubmit(newTechnicalContactList);
            db.SubmitChanges();
        }
        /// 
        /// 增加工程联络单审批信息
        /// 
        /// 工程联络单审批实体
        public static void AddTechnicalContactListApprove(Model.Check_TechnicalContactListApprove approve)
        {
            Model.SGGLDB db = Funs.DB;
            string newKeyID = SQLHelper.GetNewID(typeof(Model.Check_TechnicalContactListApprove));
            Model.Check_TechnicalContactListApprove newApprove = new Model.Check_TechnicalContactListApprove();
            newApprove.TechnicalContactListApproveId = newKeyID;
            newApprove.TechnicalContactListId = approve.TechnicalContactListId;
            newApprove.ApproveMan = approve.ApproveMan;
            newApprove.ApproveDate = approve.ApproveDate;
            newApprove.ApproveIdea = approve.ApproveIdea;
            newApprove.IsAgree = approve.IsAgree;
            newApprove.ApproveType = approve.ApproveType;
            db.Check_TechnicalContactListApprove.InsertOnSubmit(newApprove);
            db.SubmitChanges();
        }
        /// 
        /// 修改工程联络单信息信息
        /// 
        /// 工程联络单信息实体
        public static void UpdateTechnicalContactList(Model.Check_TechnicalContactList TechnicalContactList)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Check_TechnicalContactList newTechnicalContactList = db.Check_TechnicalContactList.First(e => e.TechnicalContactListId == TechnicalContactList.TechnicalContactListId);
            newTechnicalContactList.Code = TechnicalContactList.Code;
            newTechnicalContactList.ProposedUnitId = TechnicalContactList.ProposedUnitId;
            newTechnicalContactList.MainSendUnitId = TechnicalContactList.MainSendUnitId;
            newTechnicalContactList.CCUnitIds = TechnicalContactList.CCUnitIds;
            newTechnicalContactList.UnitWorkId = TechnicalContactList.UnitWorkId;
            newTechnicalContactList.CNProfessionalCode = TechnicalContactList.CNProfessionalCode;
            newTechnicalContactList.ContactListType = TechnicalContactList.ContactListType;
            newTechnicalContactList.IsReply = TechnicalContactList.IsReply;
            newTechnicalContactList.Cause = TechnicalContactList.Cause;
            newTechnicalContactList.Contents = TechnicalContactList.Contents;
            newTechnicalContactList.AttachUrl = TechnicalContactList.AttachUrl;
            newTechnicalContactList.ReAttachUrl = TechnicalContactList.ReAttachUrl;
            newTechnicalContactList.State = TechnicalContactList.State;
            newTechnicalContactList.ReOpinion = TechnicalContactList.ReOpinion;
            newTechnicalContactList.SaveHandleMan = TechnicalContactList.SaveHandleMan;
            db.SubmitChanges();
        }
        /// 
        /// 记录数
        /// 
        private static int count
        {
            get;
            set;
        }
        public static void InitHandleType(FineUIPro.DropDownList dropName, bool isShowPlease, string state, string unitType, string contactListType, string isReply)
        {
            dropName.DataValueField = "Value";
            dropName.DataTextField = "Text";
            dropName.DataSource = GetDHandleTypeByState(state, unitType, contactListType, isReply);
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
        /// 
        /// 根据状态选择下一步办理类型
        /// 
        /// 
        /// 
        public static ListItem[] GetDHandleTypeByState(string state, string unitType, string contactListType, string isReply)
        {
            if (state == Const.TechnicalContactList_Compile || state == Const.TechnicalContactList_ReCompile)
            {
                if (unitType == Const.ProjectUnitType_2)  //施工分包商
                {
                    if (contactListType == "1")  //图纸类
                    {
                        ListItem[] lis = new ListItem[1];
                        lis[0] = new ListItem("分包负责人审批", Const.TechnicalContactList_Audit1);
                        //lis[1] = new ListItem("总包专工确认", Const.TechnicalContactList_Audit2);
                        //lis[2] = new ListItem("总包设计人员回复", Const.TechnicalContactList_Audit4);
                        //lis[3] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[4] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        return lis;
                    }
                    else  //非图纸类
                    {
                        ListItem[] lis = new ListItem[1];
                        lis[0] = new ListItem("分包负责人审批", Const.TechnicalContactList_Audit1);
                        //lis[1] = new ListItem("总包专工回复", Const.TechnicalContactList_Audit2H);
                        //lis[2] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[3] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        return lis;
                    }
                }
                else   //总包
                {
                    if (isReply == "1")  //需要回复
                    {
                        ListItem[] lis = new ListItem[1];
                        lis[0] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[1] = new ListItem("分包专工回复", Const.TechnicalContactList_Audit6);
                        //lis[2] = new ListItem("分包负责人审批", Const.TechnicalContactList_Audit1);
                        //lis[3] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        return lis;
                    }
                    else  //不需回复
                    {
                        ListItem[] lis = new ListItem[1];
                        lis[0] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[1] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        return lis;
                    }
                }
            }
            else if (state == Const.TechnicalContactList_Audit1)
            {
                if (unitType == Const.ProjectUnitType_2)  //施工分包商
                {
                    if (isReply == "1")  //需要回复
                    {
                        if (contactListType == "1")  //图纸类
                        {
                            ListItem[] lis = new ListItem[2];
                            lis[0] = new ListItem("总包专工确认", Const.TechnicalContactList_Audit2);
                            //lis[1] = new ListItem("总包设计人员回复", Const.TechnicalContactList_Audit4);
                            //lis[2] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                            //lis[3] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                            lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                            return lis;
                        }
                        else  //非图纸类
                        {
                            ListItem[] lis = new ListItem[2];
                            lis[0] = new ListItem("总包专工回复", Const.TechnicalContactList_Audit2H);
                            //lis[1] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                            //lis[2] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                            lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                            return lis;
                        }
                    }
                    else
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                }
                else   //总包
                {
                    if (isReply == "1")  //需要回复
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("分包专工重新回复", Const.TechnicalContactList_Audit6R);
                        return lis;
                    }
                    else  //不需回复
                    {
                        return null;
                    }
                }
            }
            else if (state == Const.TechnicalContactList_Audit2 || state == Const.TechnicalContactList_Audit2R || state == Const.TechnicalContactList_Audit2H)
            {
                if (unitType == Const.ProjectUnitType_2)  //施工分包商
                {
                    if (contactListType == "1")  //图纸类
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("总包设计人员回复", Const.TechnicalContactList_Audit4);
                        //lis[1] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        //lis[2] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        return lis;
                    }
                    else  //非图纸类
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[1] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                }
                else   //总包
                {
                    if (isReply == "1")  //需要回复
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[1] = new ListItem("分包专工回复", Const.TechnicalContactList_Audit6);
                        //lis[2] = new ListItem("分包负责人审批", Const.TechnicalContactList_Audit1);
                        //lis[3] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                    else  //不需回复
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        //lis[1] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                }
            }
            else if (state == Const.TechnicalContactList_Audit3)
            {
                if (unitType == Const.ProjectUnitType_2)  //施工分包商
                {
                    if (contactListType == "1")  //图纸类
                    {
                        ListItem[] lis = new ListItem[3];
                        lis[0] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        lis[2] = new ListItem("总包设计人员重新回复", Const.TechnicalContactList_Audit4R);
                        return lis;
                    }
                    else  //非图纸类
                    {
                        ListItem[] lis = new ListItem[3];
                        lis[0] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        lis[2] = new ListItem("总包专工重新回复", Const.TechnicalContactList_Audit2R);
                        return lis;
                    }
                }
                else   //总包
                {
                    if (isReply == "1")  //需要回复
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("分包专工回复", Const.TechnicalContactList_Audit6);
                        //lis[1] = new ListItem("分包负责人审批", Const.TechnicalContactList_Audit1);
                        //lis[2] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                    else  //不需回复
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                }
            }
            else if (state == Const.TechnicalContactList_Audit4 || state == Const.TechnicalContactList_Audit4R)
            {
                if (unitType == Const.ProjectUnitType_2)  //施工分包商
                {
                    if (contactListType == "1")  //图纸类
                    {
                        ListItem[] lis = new ListItem[3];
                        lis[0] = new ListItem("总包负责人审批", Const.TechnicalContactList_Audit3);
                        lis[1] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        //lis[1] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[2] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                    else  //非图纸类
                    {
                        return null;
                    }
                }
                else   //总包
                {
                    if (isReply == "1")  //需要回复
                    {
                        return null;
                    }
                    else  //不需回复
                    {
                        return null;
                    }
                }
            }
            else if (state == Const.TechnicalContactList_Audit6 || state == Const.TechnicalContactList_Audit6R)
            {
                if (unitType == Const.ProjectUnitType_2)  //施工分包商
                {
                    if (contactListType == "1")  //图纸类
                    {
                        return null;
                    }
                    else  //非图纸类
                    {
                        return null;
                    }
                }
                else   //总包
                {
                    if (isReply == "1")  //需要回复
                    {
                        ListItem[] lis = new ListItem[2];
                        lis[0] = new ListItem("分包负责人审批", Const.TechnicalContactList_Audit1);
                        //lis[1] = new ListItem("审批完成", Const.TechnicalContactList_Complete);
                        lis[1] = new ListItem("重新编制", Const.TechnicalContactList_ReCompile);
                        return lis;
                    }
                    else  //不需回复
                    {
                        return null;
                    }
                }
            }
            else
                return null;
        }
        /// 
        /// 定义变量
        /// 
        private static IQueryable qq = from x in db.Check_TechnicalContactList orderby x.CompileDate descending select x;
        /// 
        /// 获取分页列表
        /// 
        /// 
        /// 
        /// 
        public static IEnumerable getListData(string projectId, int startRowIndex, int maximumRows)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                IQueryable q = db.Check_TechnicalContactList;
                if (!string.IsNullOrEmpty(projectId))
                {
                    q = q.Where(e => e.ProjectId == projectId);
                }
                //if (!string.IsNullOrEmpty(userId))
                //{
                //    var roleList = BLL.CommonService.GetUserRoleEntrustedRole(userId);
                //    if (roleId != "admin" && !roleList.Contains(BLL.Const.CNPrincipalRole) && !roleList.Contains(BLL.Const.CQPrincipalRole)
                //        && !roleList.Contains(BLL.Const.INPrincipalRole))
                //    {
                //        string entrusteUserId = BLL.EntrustDetailService.GetEntrusteUserId(userId);
                //        if (!string.IsNullOrEmpty(entrusteUserId))
                //        {
                //            q = q.Where(e => e.CompileMan == userId || e.CompileMan == entrusteUserId);
                //        }
                //        else
                //        {
                //            q = q.Where(e => e.CompileMan == userId);
                //        }
                //    }
                //}
                count = q.Count();
                if (count == 0)
                {
                    return new object[] { "" };
                }
                return from x in q.Skip(startRowIndex).Take(maximumRows)
                       select new
                       {
                           x.TechnicalContactListId,
                           x.ProjectId,
                           x.Code,
                           ProposedUnit = (from y in db.Base_Unit where y.UnitId == x.ProposedUnitId select y.UnitName).First(),
                           MainSendUnit = (from y in db.Base_Unit where y.UnitId == x.MainSendUnitId select y.UnitName).First(),
                           UnitWorkName = UnitWorkService.GetUnitWorkName(x.UnitWorkId),
                           CNProfessional = CNProfessionalService.GetCNProfessionalNameByCode(x.CNProfessionalCode),
                           x.CCUnitIds,
                           ContactListType = x.ContactListType == "1" ? "图纸类" : "非图纸类",
                           IsReply = x.IsReply == "1" ? "需要回复" : "不需回复",
                           x.Cause,
                           x.AttachUrl,
                           CompileMan = (from y in db.Sys_User where y.UserId == x.CompileMan select y.UserName).First(),
                           x.CompileDate,
                           x.State,
                       };
            }
        }
        /// 
        /// 根据工程联络单信息Id获取一个工程联络单信息
        /// 
        /// 工程联络单信息Id
        /// 一个工程联络单信息实体
        public static Model.Check_TechnicalContactList GetTechnicalContactListByTechnicalContactListId(string TechnicalContactListId)
        {
            return Funs.DB.Check_TechnicalContactList.FirstOrDefault(x => x.TechnicalContactListId == TechnicalContactListId);
        }
        public static Model.Check_TechnicalContactList GetTechnicalContactListByTechnicalContactListIdForApi(string TechnicalContactListId)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                Model.Check_TechnicalContactList res = db.Check_TechnicalContactList.FirstOrDefault(x => x.TechnicalContactListId == TechnicalContactListId);
                res.UnitWorkId = res.UnitWorkId + "$" + UnitWorkService.GetUnitWorkName(res.UnitWorkId);
                res.CNProfessionalCode = res.CNProfessionalCode + "$" + CNProfessionalService.GetCNProfessionalNameByCode(res.CNProfessionalCode);
                // Model.Base_Unit unit = BLL.UnitService.GetUnit(res.ProposedUnitId);
                var unit = db.Project_ProjectUnit.FirstOrDefault(e => e.ProjectId == res.ProjectId && e.UnitId == res.ProposedUnitId);
                if (unit != null)
                {
                    res.ProposedUnitId = res.ProposedUnitId + "$" + unit.Base_Unit.UnitName + "$" + unit.UnitType;
                }
                else
                {
                    res.ProposedUnitId = res.ProposedUnitId + "$$";
                }
                res.MainSendUnitId = res.MainSendUnitId + "$" + UnitService.getUnitNamesUnitIds(res.MainSendUnitId);
                res.CCUnitIds = res.CCUnitIds + "$" + UnitService.getUnitNamesUnitIds(res.CCUnitIds);
                res.AttachUrl = AttachFileService.getFileUrl(res.TechnicalContactListId);
                res.ReAttachUrl = AttachFileService.getFileUrl(res.TechnicalContactListId + "r");
                res.ReturnAttachUrl = AttachFileService.getFileUrl(res.TechnicalContactListId + "re");
                return res;
            }
        }
        //
        //获取办理人姓名
        //
        //
        //
        public static string ConvertMan(object centerHandoverCode)
        {
            if (centerHandoverCode != null)
            {
                Model.Check_TechnicalContactListApprove a = TechnicalContactListApproveService.GetTechnicalContactListApproveByTechnicalContactListId(centerHandoverCode.ToString());
                if (a != null)
                {
                    if (a.ApproveMan != null)
                    {
                        return UserService.GetUserByUserId(a.ApproveMan).UserName;
                    }
                }
                else
                {
                    return "";
                }
            }
            return "";
        }
        public static string ConvertManAndId(object centerHandoverCode)
        {
            if (centerHandoverCode != null)
            {
                Model.Check_TechnicalContactListApprove a = TechnicalContactListApproveService.GetTechnicalContactListApproveByTechnicalContactListId(centerHandoverCode.ToString());
                if (a != null)
                {
                    if (a.ApproveMan != null)
                    {
                        var user = UserService.GetUserByUserId(a.ApproveMan);
                        return user.UserName + "$" + user.UserId;
                    }
                }
                else
                {
                    return "";
                }
            }
            return "";
        }
        /// 
        /// 把状态转换代号为文字形式
        /// 
        /// 
        /// 
        public static string ConvertState(object state)
        {
            if (state != null)
            {
                if (state.ToString() == Const.TechnicalContactList_ReCompile)
                {
                    return "重新编制";
                }
                else if (state.ToString() == Const.TechnicalContactList_Compile)
                {
                    return "编制";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit1)
                {
                    return "分包负责人审批";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit2)
                {
                    return "总包专工确认";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit3)
                {
                    return "总包负责人审批";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit4)
                {
                    return "总包设计人员回复";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit6)
                {
                    return "分包专工回复";
                }
                else if (state.ToString() == Const.TechnicalContactList_Complete)
                {
                    return "审批完成";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit2R)
                {
                    return "总包专工重新回复";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit4R)
                {
                    return "总包设计人员重新回复";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit6R)
                {
                    return "分包专工重新回复";
                }
                else if (state.ToString() == Const.TechnicalContactList_Audit2H)
                {
                    return "总包专工回复";
                }
                else
                {
                    return "";
                }
            }
            else
            {
                return "";
            }
        }
        public static int getListCount(string projectId)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                IQueryable q = db.Check_TechnicalContactList;
                if (!string.IsNullOrEmpty(projectId))
                {
                    q = q.Where(e => e.ProjectId == projectId);
                }
                return q.Count();
            }
        }
        public static List getListDataForApi(string name, string projectId, int startRowIndex, int maximumRows)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                IQueryable q = db.Check_TechnicalContactList;
                if (!string.IsNullOrEmpty(projectId))
                {
                    q = q.Where(e => e.ProjectId == projectId);
                }
                if (!string.IsNullOrEmpty(name))
                {
                    List ids = new List();
                    var qunit = from u in Funs.DB.Base_Unit
                                where u.UnitName.Contains(name)
                                select u.UnitId;
                    ids = qunit.ToList();
                    q = q.Where(e => ids.Contains(e.ProposedUnitId));
                }
                var qres = from x in q
                           orderby x.Code descending
                           select new
                           {
                               x.TechnicalContactListId,
                               x.ProjectId,
                               x.Code,
                               x.ProposedUnitId,
                               x.CNProfessionalCode,
                               x.UnitWorkId,
                               x.MainSendUnitId,
                               x.CCUnitIds,
                               MainSendUnit1 = UnitService.getUnitNamesUnitIds(x.MainSendUnitId),
                               UnitWorkName = BLL.UnitWorkService.GetUnitWorkName(x.UnitWorkId),
                               CNProfessional = BLL.CNProfessionalService.GetCNProfessionalNameByCode(x.CNProfessionalCode),
                               CCUnitIdName = UnitService.getUnitNamesUnitIds(x.CCUnitIds),
                               x.Contents,
                               x.ContactListType,
                               x.IsReply,
                               x.Cause,
                               CompileMan = (from y in db.Sys_User where y.UserId == x.CompileMan select y.UserName).First(),
                               x.CompileDate,
                               x.State,
                           };
                List res = new List();
                var list = qres.Skip(startRowIndex* maximumRows).Take(maximumRows).ToList();
                foreach (var item in list)
                {
                    Model.Check_TechnicalContactList tc = new Model.Check_TechnicalContactList();
                    tc.TechnicalContactListId = item.TechnicalContactListId;
                    tc.ProjectId = item.ProjectId;
                    tc.Code = item.Code;
                    var unit = db.Project_ProjectUnit.FirstOrDefault(u => u.ProjectId == tc.ProjectId && u.UnitId == item.ProposedUnitId);
                    if (unit != null)
                    {
                        tc.ProposedUnitId = item.ProposedUnitId + "$" + unit.Base_Unit.UnitName + "$" + unit.UnitType;
                    }
                    else
                    {
                        tc.ProposedUnitId = item.ProposedUnitId + "$$";
                    }
                    tc.MainSendUnitId = item.MainSendUnitId + "$" + item.MainSendUnit1;
                    tc.CCUnitIds = item.CCUnitIds + "$" + item.CCUnitIdName;
                    tc.Contents = item.Contents;
                    tc.CNProfessionalCode = item.CNProfessionalCode + "$" + item.CNProfessional;
                    tc.CCUnitIds = item.CCUnitIds + "$" + item.CCUnitIdName;
                    tc.ContactListType = item.ContactListType;
                    tc.IsReply = item.IsReply;
                    tc.Cause = item.Cause;
                    tc.AttachUrl = AttachFileService.getFileUrl(item.TechnicalContactListId);
                    tc.ReAttachUrl = AttachFileService.getFileUrl(item.TechnicalContactListId + "r");
                    tc.ReturnAttachUrl = AttachFileService.getFileUrl(item.TechnicalContactListId + "re");
                    tc.CompileMan = item.CompileMan + "$" + ConvertManAndId(item.TechnicalContactListId);
                    tc.CompileDate = item.CompileDate;
                    tc.State = item.State;
                    tc.UnitWorkId = item.UnitWorkId + "$" + item.UnitWorkName;
                    res.Add(tc);
                }
                return res;
            }
        }
        public static List getListDataForApi(string state, string contactListType, string isReply, string dateA, string dateZ, string proposedUnitId, string unitWorkId, string mainSendUnit, string cCUnitIds, string professional, string projectId, int startRowIndex, int maximumRows)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                IQueryable q = db.Check_TechnicalContactList;
                if (!string.IsNullOrEmpty(state) && "undefined" != state)
                {
                    if ("8" == state)
                        q = q.Where(e => e.State == "8");
                    else
                    {
                        q = q.Where(e => e.State != "8");
                    }
                }
                if (!string.IsNullOrEmpty(contactListType) && "undefined" != contactListType)
                {
                    q = q.Where(e => e.ContactListType == contactListType);
                }
                if (!string.IsNullOrEmpty(isReply) && "undefined" != isReply)
                {
                    q = q.Where(e => e.IsReply == isReply);
                }
                if (!string.IsNullOrEmpty(dateA) && "undefined" != dateA)
                {
                    DateTime date = DateTime.ParseExact(dateA, "yyyy-MM-dd", new CultureInfo("zh-CN", true));
                    q = q.Where(e => e.CompileDate >= date);
                }
                if (!string.IsNullOrEmpty(dateZ) && "undefined" != dateZ)
                {
                    DateTime date = DateTime.ParseExact(dateZ + "23:59:59", "yyyy-MM-ddHH:mm:ss", new CultureInfo("zh-CN", true));
                    q = q.Where(e => e.CompileDate <= date);
                }
                if (!string.IsNullOrEmpty(projectId) && "undefined" != projectId)
                {
                    q = q.Where(e => e.ProjectId == projectId);
                }
                if (!string.IsNullOrEmpty(proposedUnitId) && "undefined" != proposedUnitId)
                {
                    q = q.Where(e => proposedUnitId == e.ProposedUnitId);
                }
                if (!string.IsNullOrEmpty(unitWorkId) && "undefined" != unitWorkId)
                {
                    q = q.Where(e => e.UnitWorkId.Contains(unitWorkId));
                }
                if (!string.IsNullOrEmpty(mainSendUnit) && "undefined" != mainSendUnit)
                {
                    q = q.Where(e => e.MainSendUnitId.Contains(mainSendUnit));
                }
                if (!string.IsNullOrEmpty(cCUnitIds) && "undefined" != cCUnitIds)
                {
                    q = q.Where(e => e.CCUnitIds.Contains(cCUnitIds));
                }
                if (!string.IsNullOrEmpty(professional) && "undefined" != professional)
                {
                    q = q.Where(e => e.CNProfessionalCode.Contains(professional));
                }
                var qres = from x in q
                           orderby x.Code descending
                           select new
                           {
                               x.TechnicalContactListId,
                               x.ProjectId,
                               x.Code,
                               x.ProposedUnitId,
                               x.CNProfessionalCode,
                               x.UnitWorkId,
                               x.MainSendUnitId,
                               x.CCUnitIds,
                               MainSendUnit1 = UnitService.getUnitNamesUnitIds(x.MainSendUnitId),
                               UnitWorkName = BLL.UnitWorkService.GetUnitWorkName(x.UnitWorkId),
                               CNProfessional = BLL.CNProfessionalService.GetCNProfessionalNameByCode(x.CNProfessionalCode),
                               CCUnitIdName = UnitService.getUnitNamesUnitIds(x.CCUnitIds),
                               x.Contents,
                               x.ContactListType,
                               x.IsReply,
                               x.Cause,
                               x.AttachUrl,
                               CompileMan = (from y in db.Sys_User where y.UserId == x.CompileMan select y.UserName).First(),
                               x.CompileDate,
                               x.State,
                           };
                List res = new List();
                var list = qres.Skip(startRowIndex * maximumRows).Take(maximumRows).ToList();
                foreach (var item in list)
                {
                    Model.Check_TechnicalContactList tc = new Model.Check_TechnicalContactList();
                    tc.TechnicalContactListId = item.TechnicalContactListId;
                    tc.ProjectId = item.ProjectId;
                    tc.Code = item.Code;
                    var unit = db.Project_ProjectUnit.FirstOrDefault(u => u.ProjectId == tc.ProjectId && u.UnitId == item.ProposedUnitId);
                    if (unit != null)
                    {
                        tc.ProposedUnitId = item.ProposedUnitId + "$" + unit.Base_Unit.UnitName + "$" + unit.UnitType;
                    }
                    else
                    {
                        tc.ProposedUnitId = item.ProposedUnitId + "$$";
                    }
                    tc.MainSendUnitId = item.MainSendUnitId + "$" + item.MainSendUnit1;
                    tc.CCUnitIds = item.CCUnitIds + "$" + item.CCUnitIdName;
                    tc.Contents = item.Contents;
                    tc.CNProfessionalCode = item.CNProfessionalCode + "$" + item.CNProfessional;
                    tc.CCUnitIds = item.CCUnitIds + "$" + item.CCUnitIdName;
                    tc.ContactListType = item.ContactListType;
                    tc.IsReply = item.IsReply;
                    tc.Cause = item.Cause;
                    tc.AttachUrl = item.AttachUrl;
                    tc.CompileMan = item.CompileMan + "$" + ConvertManAndId(item.TechnicalContactListId); ;
                    tc.CompileDate = item.CompileDate;
                    tc.State = item.State;
                    tc.UnitWorkId = item.UnitWorkId + "$" + item.UnitWorkName;
                    tc.AttachUrl = AttachFileService.getFileUrl(item.TechnicalContactListId);
                    tc.ReAttachUrl = AttachFileService.getFileUrl(item.TechnicalContactListId + "r");
                    tc.ReturnAttachUrl = AttachFileService.getFileUrl(item.TechnicalContactListId + "re");
                    res.Add(tc);
                }
                return res;
            }
        }
        public static void UpdateTechnicalContactListForApi(Model.Check_TechnicalContactList TechnicalContactList)
        {
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                Model.Check_TechnicalContactList newTechnicalContactList = db.Check_TechnicalContactList.FirstOrDefault(e => e.TechnicalContactListId == TechnicalContactList.TechnicalContactListId);
                if (newTechnicalContactList != null)
                {
                    if (!string.IsNullOrEmpty(TechnicalContactList.Code))
                        newTechnicalContactList.Code = TechnicalContactList.Code;
                    if (!string.IsNullOrEmpty(TechnicalContactList.ProposedUnitId))
                        newTechnicalContactList.ProposedUnitId = TechnicalContactList.ProposedUnitId;
                    if (!string.IsNullOrEmpty(TechnicalContactList.MainSendUnitId))
                        newTechnicalContactList.MainSendUnitId = TechnicalContactList.MainSendUnitId;
                    if (!string.IsNullOrEmpty(TechnicalContactList.CCUnitIds))
                        newTechnicalContactList.CCUnitIds = TechnicalContactList.CCUnitIds;
                    if (!string.IsNullOrEmpty(TechnicalContactList.UnitWorkId))
                        newTechnicalContactList.UnitWorkId = TechnicalContactList.UnitWorkId;
                    if (!string.IsNullOrEmpty(TechnicalContactList.CNProfessionalCode))
                        newTechnicalContactList.CNProfessionalCode = TechnicalContactList.CNProfessionalCode;
                    if (!string.IsNullOrEmpty(TechnicalContactList.ContactListType))
                        newTechnicalContactList.ContactListType = TechnicalContactList.ContactListType;
                    if (!string.IsNullOrEmpty(TechnicalContactList.IsReply))
                        newTechnicalContactList.IsReply = TechnicalContactList.IsReply;
                    if (!string.IsNullOrEmpty(TechnicalContactList.Cause))
                        newTechnicalContactList.Cause = TechnicalContactList.Cause;
                    if (!string.IsNullOrEmpty(TechnicalContactList.Contents))
                        newTechnicalContactList.Contents = TechnicalContactList.Contents;
                    if (!string.IsNullOrEmpty(TechnicalContactList.AttachUrl))
                        newTechnicalContactList.AttachUrl = TechnicalContactList.AttachUrl;
                    if (!string.IsNullOrEmpty(TechnicalContactList.State))
                        newTechnicalContactList.State = TechnicalContactList.State;
                    if (!string.IsNullOrEmpty(TechnicalContactList.ReAttachUrl))
                        newTechnicalContactList.ReAttachUrl = TechnicalContactList.ReAttachUrl;
                    if (!string.IsNullOrEmpty(TechnicalContactList.ReturnAttachUrl))
                        newTechnicalContactList.ReturnAttachUrl = TechnicalContactList.ReturnAttachUrl;
                    if (!string.IsNullOrEmpty(TechnicalContactList.ReOpinion))
                        newTechnicalContactList.ReOpinion = TechnicalContactList.ReOpinion;
                    db.SubmitChanges();
                }
            }
        }
    }
}