using Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
namespace BLL
{
    public class ContactSheetService
    {
        #region 一级分类下拉框
        /// 
        /// 一级分类下拉框
        /// 
        /// 
        public static ListItem[] DraftReason1List()
        {
            List list = new List();
            var dc = Funs.DB;
            HashSet set = new HashSet();
            var q = (from x in dc.CQMS_Information_DraftReason 
                     orderby x.Orders
                     select x).ToList();
            foreach (var item in q)
            {
                if (!set.Contains(item.DraftReasonCode.Substring(0, 1)))
                {
                    ListItem row  = new ListItem(item.DraftReasonType,item.DraftReasonType); 
                    list.Add(row);
                    set.Add(item.DraftReasonCode.Substring(0, 1));
                }
            } 
                return list.ToArray();
            
        }
        #endregion
        #region 二级分类表格
        /// 
        /// 二级分类表格
        /// 
        /// 
        public static ListItem[] DraftReason2 (string DraftReasonType)
        {
            var dc = Funs.DB;
            List list = new List();
            var q = (from x in dc.CQMS_Information_DraftReason
                     where x.DraftReasonType == DraftReasonType
                     orderby x.Orders
                     select x).ToList();
            foreach (var item in q)
            {
                ListItem row = new ListItem(item.DraftReason, item.DraftReasonCode);
                list.Add(row);
               
            }
            return list.ToArray();
        }
        public static  List DraftReason2ByCode(string draftReasonCode)
        {
            var dc = Funs.DB;
            List list = new List();
            var q = (from x in dc.CQMS_Information_DraftReason
                     where x.DraftReasonCode.Contains(draftReasonCode)
                     orderby x.Orders
                     select x).ToList();
            return q.ToList();
        }
        #endregion
        public static void AddConfirmForm(Model.CQMS_Information_ContactSheet CheckControl)
        {
            Model.SGGLDB db = Funs.DB;
            Model.CQMS_Information_ContactSheet newCheckControl = new Model.CQMS_Information_ContactSheet();
            newCheckControl.ContactSheetId = CheckControl.ContactSheetId;
            newCheckControl.ContactSheetCode = CheckControl.ContactSheetCode;
            newCheckControl.DraftReasonCode = CheckControl.DraftReasonCode;
            newCheckControl.InstallationCode = CheckControl.InstallationCode;
            newCheckControl.ProfessionCode = CheckControl.ProfessionCode;
            newCheckControl.NeedDesign = CheckControl.NeedDesign;
            newCheckControl.CreatMan = CheckControl.CreatMan;
            newCheckControl.Contents = CheckControl.Contents;
            newCheckControl.DName = CheckControl.DName;
            newCheckControl.ProjectId = CheckControl.ProjectId;
            newCheckControl.ProjectCode = CheckControl.ProjectCode;
            newCheckControl.CreatDate = CheckControl.CreatDate;
            newCheckControl.AuditUser = CheckControl.AuditUser;
            newCheckControl.RealCompletDate = CheckControl.RealCompletDate;
            newCheckControl.CompanyCode   = CheckControl.CompanyCode;
            newCheckControl.Receiver = CheckControl.Receiver;
            newCheckControl.UnitWork = CheckControl.UnitWork;
            newCheckControl.OwnerCode = CheckControl.OwnerCode;
            newCheckControl.DocCode = CheckControl.DocCode;
            newCheckControl.States = CheckControl.States;
            newCheckControl.CIType = CheckControl.CIType;
            newCheckControl.AuditArtificialInput = CheckControl.AuditArtificialInput;
            newCheckControl.ArtificialInput = CheckControl.ArtificialInput;
            newCheckControl.IsPo = CheckControl.IsPo;
            db.CQMS_Information_ContactSheet.InsertOnSubmit(newCheckControl);
            db.SubmitChanges();
        }
        public static CQMS_Information_ContactSheet GetConfirmFormById(string contactSheetId)
        {
            Model.SGGLDB db = Funs.DB;
            return db.CQMS_Information_ContactSheet.Where(e => e.ContactSheetId == contactSheetId).FirstOrDefault();
        }
        public static void UpdateConfirmForm(CQMS_Information_ContactSheet CheckControl)
        {
            Model.SGGLDB db = Funs.DB;
            Model.CQMS_Information_ContactSheet newCheckControl = db.CQMS_Information_ContactSheet.First(e => e.ContactSheetId == CheckControl.ContactSheetId);
            newCheckControl.ContactSheetCode = CheckControl.ContactSheetCode;
            newCheckControl.DraftReasonCode = CheckControl.DraftReasonCode;
            newCheckControl.InstallationCode = CheckControl.InstallationCode;
            newCheckControl.ProfessionCode = CheckControl.ProfessionCode;
            newCheckControl.NeedDesign = CheckControl.NeedDesign;
            newCheckControl.CreatMan = CheckControl.CreatMan;
            newCheckControl.Contents = CheckControl.Contents;
            newCheckControl.DName = CheckControl.DName;
            newCheckControl.ProjectId = CheckControl.ProjectId;
            newCheckControl.ProjectCode = CheckControl.ProjectCode;
            newCheckControl.CreatDate = CheckControl.CreatDate;
            newCheckControl.AuditUser = CheckControl.AuditUser;
            newCheckControl.RealCompletDate = CheckControl.RealCompletDate;
            newCheckControl.CompanyCode = CheckControl.CompanyCode;
            newCheckControl.Receiver = CheckControl.Receiver;
            newCheckControl.UnitWork = CheckControl.UnitWork;
            newCheckControl.OwnerCode = CheckControl.OwnerCode;
            newCheckControl.States = CheckControl.States;
            newCheckControl.DocCode = CheckControl.DocCode;
            newCheckControl.CIType = CheckControl.CIType;
            newCheckControl.IsPo = CheckControl.IsPo;
            newCheckControl.AuditArtificialInput = CheckControl.AuditArtificialInput;
            newCheckControl.ArtificialInput = CheckControl.ArtificialInput;
            db.SubmitChanges();
        }
        public static void updateDistribute(List userId, string contactSheetId)
        {
            Model.SGGLDB db = Funs.DB;
            var distributes = db.CQMS_Information_ContactSheetDistribute.Where(e => e.ContactSheetId == contactSheetId);
            foreach (var dis in distributes)
            {
                if (!userId.Contains(dis.UserId))
                {
                    db.CQMS_Information_ContactSheetDistribute.DeleteOnSubmit(dis);
                }
            }
            foreach (var id in userId)
            {
                bool has = false;
                foreach (var dis in distributes)
                {
                    if (id == dis.UserId)
                        has = true;
                }
                if (!has)
                {
                    CQMS_Information_ContactSheetDistribute newdis = new CQMS_Information_ContactSheetDistribute();
                    newdis.UserId = id;
                    newdis.ContactSheetId = contactSheetId;
                    newdis.ContactSheetDistributeId = Guid.NewGuid().ToString();
                    db.CQMS_Information_ContactSheetDistribute.InsertOnSubmit(newdis);
                }
            }
            db.SubmitChanges();
        }
        public static List getCListByProjectId(string projectId, string contactSheetId)
        {
            Model.SGGLDB dc = Funs.DB;
            List res = (from c in dc.CQMS_Information_ContactSheet
                                                       where c.ProjectId == projectId && c.CIType == "C" && c.ContactSheetId != contactSheetId
                                                       select c).ToList();
            return res;
        }
        public static List GetDistributesUserId(string contactSheetId)
        {
            Model.SGGLDB db = Funs.DB;
            var distributes = db.CQMS_Information_ContactSheetDistribute.Where(e => e.ContactSheetId == contactSheetId).Select(e=>e.UserId);
            return distributes.ToList();
        }
        public static ListItem[] GetDHandleTypeByState(string state, string isAgree)
        {
            if (state == Const.ContactSheet_Compile || state == Const.ContactSheet_ReCompile)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("分包技术负责人审核", Const.ContactSheet_Audit1);
                return lis;
            }
            else if (state == Const.ContactSheet_Audit1)
            {
                ListItem[] lis = new ListItem[1];
                if ("true" == isAgree)
                {
                    lis[0] = new ListItem("专业工程师审核", Const.ContactSheet_Audit2);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
               
                return lis;
            }
            else if (state == Const.ContactSheet_Audit2)
            {
                ListItem[] lis = new ListItem[2];
                lis[0] = new ListItem("施工经理审核", Const.ContactSheet_Audit3);
                lis[1] = new ListItem("QA/QC经理确认", Const.ContactSheet_Audit4);
                return lis;
            }
            else if (state == Const.ContactSheet_Audit3)
            {
                ListItem[] lis = new ListItem[1]; 
                if ("true" == isAgree)
                {
                    lis[0] = new ListItem("QA/QC经理确认", Const.ContactSheet_Audit4);
                }
                else
                { lis[1] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
               
                return lis;
            }
            else if (state == Const.ContactSheet_Audit4)
            {
                ListItem[] lis = new ListItem[2];
                lis[0] = new ListItem("文件上传签字盖章", Const.ContactSheet_Audit5);
                lis[1] = new ListItem("设计审批", Const.ContactSheet_Audit7);
                return lis;
            }
            else if (state == Const.ContactSheet_Audit5)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("费控经理", Const.ContactSheet_Audit6);
                return lis;
            }
            else if (state == Const.ContactSheet_Audit6)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("审批完成", Const.ContactSheet_AuditCompleted);
                return lis;
            }
            else if (state == Const.ContactSheet_Audit7)
            {
                ListItem[] lis = new ListItem[2];
                lis[0] = new ListItem("QA/QC经理确认", Const.ContactSheet_Audit4);
                lis[1] = new ListItem("专业工程师审核", Const.ContactSheet_Audit2);
                return lis;
            }
            else
                return null;
        }
        public static ListItem[] GetFHandleTypeByState(string state ,string isAgree)
        {
            if (state == Const.ContactForm_Compile || state == Const.ContactForm_ReCompile)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("分包技术负责人审核", Const.ContactForm_Audit1);
                return lis;
            }
            else if (state == Const.ContactForm_Audit1)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("专业工程师审核", Const.ContactForm_Audit2);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.ContactForm_Audit2)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("施工经理/技术质量经理审核", Const.ContactForm_Audit3);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.ContactForm_Audit3)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("项目费控工程师审核", Const.ContactForm_Audit4);
                }else
                {
                    lis[0] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.ContactForm_Audit4)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("项目费控经理审核", Const.ContactForm_Audit5);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.ContactForm_Audit5)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("现场负责人/项目经理审核", Const.ContactForm_Audit6);
                return lis;
            }
            else if (state == Const.ContactForm_Audit6)
            {
                ListItem[] lis = new ListItem[2];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("QA/QC经理审核", Const.ContactForm_Audit7);
                }
                else
                {
                    lis[1] = new ListItem("重新整理", Const.ContactSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.ContactForm_Audit7)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("文控分发审核", Const.ContactForm_Audit8);
                return lis;
            }
            else if (state == Const.ContactForm_Audit8)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("审批完成", Const.ContactForm_AuditCompleted);
                return lis;
            }
            else
                return null;
        }
        public static ListItem[] GetIHandleTypeByState(string state, string isAgree)
        {
            if (state == Const.InstructionSheet_Compile || state == Const.InstructionSheet_ReCompile)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("施工经理审核", Const.InstructionSheet_Audit1);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit1)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("费用工程师审核", Const.InstructionSheet_Audit2);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit2)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("控制经理审核", Const.InstructionSheet_Audit3);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit3)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("现场经理/项目经理审核", Const.InstructionSheet_Audit4);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit4)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis = new ListItem[3];
                    lis[0] = new ListItem("建造部审核", Const.InstructionSheet_Audit5);
                    lis[1] = new ListItem("公司分管副总审核", Const.InstructionSheet_Audit9);
                    lis[2] = new ListItem("AQ/QC经理确认", Const.InstructionSheet_Audit10);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit5)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("造价费控部审核", Const.InstructionSheet_Audit6);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit6)
            {
                ListItem[] lis = new ListItem[2];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("审计部审核", Const.InstructionSheet_Audit7);
                }
                else
                {
                    lis[1] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit7)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("公司总经理审核", Const.InstructionSheet_Audit8);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit8)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("QA/QC经理审核", Const.InstructionSheet_Audit10);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit9)
            {
                ListItem[] lis = new ListItem[1];
                if (isAgree == "true")
                {
                    lis[0] = new ListItem("QA/QC经理审核", Const.InstructionSheet_Audit10);
                }
                else
                {
                    lis[0] = new ListItem("重新整理", Const.InstructionSheet_ReCompile);
                }
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit10)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("文控分发", Const.InstructionSheet_Audit11);
                return lis;
            }
            else if (state == Const.InstructionSheet_Audit11)
            {
                ListItem[] lis = new ListItem[1];
                lis[0] = new ListItem("审批完成", Const.InstructionSheet_AuditCompleted);
                return lis;
            }
            else
                return null;
        }
    }
}