using BLL;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using Model;
namespace FineUIPro.Web.EditorManage
{
    public partial class CMEditorEdit : PageBase
    {
        #region 加载
        protected void Page_Load(object sender, EventArgs e)
        {
            string eprojectId = Request.Params["EProjectId"];
            if (!IsPostBack)
            {
                string view = Request.Params["view"];
                if (view == "1")
                {
                    this.btnCalculated.Hidden = true;
                    this.btnSave.Hidden = true;
                }
                else
                {
                    // 特殊控制,不需要
                    // GetButtonPower();//权限设置
                }
                btnClose.OnClientClick = ActiveWindow.GetHideReference();
                Model.Editor_EProject ep = BLL.EProjectService.GeteProjectById(eprojectId);
                if (ep != null)
                {
                    if (ep.CM_CC_RevisedStart.HasValue)
                    {
                        txtCM_CC_RevisedStart.Text = string.Format("{0:yyyy-MM-dd}", ep.CM_CC_RevisedStart);
                    }
                    else
                    {
                        if (ep.ProjectControl_CC_SchStart.HasValue)
                        {
                            this.txtCM_CC_RevisedStart.Text = string.Format("{0:yyyy-MM-dd}", ep.ProjectControl_CC_SchStart);
                        }
                    }
                    if (ep.CM_CC_RevisedStartIsAct == true)
                    {
                        cbCM_CC_RevisedStart.Checked = true;
                    }
                    else
                    {
                        cbCM_CC_RevisedStart.Checked = false;
                    }
                    if (ep.CM_CC_RevisedEnd.HasValue)
                    {
                        txtCM_CC_RevisedEnd.Text= string.Format("{0:yyyy-MM-dd}", ep.CM_CC_RevisedEnd);
                    }
                    else
                    {
                        if (ep.ProjectControl_CC_SchEnd.HasValue)
                        {
                            txtCM_CC_RevisedEnd.Text = string.Format("{0:yyyy-MM-dd}", ep.ProjectControl_CC_SchEnd);
                        }                        
                    }
                    if (ep.CM_CC_RevisedEndIsAct == true)
                    {
                        cbCM_CC_RevisedEnd.Checked = true;
                    }
                    else
                    {
                        cbCM_CC_RevisedEnd.Checked = false;
                    }
                    txtCM_CC_AcutalProgress.Text = ep.CM_CC_AcutalProgress.ToString();
                    if (ep.CM_CM_RevisedStart.HasValue)
                    {
                        txtCM_CM_RevisedStart.Text = string.Format("{0:yyyy-MM-dd}", ep.CM_CM_RevisedStart);
                    }
                    else
                    {
                        if (ep.ProjectControl_CM_SchStart.HasValue)
                        {
                            txtCM_CM_RevisedStart.Text = string.Format("{0:yyyy-MM-dd}", ep.ProjectControl_CM_SchStart);
                        }
                    }
                    if (ep.CM_CM_RevisedStartIsAct == true)
                    {
                        cbCM_CM_RevisedStart.Checked = true;
                    }
                    else
                    {
                        cbCM_CM_RevisedStart.Checked = false;
                    }
                    if (ep.CM_CM_RevisedEnd.HasValue)
                    {
                        txtCM_CM_RevisedEnd.Text = string.Format("{0:yyyy-MM-dd}", ep.CM_CM_RevisedEnd);
                    }
                    else
                    {
                        if (ep.ProjectControl_CM_SchEnd.HasValue)
                        {
                            txtCM_CM_RevisedEnd.Text = string.Format("{0:yyyy-MM-dd}", ep.ProjectControl_CM_SchEnd);
                        }
                    }
                    if (ep.CM_CM_RevisedEndIsAct == true)
                    {
                        cbCM_CM_RevisedEnd.Checked = true;
                    }
                    else
                    {
                        cbCM_CM_RevisedEnd.Checked = false;
                    }
                    txtCM_CM_AcutalProgress.Text = Convert.ToString(ep.CM_CM_AcutalProgress);
                    txtCM_Cost.Text = ep.PM_General_CostToComplete.HasValue ? Convert.ToString(ep.PM_General_CostToComplete) : "";
                    if (ep.CM_Punch_CKilledDate.HasValue)
                    {
                        if (Convert.ToDateTime(ep.CM_Punch_CKilledDate) == Convert.ToDateTime("1900-01-01"))
                        {
                            chbNA.Checked = true;
                            txtCM_Punch_CKilledDate.Enabled = false;
                            txtCM_Punch_CKilledDate.Text = "";
                        }
                        else
                        {
                            txtCM_Punch_CKilledDate.Enabled = true;
                            txtCM_Punch_CKilledDate.Text = Convert.ToDateTime(ep.CM_Punch_CKilledDate).ToString("yyyy-MM-dd");
                        }
                        
                    }
                    else
                    {
                        txtCM_Punch_CKilledDate.Text = "";
                    }
                    txtCM_KickOffMetting.Text = ep.CM_KickOffMetting.HasValue ? Convert.ToDateTime(ep.CM_KickOffMetting).ToString("yyyy-MM-dd") : "";
                    txtCM_MA_MC.Text = ep.CM_MA_MC.HasValue ? Convert.ToDateTime(ep.CM_MA_MC).ToString("yyyy-MM-dd") : "";
                    //txtCM_FC.Text = ep.CM_FC.HasValue ? Convert.ToDateTime(ep.CM_FC).ToString("yyyy-MM-dd") : "";
                    txtCM_Remarks_Construction.Text = ep.CM_Remarks_Construction;
                    txtCM_Remarks_Procurement.Text = ep.CM_Remarks_Procurement;
                    txtCM_Remarks_QualityHSE.Text = ep.CM_Remarks_QualityHSE;
                    txtDate_of_Registration.Text = ep.CM_Date_of_Registration.HasValue ? Convert.ToDateTime(ep.CM_Date_of_Registration).ToString("yyyy-MM-dd") : "";
                    if (!string.IsNullOrEmpty(ep.PM_Remarks_Procurement))
                    {
                        this.lblPMProcurement.Text = "PM-Procurement:" + ep.PM_Remarks_Procurement;
                    }
                    btnCalculated_Click(null, null);//进度计算
                }
                this.txtCM_KickOffMetting.MaxDate = DateTime.Now;
                // 如果CM_MA_MC有值,只有管理员可修改
                if (ep.CM_MA_MC.HasValue && CurrUser.Account != Const.Gly)
                {
                    txtCM_MA_MC.Enabled = false;
                }
                if (CurrUser.Account != Const.Gly && CurrUser.RoleId != Const.Role_PPE)
                {
                    int curDay = DateTime.Now.Day;
                    DateTime minDate = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-01");
                    if (curDay >= 10)
                    {
                        txtCM_MA_MC.MinDate = minDate;
                        txtCM_MA_MC.MaxDate = minDate.AddMonths(1).AddDays(-1);
                    }
                    else
                    {
                        txtCM_MA_MC.MinDate = minDate.AddMonths(-1);
                        txtCM_MA_MC.MaxDate = DateTime.Now;
                    }
                }
                this.txtCM_Punch_CKilledDate.MaxDate = DateTime.Now;
                this.txtDate_of_Registration.MaxDate = DateTime.Now;
            }
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            string operationLog = string.Empty;
            string eprojectId = Request.Params["EProjectId"];
            Model.Editor_EProject eproject = BLL.EProjectService.GeteProjectById(eprojectId);
            if (eproject != null)
            {
                #region 日志
                operationLog = eproject.ProjectControl_JobNo + "_CM:";
                if (eproject.CM_CC_RevisedStart != Funs.GetNewDateTime(this.txtCM_CC_RevisedStart.Text.Trim()))
                {
                    operationLog += "Civil_F/A Start 由" + (eproject.CM_CC_RevisedStart == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_CC_RevisedStart)) + "修改为" + this.txtCM_CC_RevisedStart.Text.Trim() + ",";
                }
                if ((eproject.CM_CC_RevisedStartIsAct.HasValue ? eproject.CM_CC_RevisedStartIsAct.Value : false) != cbCM_CC_RevisedStart.Checked)
                {
                    operationLog += "Civil_F/A Start Actual 由" + (eproject.CM_CC_RevisedStartIsAct.HasValue ? eproject.CM_CC_RevisedStartIsAct.Value : false).ToString() + "修改为" + cbCM_CC_RevisedStart.Checked.ToString() + ",";
                }
                if (eproject.CM_CC_RevisedEnd != Funs.GetNewDateTime(this.txtCM_CC_RevisedEnd.Text.Trim()))
                {
                    operationLog += "Civil_F/A End 由" + (eproject.CM_CC_RevisedEnd == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_CC_RevisedEnd) + "修改为" + this.txtCM_CC_RevisedEnd.Text.Trim()) + ",";
                }
                if ((eproject.CM_CC_RevisedEndIsAct.HasValue ? eproject.CM_CC_RevisedEndIsAct.Value : false) != cbCM_CC_RevisedEnd.Checked)
                {
                    operationLog += "Civil_F/A End Actual 由" + (eproject.CM_CC_RevisedEndIsAct.HasValue ? eproject.CM_CC_RevisedEndIsAct.Value : false).ToString() + "修改为" + cbCM_CC_RevisedEnd.Checked.ToString() + ",";
                }
                if (eproject.CM_CM_RevisedStart != Funs.GetNewDateTime(this.txtCM_CM_RevisedStart.Text.Trim()))
                {
                    operationLog += "Mech./E&I_F/A Start 由" + (eproject.CM_CM_RevisedStart == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_CM_RevisedStart)) + "修改为" + this.txtCM_CM_RevisedStart.Text.Trim() + ",";
                }
                if ((eproject.CM_CM_RevisedStartIsAct.HasValue ? eproject.CM_CM_RevisedStartIsAct.Value : false) != cbCM_CM_RevisedStart.Checked)
                {
                    operationLog += "Mech./E&I_F/A Start Actual 由" + (eproject.CM_CM_RevisedStartIsAct.HasValue ? eproject.CM_CM_RevisedStartIsAct.Value : false).ToString() + "修改为" + cbCM_CM_RevisedStart.Checked.ToString() + ",";
                }
                if (eproject.CM_CM_RevisedEnd != Funs.GetNewDateTime(this.txtCM_CM_RevisedEnd.Text.Trim()))
                {
                    operationLog += "Mech./E&I_F/A End 由" + (eproject.CM_CM_RevisedEnd == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_CM_RevisedEnd)) + "修改为" + this.txtCM_CM_RevisedEnd.Text.Trim() + ",";
                }
                if ((eproject.CM_CM_RevisedEndIsAct.HasValue ? eproject.CM_CM_RevisedEndIsAct.Value : false) != cbCM_CM_RevisedEnd.Checked)
                {
                    operationLog += "Mech./E&I_F/A End Actual 由" + (eproject.CM_CM_RevisedEndIsAct.HasValue ? eproject.CM_CM_RevisedEndIsAct.Value : false).ToString() + "修改为" + cbCM_CM_RevisedEnd.Checked.ToString() + ",";
                }
                if (eproject.CM_KickOffMetting != Funs.GetNewDateTime(this.txtCM_KickOffMetting.Text.Trim()))
                {
                    operationLog += "Const.Kick-off Meeting 由" + (eproject.CM_KickOffMetting == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_KickOffMetting)) + "修改为" + this.txtCM_KickOffMetting.Text.Trim() + ",";
                }
                if (eproject.CM_MA_MC != Funs.GetNewDateTime(this.txtCM_MA_MC.Text.Trim()))
                {
                    operationLog += "MC 由" + (eproject.CM_MA_MC == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_MA_MC) + "修改为" + this.txtCM_MA_MC.Text.Trim()) + ",";
                }
                if ((eproject.PM_General_CostToComplete != null || txtCM_Cost.Text != "") && eproject.PM_General_CostToComplete != Funs.GetNewDecimal(txtCM_Cost.Text.Trim()))
                {
                    operationLog += "Cost to Complete 由" + (eproject.PM_General_CostToComplete != null ? eproject.PM_General_CostToComplete.Value.ToString() : "") + "修改为" + txtCM_Cost.Text + ",";
                }
                if (eproject.CM_Punch_CKilledDate != Funs.GetNewDateTime(this.txtCM_Punch_CKilledDate.Text.Trim()))
                {
                    operationLog += "C Killed Date 由" + (eproject.CM_Punch_CKilledDate == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_Punch_CKilledDate)) + "修改为" + this.txtCM_Punch_CKilledDate.Text.Trim() + ",";
                }
                if (eproject.CM_Date_of_Registration != Funs.GetNewDateTime(this.txtDate_of_Registration.Text.Trim()))
                {
                    operationLog += "Date of Registration 由" + (eproject.CM_Date_of_Registration == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.CM_Date_of_Registration)) + "修改为" + this.txtDate_of_Registration.Text.Trim() + ",";
                }
                if ((!string.IsNullOrEmpty(eproject.CM_Remarks_Construction) || txtCM_Remarks_Construction.Text != "") && eproject.CM_Remarks_Construction != txtCM_Remarks_Construction.Text.Trim())
                {
                    operationLog += "Construction 由" + eproject.CM_Remarks_Construction + "修改为" + txtCM_Remarks_Construction.Text.Trim() + ",";
                }
                if ((!string.IsNullOrEmpty(eproject.CM_Remarks_Procurement) || txtCM_Remarks_Procurement.Text!="") && eproject.CM_Remarks_Procurement != txtCM_Remarks_Procurement.Text.Trim())
                {
                    operationLog += "Procurement 由" + eproject.CM_Remarks_Procurement + "修改为" + txtCM_Remarks_Procurement.Text.Trim() + ",";
                }
                if ((!string.IsNullOrEmpty(eproject.CM_Remarks_QualityHSE) || txtCM_Remarks_QualityHSE.Text!="") && eproject.CM_Remarks_QualityHSE != txtCM_Remarks_QualityHSE.Text.Trim())
                {
                    operationLog += "Quality&HSE 由" + eproject.CM_Remarks_QualityHSE + "修改为" + txtCM_Remarks_QualityHSE.Text.Trim() + ",";
                }
                #endregion
                eproject.EProjectId = eprojectId;
                eproject.CM_CC_RevisedStart = Funs.GetNewDateTime(txtCM_CC_RevisedStart.Text.Trim());
                eproject.CM_CC_RevisedEnd = Funs.GetNewDateTime(txtCM_CC_RevisedEnd.Text.Trim());
                if (cbCM_CC_RevisedStart.Checked)
                {
                    eproject.CM_CC_RevisedStartIsAct = true;
                }
                else
                {
                    eproject.CM_CC_RevisedStartIsAct = null;
                }
                if (cbCM_CC_RevisedEnd.Checked)
                {
                    eproject.CM_CC_RevisedEndIsAct = true;
                }
                else
                {
                    eproject.CM_CC_RevisedEndIsAct = null;
                }
                eproject.CM_CM_RevisedStart = Funs.GetNewDateTime(txtCM_CM_RevisedStart.Text.Trim());
                eproject.CM_CM_RevisedEnd = Funs.GetNewDateTime(txtCM_CM_RevisedEnd.Text.Trim());
                if (cbCM_CM_RevisedStart.Checked)
                {
                    eproject.CM_CM_RevisedStartIsAct = true;
                }
                else
                {
                    eproject.CM_CM_RevisedStartIsAct = null;
                }
                if (cbCM_CM_RevisedEnd.Checked)
                {
                    eproject.CM_CM_RevisedEndIsAct = true;
                }
                else
                {
                    eproject.CM_CM_RevisedEndIsAct = null;
                }
                btnCalculated_Click(null, null);//进度计算
                if (txtCM_CC_AcutalProgress.Text.Trim() != string.Empty)
                {
                    eproject.CM_CC_AcutalProgress = Convert.ToDecimal(txtCM_CC_AcutalProgress.Text.Trim());
                }
                if (txtCM_CM_AcutalProgress.Text.Trim() != string.Empty)
                {
                    eproject.CM_CM_AcutalProgress = Convert.ToDecimal(txtCM_CM_AcutalProgress.Text.Trim());
                }
                eproject.PM_General_CostToComplete = Funs.GetNewDecimalOrZero(txtCM_Cost.Text.Trim());
                eproject.CM_KickOffMetting = Funs.GetNewDateTime(txtCM_KickOffMetting.Text.Trim());
                if (chbNA.Checked)
                {
                    eproject.CM_Punch_CKilledDate = Convert.ToDateTime("1900-01-01");
                }
                else
                {
                    if (!string.IsNullOrEmpty(txtCM_Punch_CKilledDate.Text.Trim()))
                    {
                        eproject.CM_Punch_CKilledDate = Funs.GetNewDateTime(txtCM_Punch_CKilledDate.Text.Trim());
                    }
                    else
                    {
                        eproject.CM_Punch_CKilledDate = null;
                    }
                }
                if (!string.IsNullOrEmpty(txtCM_MA_MC.Text.Trim()))
                {
                    eproject.CM_MA_MC = Funs.GetNewDateTime(txtCM_MA_MC.Text.Trim());
                }
                else
                {
                    eproject.CM_MA_MC = null;
                }
                eproject.CM_Remarks_Construction = txtCM_Remarks_Construction.Text.Trim();
                eproject.CM_Remarks_Procurement = txtCM_Remarks_Procurement.Text.Trim();
                eproject.CM_Remarks_QualityHSE = txtCM_Remarks_QualityHSE.Text.Trim();
                eproject.CM_Date_of_Registration = Funs.GetNewDateTime(this.txtDate_of_Registration.Text.Trim());
                eproject.ModifyDate = DateTime.Now;
                eproject.ModifyPerson = CurrUser.UserId;
                BLL.EProjectService.UpdateProject(eproject, "CM");
                //更新Cost Report中CostToComplete
                //var costReports = BLL.CostReportService.GetCostReportByEProjectId(eproject.EProjectId);
                //if (costReports.Count > 0)
                //{
                //    //var costDate = costReports.Max(x => Convert.ToDateTime(x.Monthly).ToString("yyyy-MM"));
                //    var costDate = costReports.Max(x => x.Monthly);
                //    if (!string.IsNullOrEmpty(costDate))
                //    {
                //        var newCost = BLL.CostReportService.GetCostReportByEProjectIdAndMonth(eproject.EProjectId, costDate);
                //        if (newCost != null)
                //        {
                //            newCost.CostToComplete = eproject.PM_General_CostToComplete;
                //            BLL.CostReportService.UpdateCostReport(newCost);
                //        }
                //    }
                //}
                #region 更新项目状态
                //更新项目状态
                var epro = BLL.EProjectService.GeteProjectById(eproject.EProjectId);
                if (epro != null)
                {
                    // CM中Kick-off meeting不为空 ,CM中Actual MC Date为空,PM中Final Approval Date不为空 修改于2024.07.03
                    if (epro.ProjectControl_JobType != "Other" && epro.CM_KickOffMetting.HasValue && !epro.CM_MA_MC.HasValue && epro.PM_MA_ProjectApproval.HasValue)
                    {
                        if (eproject.ProjectControl_JobStatus == null || eproject.ProjectControl_JobStatus == "" || eproject.ProjectControl_JobStatus == "In Procurement"
                       || eproject.ProjectControl_JobStatus == "Detailed Design" || eproject.ProjectControl_JobStatus == "On Going"
                       || eproject.ProjectControl_JobStatus == "Study" || eproject.ProjectControl_JobStatus == "Not Start")
                        {
                            eproject.ProjectControl_JobStatus = "In Construction";
                        }
                    }
                    //当CM中、Milestones(Actual)的MC不为空时,状态为MC
                    if (epro.CM_MA_MC.HasValue)
                    {
                        if (eproject.ProjectControl_JobStatus == null || eproject.ProjectControl_JobStatus == ""
                        || eproject.ProjectControl_JobStatus == "In Procurement" || eproject.ProjectControl_JobStatus == "In Construction"
                        || eproject.ProjectControl_JobStatus == "Detailed Design" || eproject.ProjectControl_JobStatus == "On Going"
                        || eproject.ProjectControl_JobStatus == "Study" || eproject.ProjectControl_JobStatus == "Not Start")
                        {
                            eproject.ProjectControl_JobStatus = "MC";
                        }
                    }
                    // 增加于2024.07.03
                    if (epro.ProjectControl_JobType == "Other" && epro.PM_MA_ProjectApproval.HasValue && !epro.CM_MA_MC.HasValue)
                    {
                        eproject.ProjectControl_JobStatus = "On Going";
                    }
                    //当Project_Control Manager中Business Closure-Close Date、CM中、Milestones(Actual)-MC、FC、Punch-C Killed Date都不为空时,状态为Closed
                    //if (epro.ProjectControl_BC_CloseDate.HasValue && epro.CM_MA_MC.HasValue && epro.CM_FC.HasValue && epro.CM_Punch_CKilledDate.HasValue)
                    //{
                    //    epro.ProjectControl_ClosedDate = DateTime.Now;
                    //    epro.ProjectControl_JobStatus = "Closed";
                    //}
                    if ((epro.Permit_PS_SafetyFinalAcc.HasValue && epro.Permit_PA_SafetyFinalACC.HasValue
                                 && epro.Permit_PS_FFFinalAcc.HasValue && epro.Permit_PA_FFFinalACC.HasValue
                                 && epro.Permit_PS_EnvFinalAcc.HasValue && epro.Permit_PA_EnvFinalACC.HasValue)
                                 || (epro.Permit_PS_SafetyFinalAcc.HasValue && epro.Permit_PA_SafetyFinalACC.HasValue
                                 && !epro.Permit_PS_FFFinalAcc.HasValue && !epro.Permit_PA_FFFinalACC.HasValue
                                 && !epro.Permit_PS_EnvFinalAcc.HasValue && !epro.Permit_PA_EnvFinalACC.HasValue)
                                 || (epro.Permit_PS_SafetyFinalAcc.HasValue && epro.Permit_PA_SafetyFinalACC.HasValue
                                 && epro.Permit_PS_FFFinalAcc.HasValue && epro.Permit_PA_FFFinalACC.HasValue
                                 && !epro.Permit_PS_EnvFinalAcc.HasValue && !epro.Permit_PA_EnvFinalACC.HasValue)
                                 || (epro.Permit_PS_SafetyFinalAcc.HasValue && epro.Permit_PA_SafetyFinalACC.HasValue
                                 && !epro.Permit_PS_FFFinalAcc.HasValue && !epro.Permit_PA_FFFinalACC.HasValue
                                 && epro.Permit_PS_EnvFinalAcc.HasValue && epro.Permit_PA_EnvFinalACC.HasValue)
                                 || (!epro.Permit_PS_SafetyFinalAcc.HasValue && !epro.Permit_PA_SafetyFinalACC.HasValue
                                 && epro.Permit_PS_FFFinalAcc.HasValue && epro.Permit_PA_FFFinalACC.HasValue
                                 && epro.Permit_PS_EnvFinalAcc.HasValue && epro.Permit_PA_EnvFinalACC.HasValue)
                                 || (!epro.Permit_PS_SafetyFinalAcc.HasValue && !epro.Permit_PA_SafetyFinalACC.HasValue
                                 && !epro.Permit_PS_FFFinalAcc.HasValue && !epro.Permit_PA_FFFinalACC.HasValue
                                 && epro.Permit_PS_EnvFinalAcc.HasValue && epro.Permit_PA_EnvFinalACC.HasValue)
                                 || (!epro.Permit_PS_SafetyFinalAcc.HasValue && !epro.Permit_PA_SafetyFinalACC.HasValue
                                 && !epro.Permit_PS_FFFinalAcc.HasValue && !epro.Permit_PA_FFFinalACC.HasValue
                                 && !epro.Permit_PS_EnvFinalAcc.HasValue && !epro.Permit_PA_EnvFinalACC.HasValue))
                    {
                        #region MOC项目
                        //MOC项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④剩余材料登记
                        if (eproject.ProjectControl_JobType == "MOC")
                        {
                            List closeDateLists = new List();
                            var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");//竣工图接收日期
                            if (built != null)
                            {
                                if (built.ReceiveHC.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));
                                }
                            }
                            var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");//主控文档更新日期
                            if (md != null)
                            {
                                if (md.ReceivePDF.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));
                                }
                            }
                            if (eproject.ProjectControl_BC_CloseDate.HasValue)
                            {
                                closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
                            }
                            if (eproject.CM_Date_of_Registration.HasValue)
                            {
                                closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记
                            }
                            closeDateLists.Sort();
                            if (closeDateLists.Count == 4)
                            {
                                eproject.ProjectControl_ClosedDate = closeDateLists[3];
                                eproject.ProjectControl_JobStatus = "Closed";
                            }
                        }
                        #endregion
                        #region 类型为项目和小型投资
                        //类型为项目和小型投资:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④C类尾项消项日期⑤机械竣工签署日期⑥剩余材料登记⑦计划具备开车条件日期⑧大于100万需要FC签署日期
                        else if (eproject.ProjectControl_JobType == "Small Invest" || eproject.ProjectControl_JobType == "Projects")
                        {
                            List closeDateLists = new List();
                            var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");
                            if (built != null)
                            {
                                if (built.ReceiveHC.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期
                                }
                            }
                            if (eproject.ProjectControl_BC_CloseDate.HasValue)
                            {
                                closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
                            }
                            var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");
                            if (md != null)
                            {
                                if (md.ReceivePDF.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期
                                }
                            }
                            if (eproject.CM_Punch_CKilledDate.HasValue)
                            {
                                closeDateLists.Add(Convert.ToDateTime(eproject.CM_Punch_CKilledDate));//C类尾项消项日期
                            }
                            var mc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D11_MC");
                            if (mc != null)
                            {
                                if (mc.ReceiveHC.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//机械竣工签署日期
                                }
                            }
                            if (eproject.CM_Date_of_Registration.HasValue)
                            {
                                closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记
                            }
                            var rfsu = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D12_RFSU");
                            if (rfsu != null)
                            {
                                if (rfsu.ReceiveHC.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//计划具备开车条件日期
                                }
                            }
                            // 大于1000000需要FC签署日期
                            if (eproject.ProjectControl_OrginalBudget != null && eproject.ProjectControl_OrginalBudget > 1000000)
                            {
                                var fc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D30_FC");
                                if (fc != null)
                                {
                                    if (fc.ReceiveHC.HasValue)
                                    {
                                        closeDateLists.Add(Convert.ToDateTime(fc.ReceiveHC));//FC签署日期
                                    }
                                }
                                closeDateLists.Sort();
                                if (closeDateLists.Count == 8)
                                {
                                    eproject.ProjectControl_ClosedDate = closeDateLists[7];
                                    eproject.ProjectControl_JobStatus = "Closed";
                                }
                            }
                            else
                            {
                                closeDateLists.Sort();
                                if (closeDateLists.Count == 7)
                                {
                                    eproject.ProjectControl_ClosedDate = closeDateLists[6];
                                    eproject.ProjectControl_JobStatus = "Closed";
                                }
                            }
                        }
                        #endregion
                        #region 不用了
                        //大于100万的项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④C类尾项消项日期⑤机械竣工签署日期⑥FC签署日期⑦剩余材料登记⑧计划具备开车条件日期
                        //else if (eproject.ProjectControl_JobType == "Projects")
                        //{
                        //    List closeDateLists = new List();
                        //    var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");
                        //    if (built != null)
                        //    {
                        //        if (built.ReceiveHC.HasValue)
                        //        {
                        //            closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期
                        //        }
                        //    }
                        //    if (eproject.ProjectControl_BC_CloseDate.HasValue)
                        //    {
                        //        closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
                        //    }
                        //    var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");
                        //    if (md != null)
                        //    {
                        //        if (md.ReceivePDF.HasValue)
                        //        {
                        //            closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期
                        //        }
                        //    }
                        //    if (eproject.CM_Punch_CKilledDate.HasValue)
                        //    {
                        //        closeDateLists.Add(Convert.ToDateTime(eproject.CM_Punch_CKilledDate));//C类尾项消项日期
                        //    }
                        //    var mc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D11_MC");
                        //    if (mc != null)
                        //    {
                        //        if (mc.ReceiveHC.HasValue)
                        //        {
                        //            closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//机械竣工签署日期
                        //        }
                        //    }
                        //    var fc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D30_FC");
                        //    if (fc != null)
                        //    {
                        //        if (fc.ReceiveHC.HasValue)
                        //        {
                        //            closeDateLists.Add(Convert.ToDateTime(fc.ReceiveHC));//FC签署日期
                        //        }
                        //    }
                        //    if (eproject.CM_Date_of_Registration.HasValue)
                        //    {
                        //        closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记
                        //    }
                        //    var rfsu = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D12_RFSU");
                        //    if (rfsu != null)
                        //    {
                        //        if (rfsu.ReceiveHC.HasValue)
                        //        {
                        //            closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//计划具备开车条件日期
                        //        }
                        //    }
                        //    closeDateLists.Sort();
                        //    if (closeDateLists.Count == 8)
                        //    {
                        //        eproject.ProjectControl_ClosedDate = closeDateLists[7];
                        //        eproject.ProjectControl_JobStatus = "Closed";
                        //    }
                        //}
                        #endregion
                        #region 其他类项目
                        //其他类项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期
                        else if (eproject.ProjectControl_JobType == "Other")
                        {
                            List closeDateLists = new List();
                            var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");
                            if (built != null)
                            {
                                if (built.ReceiveHC.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期
                                }
                            }
                            if (eproject.ProjectControl_BC_CloseDate.HasValue)
                            {
                                closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
                            }
                            var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");
                            if (md != null)
                            {
                                if (md.ReceivePDF.HasValue)
                                {
                                    closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期
                                }
                            }
                            closeDateLists.Sort();
                            if (closeDateLists.Count == 3)
                            {
                                eproject.ProjectControl_ClosedDate = closeDateLists[2];
                                eproject.ProjectControl_JobStatus = "Closed";
                            }
                        }
                        #endregion
                    }
                    if (epro.ProjectControl_JobStatus != eproject.ProjectControl_JobStatus)
                    {
                        operationLog += "Job Status 由" + epro.ProjectControl_JobStatus + "修改为" + eproject.ProjectControl_JobStatus + ",";
                    }
                    operationLog += "操作成功!";
                    BLL.Sys_LogService.AddLog(this.CurrUser.UserId, operationLog);
                    epro.EProjectId = eproject.EProjectId;
                    BLL.EProjectService.UpdateProjectJobStatus(epro);
                    //发送邮件:当MOC状态为closed状态时,项目关闭,文件整理提醒
                    string closeEmailTitle = epro.ProjectControl_JobNo + "-项目关闭";
                    var closeem = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(closeEmailTitle) select x;
                    if (closeem.Count() == 0)
                    {
                        if (epro.ProjectControl_JobType == "MOC" && epro.ProjectControl_JobStatus == "Closed")
                        {
                            NameValueCollection nameValue = new NameValueCollection();
                            nameValue.Add("projectName", epro.ProjectControl_JobTitle.ToString().Trim());
                            nameValue.Add("projectNo", epro.ProjectControl_JobNo.ToString().Trim());
                            EmailSendMessage(epro, BLL.Const.PCFSRString, nameValue, BLL.Const.CustomString, "3");
                        }
                    }
                    #region MC auto Mail邮件通知
                    //string mcEmailTitle = epro.ProjectControl_JobNo + " MC Compeleted";
                    var ema = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(epro.ProjectControl_JobNo) 
                              && x.EmailTile.Contains("MC") && x.EmailTile.Contains("Completed")
                              && x.EmailStatus.Contains("发送成功") select x;
                    if (ema.Count() == 0)
                    {
                        //项目类型为Projects或者是Small Invest 并且mcSigned不为空,当项目状态变为MC后
                        //string mcSigned6 = string.Empty;
                        //var q = from x in Funs.DB.Editor_TDC where x.Type == "D11_MC" && x.ReceiveHC.HasValue && x.EProjectId == eprojectId orderby x.ReceiveHC descending select x;
                        //if (q.Count() > 0)
                        //{
                        //    mcSigned6 = q.First().ReceiveHC.HasValue ? Convert.ToDateTime(q.First().ReceiveHC.Value.AddMonths(6)).ToString("yyyy-MM-dd") : "";
                        //}
                        if ((epro.ProjectControl_JobType == "Projects" || epro.ProjectControl_JobType == "Small Invest" || epro.ProjectControl_JobType == "MOC")
                             && epro.ProjectControl_JobStatus == "MC" && epro.CM_MA_MC.HasValue)
                        {
                            NameValueCollection nameValue = new NameValueCollection();
                            nameValue.Add("projectName", epro.ProjectControl_JobTitle.ToString().Trim());
                            nameValue.Add("projectNo", epro.ProjectControl_JobNo.ToString().Trim());
                            nameValue.Add("CM_MA_MC", epro.CM_MA_MC.HasValue ? Convert.ToDateTime(epro.CM_MA_MC).ToString("yyyy-MM-dd") : "");
                            nameValue.Add("projectBUCode", epro.ProjectControl_BUCode);
                            nameValue.Add("CM_MA_MC6", epro.CM_MA_MC.HasValue ? Convert.ToDateTime(epro.CM_MA_MC).AddMonths(6).ToString("yyyy-MM-dd") : "");
                            //nameValue.Add("MC_Signed6", mcSigned6);
                            Sys_User PMsys_User = BLL.Sys_UserService.GetUsersByUserId(epro.ProjectControl_ProjectManagerId);
                            if (PMsys_User != null)
                            {
                                nameValue.Add("PMUserName", epro.ProjectControl_ProjectManager);
                                nameValue.Add("PMChineseName", PMsys_User.ChineseName);
                            }
                            else
                            {
                                nameValue.Add("PMUserName", "");
                                nameValue.Add("PMChineseName", "");
                            }
                            Sys_User EMsys_User = BLL.Sys_UserService.GetUsersByUserId(epro.ProjectControl_EMManagerId);
                            if (EMsys_User != null)
                            {
                                nameValue.Add("EMUserName", epro.ProjectControl_EMManager);
                                nameValue.Add("EMChineseName", EMsys_User.ChineseName);
                            }
                            else
                            {
                                nameValue.Add("EMUserName", "");
                                nameValue.Add("EMChineseName", "");
                            }
                            Sys_User CMsys_User = BLL.Sys_UserService.GetUsersByUserId(epro.ProjectControl_ConstManagerId);
                            if (CMsys_User != null)
                            {
                                nameValue.Add("CMUserName", epro.ProjectControl_ConstManager);
                                nameValue.Add("CMChineseName", CMsys_User.ChineseName);
                            }
                            else
                            {
                                nameValue.Add("CMUserName", "");
                                nameValue.Add("CMChineseName", "");
                            }
                            nameValue.Add("ProjectControl_FilesLink", epro.ProjectControl_FilesLink);
                            EmailSendMessage(eproject, BLL.Const.MAM2String, nameValue, BLL.Const.CustomString);
                        }
                        #region 不用了
                        //除1情况以外的工作任务,当项目状态变为MC后
                        //if ((eproject.ProjectControl_JobType == "MOC" || eproject.ProjectControl_JobType == "Other") && eproject.ProjectControl_JobStatus == "MC")
                        //{
                        //    NameValueCollection nameValue = new NameValueCollection();
                        //    nameValue.Add("projectName", epro.ProjectControl_JobTitle.ToString().Trim());
                        //    nameValue.Add("projectNo", epro.ProjectControl_JobNo.ToString().Trim());
                        //    nameValue.Add("MC MA_MC", epro.CM_MA_MC.HasValue ? Convert.ToDateTime(epro.CM_MA_MC).ToString("yyyy-MM-dd") : "");
                        //    nameValue.Add("CM_MA_MC6", epro.CM_MA_MC.HasValue ? Convert.ToDateTime(epro.CM_MA_MC).AddMonths(6).ToString("yyyy-MM-dd") : "");
                        //    nameValue.Add("projectBUCode", epro.ProjectControl_BUCode);
                        //    Sys_User PMsys_User = BLL.Sys_UserService.GetUserByUserName(epro.ProjectControl_ProjectManager);
                        //    if (PMsys_User != null)
                        //    {
                        //        nameValue.Add("PMUserName", epro.ProjectControl_ProjectManager);
                        //        nameValue.Add("PMChineseName", PMsys_User.ChineseName);
                        //    }
                        //    else
                        //    {
                        //        nameValue.Add("PMUserName", "");
                        //        nameValue.Add("PMChineseName", "");
                        //    }
                        //    Sys_User EMsys_User = BLL.Sys_UserService.GetUserByUserName(epro.ProjectControl_EMManager);
                        //    if (EMsys_User != null)
                        //    {
                        //        nameValue.Add("EMUserName", epro.ProjectControl_EMManager);
                        //        nameValue.Add("EMChineseName", EMsys_User.ChineseName);
                        //    }
                        //    else
                        //    {
                        //        nameValue.Add("EMUserName", "");
                        //        nameValue.Add("EMChineseName", "");
                        //    }
                        //    Sys_User CMsys_User = BLL.Sys_UserService.GetUserByUserName(epro.ProjectControl_ConstManager);
                        //    if (CMsys_User != null)
                        //    {
                        //        nameValue.Add("CMUserName", epro.ProjectControl_ConstManager);
                        //        nameValue.Add("CMChineseName", CMsys_User.ChineseName);
                        //    }
                        //    else
                        //    {
                        //        nameValue.Add("CMUserName", "");
                        //        nameValue.Add("CMChineseName", "");
                        //    }
                        //    nameValue.Add("ProjectControl_FilesLink", epro.ProjectControl_FilesLink);
                        //    EmailSendMessage(eproject, BLL.Const.MAM2String, nameValue, BLL.Const.CustomString);
                        //}
                        #endregion
                    }
                    #endregion
                }
                #endregion              
            }
            ShowNotify("Save successfully!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #endregion
        protected void chbNA_OnCheckedChanged(object sender, EventArgs e)
        {
            if (chbNA.Checked)
            {
                txtCM_Punch_CKilledDate.Text = string.Empty;
                txtCM_Punch_CKilledDate.Enabled = false;
            }
            else
            {
                txtCM_Punch_CKilledDate.Enabled = true;
            }
        }
        #region 计算进度
        /// 
        /// 计算进度
        /// 
        /// 
        /// 
        protected void btnCalculated_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtCM_CC_RevisedStart.Text.Trim()) && !string.IsNullOrEmpty(txtCM_CC_RevisedEnd.Text.Trim()))
            {
                decimal cc1 = 0;
                decimal cc2 = 0;
                cc1 = (DateTime.Now - Convert.ToDateTime(txtCM_CC_RevisedStart.Text.Trim())).Days;
                cc2 = (Convert.ToDateTime(txtCM_CC_RevisedEnd.Text.Trim()) - Convert.ToDateTime(txtCM_CC_RevisedStart.Text.Trim())).Days;
                if (cc2 != 0)
                {
                    decimal progress = cc1 / cc2 * 100;
                    if (progress > 100)
                    {
                        this.txtCM_CC_AcutalProgress.Text = "100";
                    }
                    else if (progress < 0)
                    {
                        this.txtCM_CC_AcutalProgress.Text = "0";
                    }
                    else
                    {
                        this.txtCM_CC_AcutalProgress.Text = progress.ToString();
                    }
                }
            }
            if (!string.IsNullOrEmpty(txtCM_CM_RevisedStart.Text.Trim()) && !string.IsNullOrEmpty(txtCM_CM_RevisedEnd.Text.Trim()))
            {
                decimal cm1 = 0;
                decimal cm2 = 0;
                cm1 = (DateTime.Now - Convert.ToDateTime(txtCM_CM_RevisedStart.Text.Trim())).Days;
                cm2 = (Convert.ToDateTime(txtCM_CM_RevisedEnd.Text.Trim()) - Convert.ToDateTime(txtCM_CM_RevisedStart.Text.Trim())).Days;
                if (cm2 != 0)
                {
                    decimal progress = cm1 / cm2 * 100;
                    if (progress > 100)
                    {
                        txtCM_CM_AcutalProgress.Text = "100";
                    }
                    else if (progress < 0)
                    {
                        txtCM_CM_AcutalProgress.Text = "0";
                    }
                    else
                    {
                        txtCM_CM_AcutalProgress.Text = progress.ToString();
                    }
                }
            }
        }
        #endregion
        #region 权限设置
        /// 
        /// 菜单按钮权限
        /// 
        private void GetButtonPower()
        {
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.CMEditorMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnSave))
                {
                    this.btnSave.Hidden = false;
                    this.btnCalculated.Hidden = false;
                }
            }
        }
        #endregion
    }
}