using BLL;
using FineUIPro.Web.Report;
using Microsoft.IdentityModel.Tokens;
using Model;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;

namespace FineUIPro.Web.EditorManage
{
    public partial class ProjectControlEditorEdit : PageBase
    {
        #region 加载
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string view = Request.Params["view"];
                if (view == "1")
                {
                    this.btnCalculated.Hidden = true;
                    this.btnSave.Hidden = true;
                }
                else
                {
                    GetButtonPower();//权限设置
                }
                this.btnClose.OnClientClick = ActiveWindow.GetHideReference();

                #region 加载下拉框
                BLL.ConstService.InitConstValueDropDownList(this.drpJobType, BLL.Const.ProjectPlanner_JobType, true);//项目类型
                //BLL.ConstService.InitConstValueDropDownList(this.drpJobStatus, BLL.Const.ProjectPlanner_JobStatus, false); //项目状态
                BLL.DepartService.InitDepartDropDownList(this.drpBuCode, true);//部门               
                BLL.Sys_UserService.InitUserDrpNA(this.drpProjectManager, true); //项目经理             
                BLL.Sys_UserService.InitUserDrpNA(this.drpEMManager, true);   //EM
                BLL.Sys_UserService.InitUserDrpNA(this.drpConstManager, true);//施工经理
                BLL.Sys_UserService.InitUserDropDownList(this.drpOpre, true);//操作代表
                BLL.Sys_UserService.InitDropDownList(this.drpLeadBy, true);
                BLL.Sys_UserService.InitUserDropDownList(this.drpCIProcess, true);
                BLL.Sys_UserService.InitUserDropDownList(this.drpEquipment, true);
                BLL.Sys_UserService.InitUserDropDownList(this.drpInstrument, true);
                BLL.Sys_UserService.InitUserDropDownList(this.drpElectrical, true);
                BLL.Sys_UserService.InitUserDropDownList(this.drpCivil, true);
                BLL.ConstService.InitConstValueDropDownList(this.drpPM_General_Priority, BLL.Const.PM_Priority, true);
                #endregion

                this.txtBC_CloseDate.MaxDate = DateTime.Now;
                this.txtResourcePlanReceived.MaxDate = DateTime.Now;
                this.txtCancelDate.MaxDate = DateTime.Now;

                string eProjectId = Request.Params["eProjectId"];
                if (!string.IsNullOrEmpty(eProjectId))
                {
                    Model.Editor_EProject eproject = BLL.EProjectService.GeteProjectById(eProjectId);
                    if (eproject != null)
                    {
                        if (eproject.ProjectControl_JobType == "Other")
                        {
                            this.drpProjectManager.Items.Clear();
                            this.drpConstManager.Items.Clear();
                            this.drpOpre.Items.Clear();
                            this.drpEMManager.Items.Clear();
                            //this.drpLeadBy.Items.Clear();
                            this.drpProjectManager.EnableGroup = false;
                            this.drpConstManager.EnableGroup = false;
                            this.drpOpre.EnableGroup = false;
                            this.drpEMManager.EnableGroup = false;
                            //this.drpLeadBy.EnableGroup = false;
                            BLL.Sys_UserService.InitDrpNA(this.drpProjectManager, true);
                            BLL.Sys_UserService.InitDrpNA(this.drpConstManager, true);
                            BLL.Sys_UserService.InitDropDownList(this.drpOpre, true);
                            BLL.Sys_UserService.InitDrpNA(this.drpEMManager, true);
                            //BLL.Sys_UserService.InitDropDownList(this.drpLeadBy, true);
                            this.drpProjectManager.SelectedIndex = 0;
                            this.drpConstManager.SelectedIndex = 0;
                            this.drpOpre.SelectedIndex = 0;
                            //this.drpLeadBy.SelectedIndex = 0;
                            this.drpEMManager.SelectedIndex = 0;
                            BLL.ConstService.InitConstValueProjectStatus(this.drpJobStatus, BLL.Const.ProjectPlanner_JobStatus, "3", false);

                        }
                        else
                        {
                            BLL.ConstService.InitConstValueProjectStatus(this.drpJobStatus, BLL.Const.ProjectPlanner_JobStatus, "2", false);
                        }

                        this.txtJobNo.Text = eproject.ProjectControl_JobNo;
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_BUCode))
                        {
                            this.drpBuCode.SelectedValue = BLL.DepartService.GetDepartByName(eproject.ProjectControl_BUCode).DepartId;
                        }
                        this.txtNotesLink.Text = eproject.ProjectControl_NotesLink;
                        this.txtFilesLink.Text = eproject.ProjectControl_FilesLink;
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_ConstManagerId) && eproject.ProjectControl_ConstManagerId != null)
                        {
                            this.drpConstManager.SelectedValue = eproject.ProjectControl_ConstManagerId.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_JobType.Trim()))
                        {
                            this.drpJobType.SelectedValue = BLL.ConstService.GetConstListByTextAndGroupId(eproject.ProjectControl_JobType.Trim(), BLL.Const.ProjectPlanner_JobType).ConstValue;
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_ProjectType))
                        {
                            this.drpProjType.SelectedValue = eproject.ProjectControl_ProjectType;
                        }
                        this.txtOrginalBudget.Text = eproject.ProjectControl_OrginalBudget == null ? "" : Convert.ToInt32(eproject.ProjectControl_OrginalBudget).ToString();

                        if (!string.IsNullOrEmpty(eproject.ProjectControl_EMManagerId) && eproject.ProjectControl_EMManagerId != null)
                        {
                            this.drpEMManager.SelectedValue = eproject.ProjectControl_EMManagerId.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_JobStatus) && eproject.ProjectControl_JobStatus != null)
                        {
                            this.drpJobStatus.SelectedValue = BLL.ConstService.GetConstListByTextAndGroupId(eproject.ProjectControl_JobStatus.Trim(), BLL.Const.ProjectPlanner_JobStatus).ConstValue;
                        }
                        this.txtAccount.Text = eproject.ProjectControl_Account;
                        this.hdAccount.Text = eproject.ProjectControl_Account;
                        this.txtJobTitle.Text = eproject.ProjectControl_JobTitle;
                        this.txtPVIPrediction.Text = eproject.ProjectControl_PVIPrediction == null ? "" : eproject.ProjectControl_PVIPrediction.ToString();
                        this.txtCostEffectvitity.Text = eproject.ProjectControl_CostEffectvitity;
                        this.txtMOCFormNO.Text = eproject.ProjectControl_MOCFormNo;
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_LeadBy) && eproject.ProjectControl_LeadBy != null)
                        {
                            this.drpLeadBy.SelectedValue = eproject.ProjectControl_LeadBy.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_OperationRepId) && eproject.ProjectControl_OperationRepId != null)
                        {
                            this.drpOpre.SelectedValue = eproject.ProjectControl_OperationRepId.Trim();
                        }
                        this.txtNetworkNo.Text = eproject.ProjectControl_NetworkNo;
                        this.hdNetworkDate.Text = eproject.ProjectControl_NetworkDate == null ? "" : eproject.ProjectControl_NetworkDate.ToString();
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_ProjectManagerId) && eproject.ProjectControl_ProjectManagerId != null)
                        {
                            this.drpProjectManager.SelectedValue = eproject.ProjectControl_ProjectManagerId.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.PM_General_Priority))
                        {
                            drpPM_General_Priority.SelectedValue = BLL.ConstService.GetConstListByTextAndGroupId(eproject.PM_General_Priority, BLL.Const.PM_Priority).ConstValue;
                        }
                        this.txtRemark.Text = eproject.ProjectControl_Remarks;

                        this.txtLPSchStart.Text = eproject.ProjectControl_LP_SchStart == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_LP_SchStart);
                        this.txtLPSchEnd.Text = eproject.ProjectControl_LP_SchEnd == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_LP_SchEnd);
                        this.txtLPProgress.Text = eproject.ProjectControl_LP_Progress == null ? "" : eproject.ProjectControl_LP_Progress.ToString();
                        this.txtCCSchStart.Text = eproject.ProjectControl_CC_SchStart == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_CC_SchStart);
                        this.txtCCSchEnd.Text = eproject.ProjectControl_CC_SchEnd == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_CC_SchEnd);
                        this.txtCCProgress.Text = eproject.ProjectControl_CC_Progress == null ? "" : eproject.ProjectControl_CC_Progress.ToString();
                        this.txtCMSchStart.Text = eproject.ProjectControl_CM_SchStart == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_CM_SchStart);
                        this.txtCMSchEnd.Text = eproject.ProjectControl_CM_SchEnd == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_CM_SchEnd);
                        this.txtCMProgress.Text = eproject.ProjectControl_CM_Progress == null ? "" : eproject.ProjectControl_CM_Progress.ToString();

                        if (!string.IsNullOrEmpty(eproject.ProjectControl_CI_Process) && eproject.ProjectControl_CI_Process != null)
                        {
                            this.drpCIProcess.SelectedValue = eproject.ProjectControl_CI_Process.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_CI_Equipment) && eproject.ProjectControl_CI_Equipment != null)
                        {
                            this.drpEquipment.SelectedValue = eproject.ProjectControl_CI_Equipment.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_CI_Instrument) && eproject.ProjectControl_CI_Instrument != null)
                        {
                            this.drpInstrument.SelectedValue = eproject.ProjectControl_CI_Instrument.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_CI_Electrical) && eproject.ProjectControl_CI_Electrical != null)
                        {
                            this.drpElectrical.SelectedValue = eproject.ProjectControl_CI_Electrical.Trim();
                        }
                        if (!string.IsNullOrEmpty(eproject.ProjectControl_CI_Civil) && eproject.ProjectControl_CI_Civil != null)
                        {
                            this.drpCivil.SelectedValue = eproject.ProjectControl_CI_Civil.Trim();
                        }
                        this.txtChangedBudget.Text = eproject.ProjectControl_ChangedBudget == null ? "" : eproject.ProjectControl_ChangedBudget.ToString();
                        this.txtCommitted_PRPO.Text = eproject.ProjectControl_CommittedPRPO == null ? "" : eproject.ProjectControl_CommittedPRPO.ToString();
                        this.txtCommitted_SSRs.Text = eproject.ProjectControl_CommittedSSRs == null ? "" : eproject.ProjectControl_CommittedSSRs.ToString();
                        this.txtActual.Text = eproject.ProjectControl_Actual == null ? "" : eproject.ProjectControl_Actual.ToString();
                        this.txtResourcePlanReceived.Text = eproject.ProjectControl_MS_ResourcePlanReceived == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_MS_ResourcePlanReceived);
                        this.txtMS_SR.Text = eproject.ProjectControl_MS_SR == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_MS_SR);
                        this.txtMS_Approval.Text = eproject.ProjectControl_MS_Approval == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_MS_Approval);
                        this.txtMS_MC.Text = eproject.ProjectControl_MS_MC == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_MS_MC);
                        this.txtMS_Close.Text = eproject.ProjectControl_MS_Close == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_MS_Close);
                        txtPM_SC_ApprovedQty.Text = Convert.ToString(eproject.PM_SC_ApprovedQty);
                        txtPM_SC_ApprovedCost.Text = Convert.ToString(eproject.PM_SC_ApprovedCost);
                        txtPM_SC_PendingQty.Text = Convert.ToString(eproject.PM_SC_PendingQty);
                        txtPM_SC_PendingCost.Text = Convert.ToString(eproject.PM_SC_PendingCost);

                        this.txtBC_CloseDate.Text = eproject.ProjectControl_BC_CloseDate == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_BC_CloseDate);
                        this.txtCancelDate.Text = eproject.ProjectControl_PC_CancelDate == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_PC_CancelDate);
                        this.txtHold.Text = eproject.Job_Hold == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.Job_Hold);
                        this.txtCAPEXPlanNo.Text = eproject.CAPEXPlanNo;
                        this.txtStudyWo.Text = eproject.StudyWo;
                        this.drpCTEInvolved.SelectedValue = eproject.CTEInvolved;
                        txtRevisedMCDate.Text = eproject.ProjectControl_Revised_MC_Date == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.ProjectControl_Revised_MC_Date);
                        btnCalculated_Click(null, null);//计算进度                        
                    }
                }
                else
                {
                    string prefixCode = DateTime.Now.ToString("yy");
                    this.txtJobNo.Text = BLL.SQLHelper.RunProcNewId("SpGetNewCode3", "dbo.Editor_EProject", "ProjectControl_JobNo", prefixCode);
                    this.drpJobStatus.SelectedValue = "Not Start";

                }
            }
        }
        #endregion

        #region 保存
        /// <summary>
        /// 保存按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (this.drpJobType.SelectedValue == BLL.Const._Null)
            {
                Alert.ShowInTop("Please select Job type!", MessageBoxIcon.Warning);
                return;
            }
            if (this.drpJobStatus.SelectedValue == BLL.Const._Null)
            {
                Alert.ShowInTop("Please select Job status!", MessageBoxIcon.Warning);
                return;
            }
            if (this.drpBuCode.SelectedValue == BLL.Const._Null)
            {
                Alert.ShowInTop("Please select Bu.Code!", MessageBoxIcon.Warning);
                return;
            }
            if (this.drpLeadBy.SelectedValue == BLL.Const._Null)
            {
                Alert.ShowInTop("Please select Lead By!", MessageBoxIcon.Warning);
                return;
            }

            string operationLog = string.Empty;
            Model.Editor_EProject pro = null;
            string eProjectId = Request.Params["eProjectId"];
            if (!string.IsNullOrEmpty(eProjectId))
            {
                pro = BLL.EProjectService.GeteProjectById(eProjectId);
                operationLog = pro.ProjectControl_JobNo + "_Project Control:";
            }
            Model.Editor_EProject eProject = new Model.Editor_EProject();

            eProject.ProjectControl_JobNo = this.txtJobNo.Text.Trim();
            eProject.ProjectControl_NotesLink = this.txtNotesLink.Text.Trim();
            eProject.ProjectControl_FilesLink = this.txtFilesLink.Text.Trim();
            if (this.drpConstManager.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_ConstManagerId = this.drpConstManager.SelectedValue;
                eProject.ProjectControl_ConstManager = this.drpConstManager.SelectedItem.Text;
            }
            eProject.ProjectControl_JobType = this.drpJobType.SelectedItem.Text;
            if (this.drpProjType.SelectedValue != "0")
            {
                eProject.ProjectControl_ProjectType = this.drpProjType.SelectedValue;
            }
            eProject.ProjectControl_OrginalBudget = Funs.GetNewIntOrZero(this.txtOrginalBudget.Text.Trim());
            if (this.drpEMManager.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_EMManagerId = this.drpEMManager.SelectedValue;
                eProject.ProjectControl_EMManager = this.drpEMManager.SelectedItem.Text;
            }
            eProject.ProjectControl_JobStatus = this.drpJobStatus.SelectedItem.Text;
            eProject.ProjectControl_Account = this.txtAccount.Text.Trim();
            eProject.ProjectControl_JobTitle = this.txtJobTitle.Text.Trim();
            eProject.ProjectControl_PVIPrediction = Funs.GetNewDecimalOrZero(this.txtPVIPrediction.Text);
            eProject.ProjectControl_BUCode = this.drpBuCode.SelectedItem.Text;
            eProject.ProjectControl_CostEffectvitity = this.txtCostEffectvitity.Text.Trim();
            eProject.ProjectControl_MOCFormNo = this.txtMOCFormNO.Text.Trim();
            if (this.drpLeadBy.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_LeadBy = this.drpLeadBy.SelectedValue;
                eProject.ProjectControl_LeadByName = this.drpLeadBy.SelectedItem.Text.Trim();
            }
            if (this.drpOpre.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_OperationRepId = this.drpOpre.SelectedValue;
                eProject.ProjectControl_OperationRep = this.drpOpre.SelectedItem.Text;
            }
            eProject.ProjectControl_NetworkNo = this.txtNetworkNo.Text;
            if (this.drpProjectManager.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_ProjectManagerId = this.drpProjectManager.SelectedValue;
                eProject.ProjectControl_ProjectManager = this.drpProjectManager.SelectedItem.Text;
            }
            if (this.drpPM_General_Priority.SelectedValue != BLL.Const._Null)
            {
                eProject.PM_General_Priority = drpPM_General_Priority.SelectedItem.Text;
            }
            else
            {
                eProject.PM_General_Priority = null;
            }

            eProject.ProjectControl_Remarks = this.txtRemark.Text.Trim();
            eProject.ProjectControl_LP_SchStart = Funs.GetNewDateTime(this.txtLPSchStart.Text.Trim());
            eProject.ProjectControl_LP_SchEnd = Funs.GetNewDateTime(this.txtLPSchEnd.Text.Trim());

            #region 不用了,直接调用btnCalculated_Click
            //if (!string.IsNullOrEmpty(this.txtLPProgress.Text.Trim()))
            //{
            //    eProject.ProjectControl_LP_Progress = Funs.GetNewDecimal(this.txtLPProgress.Text.Trim());
            //}
            //else
            //{
            //    decimal lp1 = 0;
            //    decimal lp2 = 0;
            //    if (eProject.ProjectControl_LP_SchStart.HasValue)
            //    {
            //        lp1 = (DateTime.Now - eProject.ProjectControl_LP_SchStart).Value.Days;
            //    }
            //    if (eProject.ProjectControl_LP_SchEnd.HasValue)
            //    {
            //        lp2 = (eProject.ProjectControl_LP_SchEnd - eProject.ProjectControl_LP_SchStart).Value.Days;
            //    }
            //    if (lp2 != 0)
            //    {
            //        decimal progress = lp1 / lp2 * 100;
            //        if (progress > 100)
            //        {
            //            eProject.ProjectControl_LP_Progress = 100;
            //        }
            //        else if (progress < 0)
            //        {
            //            eProject.ProjectControl_LP_Progress = 0;
            //        }
            //        else
            //        {
            //            eProject.ProjectControl_LP_Progress = Funs.GetNewDecimalOrZero(progress.ToString());
            //        }
            //    }
            //}

            //if (!string.IsNullOrEmpty(this.txtCCProgress.Text.Trim()))
            //{
            //    eProject.ProjectControl_CC_Progress = Funs.GetNewDecimal(this.txtCCProgress.Text.Trim());
            //}
            //else
            //{
            //    decimal cc1 = 0;
            //    decimal cc2 = 0;
            //    if (eProject.ProjectControl_CC_SchStart.HasValue)
            //    {
            //        cc1 = (DateTime.Now - eProject.ProjectControl_CC_SchStart).Value.Days;
            //    }
            //    if (eProject.ProjectControl_CC_SchEnd.HasValue)
            //    {
            //        cc2 = (eProject.ProjectControl_CC_SchEnd - eProject.ProjectControl_CC_SchStart).Value.Days;
            //    }
            //    if (cc2 != 0)
            //    {
            //        decimal progress = cc1 / cc2 * 100;
            //        if (progress > 100)
            //        {
            //            eProject.ProjectControl_CC_Progress = 100;
            //        }
            //        else if (progress < 0)
            //        {
            //            eProject.ProjectControl_CC_Progress = 0;
            //        }
            //        else
            //        {
            //            eProject.ProjectControl_CC_Progress = Funs.GetNewDecimalOrZero(progress.ToString());
            //        }
            //    }
            //}

            //if (!string.IsNullOrEmpty(txtCMProgress.Text.Trim()))
            //{
            //    eProject.ProjectControl_CM_Progress = Funs.GetNewDecimal(txtCMProgress.Text.Trim());
            //}
            //else
            //{
            //    decimal cm1 = 0;
            //    decimal cm2 = 0;
            //    if (eProject.ProjectControl_CM_SchStart.HasValue)
            //    {
            //        cm1 = (DateTime.Now - eProject.ProjectControl_CM_SchStart).Value.Days;
            //    }
            //    if (eProject.ProjectControl_CM_SchEnd.HasValue)
            //    {
            //        cm2 = (eProject.ProjectControl_CM_SchEnd - eProject.ProjectControl_CM_SchStart).Value.Days;
            //    }
            //    if (cm2 != 0)
            //    {
            //        decimal progress = cm1 / cm2 * 100;
            //        if (progress > 100)
            //        {
            //            eProject.ProjectControl_CM_Progress = 100;
            //        }
            //        else if (progress < 0)
            //        {
            //            eProject.ProjectControl_CM_Progress = 0;
            //        }
            //        else
            //        {
            //            eProject.ProjectControl_CM_Progress = Funs.GetNewDecimalOrZero(progress.ToString());
            //        }
            //    }
            //}
            #endregion
            btnCalculated_Click(null, null);//进度计算
            if (txtLPProgress.Text.Trim() != string.Empty)
            {
                eProject.ProjectControl_LP_Progress = Convert.ToDecimal(txtLPProgress.Text.Trim());
            }
            if (txtCCProgress.Text.Trim() != string.Empty)
            {
                eProject.ProjectControl_CC_Progress = Convert.ToDecimal(txtCCProgress.Text.Trim());
            }
            if (txtCMProgress.Text.Trim() != string.Empty)
            {
                eProject.ProjectControl_CM_Progress = Convert.ToDecimal(txtCMProgress.Text.Trim());
            }


            if (!string.IsNullOrEmpty(eProjectId))
            {
                if (!pro.PM_LLEP_RevisedStart.HasValue)
                {
                    eProject.PM_LLEP_RevisedStart = Funs.GetNewDateTime(this.txtLPSchStart.Text.Trim());
                }
                else
                {
                    eProject.PM_LLEP_RevisedStart = pro.PM_LLEP_RevisedStart;
                }

                if (!pro.PM_LLEP_RevisedEnd.HasValue)
                {
                    eProject.PM_LLEP_RevisedEnd = Funs.GetNewDateTime(this.txtLPSchEnd.Text.Trim());
                }
                else
                {
                    eProject.PM_LLEP_RevisedEnd = pro.PM_LLEP_RevisedEnd;
                }

                if (!pro.PM_LLEP_ActualProgress.HasValue)
                {
                    eProject.PM_LLEP_ActualProgress = eProject.ProjectControl_LP_Progress;
                }
                else
                {
                    eProject.PM_LLEP_ActualProgress = pro.PM_LLEP_ActualProgress;
                }
                if (!pro.CM_CC_RevisedStart.HasValue)
                {
                    eProject.CM_CC_RevisedStart = Funs.GetNewDateTime(this.txtCCSchStart.Text.Trim());
                }
                else
                {
                    eProject.CM_CC_RevisedStart = pro.CM_CC_RevisedStart;
                }
                if (!pro.CM_CM_RevisedEnd.HasValue)
                {
                    eProject.CM_CM_RevisedEnd = Funs.GetNewDateTime(this.txtCCSchEnd.Text.Trim());
                }
                else
                {
                    eProject.CM_CM_RevisedEnd = pro.CM_CM_RevisedEnd;
                }
                if (!pro.CM_CC_AcutalProgress.HasValue)
                {
                    eProject.CM_CC_AcutalProgress = eProject.ProjectControl_CC_Progress;
                }
                else
                {
                    eProject.CM_CC_AcutalProgress = pro.CM_CC_AcutalProgress;
                }

                if (!pro.CM_CM_RevisedStart.HasValue)
                {
                    eProject.CM_CM_RevisedStart = Funs.GetNewDateTime(this.txtCMSchStart.Text.Trim());
                }
                else
                {
                    eProject.CM_CM_RevisedStart = pro.CM_CM_RevisedStart;
                }

                if (!pro.CM_CM_RevisedEnd.HasValue)
                {
                    eProject.CM_CM_RevisedEnd = Funs.GetNewDateTime(this.txtCMSchEnd.Text.Trim());
                }
                else
                {
                    eProject.CM_CM_RevisedEnd = pro.CM_CM_RevisedEnd;
                }

                if (!pro.CM_CM_AcutalProgress.HasValue)
                {
                    eProject.CM_CM_AcutalProgress = eProject.ProjectControl_CM_Progress;
                }
                else
                {
                    eProject.CM_CM_AcutalProgress = pro.CM_CM_AcutalProgress;
                }
            }
            else
            {
                eProject.PM_LLEP_RevisedStart = Funs.GetNewDateTime(this.txtLPSchStart.Text.Trim());
                eProject.PM_LLEP_RevisedEnd = Funs.GetNewDateTime(this.txtLPSchEnd.Text.Trim());
                eProject.PM_LLEP_ActualProgress = eProject.ProjectControl_LP_Progress;
                eProject.CM_CC_RevisedStart = Funs.GetNewDateTime(this.txtCCSchStart.Text.Trim());
                eProject.CM_CM_RevisedEnd = Funs.GetNewDateTime(this.txtCCSchEnd.Text.Trim());
                eProject.CM_CC_AcutalProgress = eProject.ProjectControl_CC_Progress;

                eProject.CM_CM_RevisedStart = Funs.GetNewDateTime(this.txtCMSchStart.Text.Trim());
                eProject.CM_CM_AcutalProgress = eProject.ProjectControl_CM_Progress;
            }

            eProject.ProjectControl_CC_SchStart = Funs.GetNewDateTime(this.txtCCSchStart.Text.Trim());
            eProject.ProjectControl_CC_SchEnd = Funs.GetNewDateTime(this.txtCCSchEnd.Text.Trim());
            eProject.ProjectControl_CM_SchStart = Funs.GetNewDateTime(this.txtCMSchStart.Text.Trim());
            eProject.ProjectControl_CM_SchEnd = Funs.GetNewDateTime(this.txtCMSchEnd.Text.Trim());

            if (this.drpCIProcess.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_CI_Process = this.drpCIProcess.SelectedValue;
                eProject.ProjectControl_CI_ProcessName = this.drpCIProcess.SelectedItem.Text;
            }
            if (this.drpEquipment.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_CI_Equipment = this.drpEquipment.SelectedValue;
                eProject.ProjectControl_CI_EquipmentName = this.drpEquipment.SelectedItem.Text;
            }
            if (this.drpInstrument.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_CI_Instrument = this.drpInstrument.SelectedValue;
                eProject.ProjectControl_CI_InstrumentName = this.drpInstrument.SelectedItem.Text;
            }
            if (this.drpElectrical.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_CI_Electrical = this.drpElectrical.SelectedValue;
                eProject.ProjectControl_CI_ElectricalName = this.drpElectrical.SelectedItem.Text;
            }
            if (this.drpCivil.SelectedValue != BLL.Const._Null)
            {
                eProject.ProjectControl_CI_Civil = this.drpCivil.SelectedValue;
                eProject.ProjectControl_CI_CivilName = this.drpCivil.SelectedItem.Text;
            }

            if (!string.IsNullOrEmpty(txtRevisedMCDate.Text))
            {
                eProject.ProjectControl_Revised_MC_Date = Funs.GetNewDateTime(this.txtRevisedMCDate.Text.Trim());
            }
            else
            {
                eProject.ProjectControl_Revised_MC_Date = Funs.GetNewDateTime(this.txtMS_MC.Text.Trim());
            }

            eProject.ProjectControl_ChangedBudget = Funs.GetNewDecimalOrZero(this.txtChangedBudget.Text.Trim());
            eProject.ProjectControl_CommittedPRPO = Funs.GetNewDecimalOrZero(this.txtCommitted_PRPO.Text.Trim());
            eProject.ProjectControl_CommittedSSRs = Funs.GetNewDecimalOrZero(this.txtCommitted_SSRs.Text.Trim());
            eProject.ProjectControl_Actual = Funs.GetNewDecimalOrZero(this.txtActual.Text.Trim());
            eProject.ProjectControl_MS_ResourcePlanReceived = Funs.GetNewDateTime(this.txtResourcePlanReceived.Text.Trim());
            eProject.ProjectControl_MS_SR = Funs.GetNewDateTime(this.txtMS_SR.Text.Trim());
            eProject.ProjectControl_MS_Approval = Funs.GetNewDateTime(this.txtMS_Approval.Text.Trim());
            eProject.ProjectControl_MS_MC = Funs.GetNewDateTime(this.txtMS_MC.Text.Trim());
            eProject.ProjectControl_MS_Close = Funs.GetNewDateTime(this.txtMS_Close.Text.Trim());
            eProject.Job_Hold = Funs.GetNewDateTime(this.txtHold.Text.Trim());

            eProject.PM_SC_ApprovedQty = Funs.GetNewInt(txtPM_SC_ApprovedQty.Text.Trim());
            eProject.PM_SC_ApprovedCost = Funs.GetNewDecimal(txtPM_SC_ApprovedCost.Text.Trim());
            eProject.PM_SC_PendingQty = Funs.GetNewInt(txtPM_SC_PendingQty.Text.Trim());
            eProject.PM_SC_PendingCost = Funs.GetNewDecimal(txtPM_SC_PendingCost.Text.Trim());

            if (!string.IsNullOrEmpty(this.txtBC_CloseDate.Text.Trim()))
            {
                eProject.ProjectControl_BC_CloseDate = Funs.GetNewDateTime(this.txtBC_CloseDate.Text.Trim());
                eProject.PM_General_CostToComplete = 0;
            }
            else
            {
                if (pro != null && pro.PM_General_CostToComplete != null)
                {
                    eProject.PM_General_CostToComplete = pro.PM_General_CostToComplete;
                }
            }

            eProject.ProjectControl_PC_CancelDate = Funs.GetNewDateTime(this.txtCancelDate.Text.Trim());
            eProject.CAPEXPlanNo = this.txtCAPEXPlanNo.Text.Trim();
            eProject.CTEInvolved = this.drpCTEInvolved.SelectedValue;
            eProject.StudyWo = this.txtStudyWo.Text.Trim();

            if (!string.IsNullOrEmpty(eProjectId))
            {
                if (BLL.EProjectService.IsExitJobNoById(eProject.ProjectControl_JobNo, eProjectId))
                {
                    eProject.EProjectId = eProjectId;
                    eProject.ModifyDate = DateTime.Now;
                    eProject.ModifyPerson = CurrUser.UserId;

                    if ((pro.ProjectControl_JobType != null || drpJobType.SelectedValue != Const._Null) && pro.ProjectControl_JobType != drpJobType.SelectedItem.Text)
                    {
                        operationLog += "Job Type 由" + pro.ProjectControl_JobType + "修改为" + drpJobType.SelectedItem.Text + ",";
                    }
                    if ((pro.ProjectControl_ProjectType != null || drpProjType.SelectedValue != "0") && pro.ProjectControl_ProjectType != drpProjType.SelectedValue)
                    {
                        operationLog += "Proj.Type 由" + pro.ProjectControl_ProjectType + "修改为" + drpProjType.SelectedValue + ",";
                    }
                    if ((pro.ProjectControl_JobStatus != null || drpJobStatus.SelectedValue != Const._Null) && pro.ProjectControl_JobStatus != drpJobStatus.SelectedItem.Text)
                    {
                        operationLog += "Job Status 由" + pro.ProjectControl_JobStatus + "修改为" + drpJobStatus.SelectedItem.Text + ",";
                    }
                    if ((pro.ProjectControl_ProjectManager != null || drpProjectManager.SelectedValue != Const._Null) && pro.ProjectControl_ProjectManagerId != drpProjectManager.SelectedValue)
                    {
                        operationLog += "PM 由" + pro.ProjectControl_ProjectManager + "修改为" + drpProjectManager.SelectedItem.Text + ",";
                    }
                    if ((pro.ProjectControl_EMManager != null || drpEMManager.SelectedValue != Const._Null) && pro.ProjectControl_EMManagerId != drpEMManager.SelectedValue)
                    {
                        operationLog += "EM 由" + pro.ProjectControl_EMManager + "修改为" + drpEMManager.SelectedItem.Text + ",";
                    }
                    if ((pro.ProjectControl_ConstManager != null || drpConstManager.SelectedValue != Const._Null) && pro.ProjectControl_ConstManagerId != drpConstManager.SelectedValue)
                    {
                        operationLog += "CM 由" + pro.ProjectControl_ConstManager + "修改为" + drpConstManager.SelectedItem.Text + ",";
                    }
                    if ((pro.ProjectControl_LeadBy != null || drpLeadBy.SelectedValue != Const._Null) && pro.ProjectControl_LeadBy != drpLeadBy.SelectedValue)
                    {
                        operationLog += "Lead By 由" + pro.ProjectControl_LeadByName + "修改为" + drpLeadBy.SelectedItem.Text + ",";
                    }
                    if ((pro.ProjectControl_OperationRepId != null || drpOpre.SelectedValue != Const._Null) && pro.ProjectControl_OperationRepId != drpOpre.SelectedValue)
                    {
                        operationLog += "Operation Rep 由" + pro.ProjectControl_OperationRep + "修改为" + drpOpre.SelectedItem.Text + ",";
                    }
                    if (pro.ProjectControl_OrginalBudget != Funs.GetNewDecimalOrZero(this.txtOrginalBudget.Text.Trim()))
                    {
                        operationLog += "Orginal Budget 由" + (pro.ProjectControl_OrginalBudget == null ? "" : Convert.ToInt32(pro.ProjectControl_OrginalBudget).ToString()) + "修改为" + this.txtOrginalBudget.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_Revised_MC_Date != Funs.GetNewDateTime(this.txtRevisedMCDate.Text.Trim()))
                    {
                        operationLog += "Revised MC Date 由" + (pro.ProjectControl_Revised_MC_Date == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_Revised_MC_Date)) + "修改为" + this.txtRevisedMCDate.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_Account != txtAccount.Text.Trim())
                    {
                        operationLog += "Account No. 由" + pro.ProjectControl_Account + "修改为" + txtAccount.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_NetworkNo != txtNetworkNo.Text.Trim())
                    {
                        operationLog += "Network No. 由" + pro.ProjectControl_NetworkNo + "修改为" + txtNetworkNo.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_MOCFormNo != txtMOCFormNO.Text.Trim())
                    {
                        operationLog += "MOC Form No. 由" + pro.ProjectControl_MOCFormNo + "修改为" + txtMOCFormNO.Text.Trim() + ",";
                    }
                    if (pro.CAPEXPlanNo != txtCAPEXPlanNo.Text.Trim())
                    {
                        operationLog += "CAPEX Plan No. 由" + pro.CAPEXPlanNo + "修改为" + txtCAPEXPlanNo.Text.Trim() + ",";
                    }
                    if (pro.StudyWo != txtStudyWo.Text.Trim())
                    {
                        operationLog += "Study Wo 由" + pro.StudyWo + "修改为" + txtStudyWo.Text.Trim() + ",";
                    }
                    if ((pro.PM_General_Priority != null || drpPM_General_Priority.SelectedValue != Const._Null) && pro.PM_General_Priority != drpPM_General_Priority.SelectedItem.Text)
                    {
                        operationLog += "Priority 由" + pro.PM_General_Priority + "修改为" + drpPM_General_Priority.SelectedItem.Text + ",";
                    }
                    if (pro.ProjectControl_Remarks != txtRemark.Text.Trim())
                    {
                        operationLog += "Remarks 由" + pro.ProjectControl_Remarks + "修改为" + txtRemark.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_MS_SR != Funs.GetNewDateTime(this.txtMS_SR.Text.Trim()))
                    {
                        operationLog += "SR 1/2 由" + (pro.ProjectControl_MS_SR == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_MS_SR)) + "修改为" + this.txtMS_SR.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_MS_Approval != Funs.GetNewDateTime(this.txtMS_Approval.Text.Trim()))
                    {
                        operationLog += "Approval 由" + (pro.ProjectControl_MS_Approval == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_MS_Approval)) + "修改为" + this.txtMS_Approval.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_MS_MC != Funs.GetNewDateTime(this.txtMS_MC.Text.Trim()))
                    {
                        operationLog += "MC 由" + (pro.ProjectControl_MS_MC == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_MS_MC)) + "修改为" + this.txtMS_MC.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_MS_Close != Funs.GetNewDateTime(this.txtMS_Close.Text.Trim()))
                    {
                        operationLog += "MC 由" + (pro.ProjectControl_MS_Close == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_MS_Close)) + "修改为" + this.txtMS_Close.Text.Trim() + ",";
                    }

                    if ((pro.PM_SC_ApprovedQty != null || txtPM_SC_ApprovedQty.Text != "") && pro.PM_SC_ApprovedQty != Funs.GetNewInt(txtPM_SC_ApprovedQty.Text.Trim()))
                    {
                        operationLog += "Approved Qty 由" + (pro.PM_SC_ApprovedQty != null ? pro.PM_SC_ApprovedQty.Value.ToString() : "" + "修改为" + txtPM_SC_ApprovedQty.Text) + ",";
                    }
                    if ((pro.PM_SC_ApprovedCost != null || txtPM_SC_ApprovedCost.Text != "") && pro.PM_SC_ApprovedCost != Funs.GetNewDecimal(txtPM_SC_ApprovedCost.Text.Trim()))
                    {
                        operationLog += "Approved Cost 由" + (pro.PM_SC_ApprovedCost != null ? pro.PM_SC_ApprovedCost.Value.ToString() : "" + "修改为" + txtPM_SC_ApprovedCost.Text) + ",";
                    }
                    if ((pro.PM_SC_PendingQty != null || txtPM_SC_PendingQty.Text != "") && pro.PM_SC_PendingQty != Funs.GetNewInt(txtPM_SC_PendingQty.Text.Trim()))
                    {
                        operationLog += "Pending Qty 由" + (pro.PM_SC_PendingQty != null ? pro.PM_SC_PendingQty.Value.ToString() : "" + "修改为" + txtPM_SC_PendingQty.Text) + ",";
                    }
                    if ((pro.PM_SC_PendingCost != null || txtPM_SC_PendingCost.Text != "") && pro.PM_SC_PendingCost != Funs.GetNewDecimal(txtPM_SC_PendingCost.Text.Trim()))
                    {
                        operationLog += "Pending Cost 由" + (pro.PM_SC_PendingCost != null ? pro.PM_SC_PendingCost.Value.ToString() : "" + "修改为" + txtPM_SC_PendingCost.Text) + ",";
                    }

                    if (pro.ProjectControl_BC_CloseDate != Funs.GetNewDateTime(this.txtBC_CloseDate.Text.Trim()))
                    {
                        operationLog += "Close Date 由" + (pro.ProjectControl_BC_CloseDate == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_BC_CloseDate)) + "修改为" + this.txtBC_CloseDate.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_PC_CancelDate != Funs.GetNewDateTime(this.txtCancelDate.Text.Trim()))
                    {
                        operationLog += "Cancel Date 由" + (pro.ProjectControl_PC_CancelDate == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_PC_CancelDate)) + "修改为" + this.txtCancelDate.Text.Trim() + ",";
                    }
                    if (pro.Job_Hold != Funs.GetNewDateTime(this.txtHold.Text.Trim()))
                    {
                        operationLog += "Hold Date 由" + (pro.Job_Hold == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.Job_Hold)) + "修改为" + this.txtHold.Text.Trim() + ",";
                    }
                    if (pro.ProjectControl_MS_ResourcePlanReceived != Funs.GetNewDateTime(this.txtResourcePlanReceived.Text.Trim()))
                    {
                        operationLog += "Resource Plan Received 由" + (pro.ProjectControl_MS_ResourcePlanReceived == null ? "" : string.Format("{0:yyyy-MM-dd}", pro.ProjectControl_MS_ResourcePlanReceived)) + "修改为" + this.txtResourcePlanReceived.Text.Trim() + ",";
                    }

                    BLL.EProjectService.UpdateProjectControlEditor(eProject);
                    //BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Modify Project Control Editor information!");
                }
                else
                {
                    Alert.ShowInTop("The Job No. entered already exists!", MessageBoxIcon.Warning);
                    return;
                }
                //Account No的值在改变一次后(通常项目只有1次变更),历史数据写入Remarks,格式:修改日期+Account NO.
                //if (this.txtAccount.Text.Trim() != this.hdAccount.Text.Trim())
                //{
                //    this.txtRemark.Text = DateTime.Now.ToShortDateString() + ":" + this.hdAccount.Text.Trim();
                //    eProject.ProjectControl_Remarks = this.txtRemark.Text.Trim();
                //}

                //var pro = BLL.EProjectService.GeteProjectById(eProjectId);

                // 当项目为项目或小型投资时才有newwork
                if (pro.ProjectControl_JobType == "Projects" || pro.ProjectControl_JobType == "Small Invest")
                {
                    if (!string.IsNullOrEmpty(txtNetworkNo.Text) && pro.ProjectControl_NetworkDate == null)
                    {
                        eProject.ProjectControl_NetworkDate = DateTime.Now.Date;
                        eProject.ProjectControl_NetworkNo = txtNetworkNo.Text.Trim();

                        // 第一张资源表计划人工时AccountDisabled关闭(现增加第二张资源一个月后关闭)
                        //var firstRp = from x in Funs.DB.Resource_Plan where x.EProjectId == eProjectId && x.WO != null && x.WO != "" select x;
                        //if (firstRp.Count() > 0)
                        //{
                        //    PlanService.UpdateManHourPlanAccountDisabled(firstRp.First().ResourcePlanId, 1);
                        //}

                        // 更新第二张资源的Account
                        var twoRp = from x in Funs.DB.Resource_Plan where x.EProjectId == eProjectId && (x.WO == null || x.WO == "") select x;
                        if (twoRp.Count() > 0)
                        {
                            string rpId = twoRp.First().ResourcePlanId;
                            // 回写资源工单号
                            ResourcePlanService.UpdateRPWO(rpId, txtNetworkNo.Text.Trim());

                            var manHours = (from x in Funs.DB.ManHours_Plan where x.ResourcePlanId == rpId select x).ToList();
                            if (manHours.Count() > 0)
                            {
                                foreach (var m in manHours)
                                {
                                    string netWorkOper = string.Empty;

                                    var wbs = BLL.DisciplinesWBSService.GetDisciplinesWBSById(m.DisciplineId);
                                    if (wbs != null)
                                    {
                                        if (twoRp.First().Phase.Contains("Study/Concept Planning"))
                                        {
                                            netWorkOper = wbs.NetworkOper1;
                                        }
                                        else
                                        {
                                            netWorkOper = wbs.NetworkOper;
                                        }
                                    }

                                    // 更新人工时里Acccout
                                    string account = txtNetworkNo.Text.Trim() + "-" + netWorkOper;
                                    PlanService.UpdateManHourPlanAccount(m.ManHoursPlanId, account);
                                }
                            }
                        }

                        //var rpList = (from x in Funs.DB.Resource_Plan where x.EProjectId == eProjectId select x).ToList();
                        //if (rpList.Count() > 0)
                        //{
                        //    foreach (var rp in rpList)
                        //    {
                               
                        //    }
                        //}
                    }
                }
                else
                {
                    txtNetworkNo.Enabled = false;
                }
            }
            else
            {
                if (BLL.EProjectService.IsExitJobNo(eProject.ProjectControl_JobNo))
                {
                    eProject.EProjectId = SQLHelper.GetNewID(typeof(Model.Editor_EProject));
                    eProject.IsNewCreate = true;
                    eProject.CreateDate = DateTime.Now;
                    eProject.CreatePerson = CurrUser.UserId;
                    BLL.EProjectService.AddProjectControlEditor(eProject);
                    BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Add Project Control Editor information!");
                }
                else
                {
                    Alert.ShowInTop("The Job No. entered already exists!", MessageBoxIcon.Warning);
                    return;
                }
            }
            #region 更新项目状态
            //更新项目状态
            var eproject = BLL.EProjectService.GeteProjectById(eProject.EProjectId);
            if (eproject != null)
            {
                if ((eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue
                                 && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
                                 || (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
                                 && !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue)
                                 || (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue
                                 && !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue)
                                 || (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
                                 && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
                                 || (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue
                                 && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
                                 || (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
                                 && eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
                                 || (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue
                                 && !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
                                 && !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue))
                {
                    #region MOC项目
                    //MOC项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④剩余材料登记
                    if (eproject.ProjectControl_JobType == "MOC")
                    {
                        List<DateTime> closeDateLists = new List<DateTime>();
                        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<DateTime> closeDateLists = new List<DateTime>();
                        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<DateTime> closeDateLists = new List<DateTime>();
                    //    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<DateTime> closeDateLists = new List<DateTime>();
                        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 (eproject.ProjectControl_PC_CancelDate.HasValue)//当Cancel Date有输入时,状态为Cancelled
                {
                    eproject.ProjectControl_JobStatus = "Cancelled";
                }

                // 修改于2024.07.04 非other类型的项目hold不为空并且cancelDate为空
                if (eproject.Job_Hold.HasValue && !eproject.ProjectControl_PC_CancelDate.HasValue)//Hold Date有输入时,状态为Hold
                {
                    eproject.ProjectControl_JobStatus = "Hold";
                }
                if (pro.ProjectControl_JobStatus != eproject.ProjectControl_JobStatus)
                {
                    operationLog += "Job Status 由" + pro.ProjectControl_JobStatus + "修改为" + eproject.ProjectControl_JobStatus + ",";
                }
                operationLog += "操作成功!";
                BLL.Sys_LogService.AddLog(this.CurrUser.UserId, operationLog);

                eproject.EProjectId = eProject.EProjectId;
                BLL.EProjectService.UpdateProjectJobStatus(eproject);


                // 当eproject状态为Cancelled或Hold时更新人工时状态: 如日期不为空改为一个月后触发状态
                if ((eproject.ProjectControl_JobStatus == "Cancelled" && !eproject.ProjectControl_PC_CancelDate.HasValue) || (eproject.ProjectControl_JobStatus == "Hold" && !eproject.Job_Hold.HasValue))
                {
                    var updatePlan = Funs.DB.ManHours_Plan.Where(x => x.EProjectId == eProject.EProjectId);
                    if (updatePlan != null)
                    {
                        foreach (var p in updatePlan)
                        {
                            p.AccountDisabled = 1;
                        }
                        Funs.DB.SubmitChanges();
                    }
                }

                //发送邮件:当MOC状态为closed状态时,项目关闭,文件整理提醒
                string closeEmailTitle = eproject.ProjectControl_JobNo + "-项目关闭";
                var closeem = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(closeEmailTitle) select x;
                if (closeem.Count() == 0)
                {
                    if (eproject.ProjectControl_JobType == "MOC" && eproject.ProjectControl_JobStatus == "Closed")
                    {
                        NameValueCollection nameValue = new NameValueCollection();
                        nameValue.Add("projectName", eproject.ProjectControl_JobTitle.ToString().Trim());
                        nameValue.Add("projectNo", eproject.ProjectControl_JobNo.ToString().Trim());
                        EmailSendMessage(eproject, BLL.Const.PCFSRString, nameValue, BLL.Const.CustomString, "3");
                    }
                }
            }

            #endregion

            #region 邮件发送代码
            //--------邮件发送代码开始----- 
            #region Lesson learn邮件通知1
            //budget >1000万,同时项目状态为MC
            string lLEmailTitle = eproject.ProjectControl_JobNo + " Lesson Learn";
            var lLem = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(lLEmailTitle) select x;
            if (lLem.Count() > 0)
            {
                if (eProject.ProjectControl_OrginalBudget > 10000000 && this.drpJobStatus.SelectedItem.Text == "MC")
                {
                    NameValueCollection nameValue = new NameValueCollection();
                    nameValue.Add("projectBUCode", eproject.ProjectControl_BUCode);
                    nameValue.Add("projectNo", eproject.ProjectControl_JobNo.ToString().Trim());
                    nameValue.Add("projectName", eproject.ProjectControl_JobTitle.ToString().Trim());
                    nameValue.Add("CM_MA_MC", eproject.CM_MA_MC.HasValue ? Convert.ToDateTime(eproject.CM_MA_MC).ToString("yyyy-MM-dd") : "");
                    EmailSendMessage(eProject, BLL.Const.LL1String, nameValue, BLL.Const.CustomString);
                }
            }
            #endregion

            #region Lesson learn Review邮件通知2
            //budget >2000万
            string lLR2EmailTitle = eproject.ProjectControl_JobNo + " Lesson Learn Review";
            var lLR2em = from x in Funs.DB.Email_SendLog where x.EmailTile.Contains(lLR2EmailTitle) select x;
            if (lLR2em.Count() > 0)
            {
                if (eProject.ProjectControl_OrginalBudget > 20000000)
                {
                    NameValueCollection nameValue = new NameValueCollection();
                    nameValue.Add("projectBUCode", eproject.ProjectControl_BUCode);
                    nameValue.Add("projectNo", eproject.ProjectControl_JobNo.ToString().Trim());
                    nameValue.Add("projectName", eproject.ProjectControl_JobTitle.ToString().Trim());
                    EmailSendMessage(eProject, BLL.Const.LLR2String, nameValue, BLL.Const.CustomString);
                }
            }
            #endregion

            #region HC auto Mail邮件通知
            var ema = from x in Funs.DB.Email_SendLog
                      where x.EmailTile.Contains(eProject.ProjectControl_JobNo)
                            && x.EmailTile.Contains(eProject.ProjectControl_JobStatus) && x.EmailTile.Contains("has been")
                            && x.EmailStatus.Contains("发送成功")
                      select x;
            if (ema.Count() == 0)
            {
                if ((eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest" || eProject.ProjectControl_JobType == "MOC")
                     && (eProject.ProjectControl_JobStatus == "Hold" || eProject.ProjectControl_JobStatus == "Cancelled"))
                {
                    HCEmailSendMessage(eproject, BLL.Const.HCString);
                }
            }
            #endregion

            //--------邮件发送代码结束---- -
            #endregion

            ShowNotify("Save Successfully!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #endregion

        #region  邮件发送
        protected void btnEmail_Click(object sender, EventArgs e)
        {
            string eProjectId = Request.Params["eProjectId"];
            if (!string.IsNullOrEmpty(eProjectId))
            {
                var pro = BLL.EProjectService.GeteProjectById(eProjectId);
                string notes = "N.A";
                if (!string.IsNullOrEmpty(pro.ProjectControl_NotesLink))
                {
                    notes = pro.ProjectControl_NotesLink.Trim();
                }
                if ((pro.ProjectControl_JobType == "Small Invest" || pro.ProjectControl_JobType == "Projects") && !string.IsNullOrEmpty(pro.ProjectControl_Account) && !string.IsNullOrEmpty(pro.ProjectControl_NetworkNo))
                {
                    NameValueCollection nameValue = new NameValueCollection();
                    nameValue.Add("projectNo", pro.ProjectControl_JobNo.Trim());
                    nameValue.Add("projectName", pro.ProjectControl_JobTitle.Trim());
                    nameValue.Add("accountNo", pro.ProjectControl_Account.Trim());
                    nameValue.Add("networkNo", pro.ProjectControl_NetworkNo.Trim());
                    nameValue.Add("notesLink", notes);

                    string[] mailTo = null;
                    string[] mailcc = null;

                    // 发送人
                    var to1 = (from x in Funs.DB.Sys_User
                               where (x.UserId == pro.ProjectControl_ConstManagerId || x.UserId == pro.ProjectControl_ProjectManagerId
                                     || x.UserId == pro.ProjectControl_EMManagerId || x.UserId == pro.ProjectControl_OperationRepId
                                     || x.UserId == pro.ProjectControl_CI_Process || x.UserId == pro.ProjectControl_CI_Equipment
                                     || x.UserId == pro.ProjectControl_CI_Instrument || x.UserId == pro.ProjectControl_CI_Electrical
                                     || x.UserId == pro.ProjectControl_CI_Civil)
                               && x.Email != null && x.Email != ""
                               select new { EmuaerEmailAddress = x.Email, senduserid = x.UserId }
                                                                 ).Distinct().ToList();
                    var to2 = (from a in Funs.DB.ManHours_Plan
                               join b in Funs.DB.Sys_User
                               on a.EngineerId equals b.UserId
                               where a.EProjectId == pro.EProjectId && a.Account.Contains("NZNIC")
                               select new { EmuaerEmailAddress = b.Email, senduserid = b.UserId }
                                     ).Distinct().ToList();

                    string[] conTo1 = to1.Where(o => o.EmuaerEmailAddress != null).Select(o => o.EmuaerEmailAddress).ToList().ToArray();
                    string[] conTo2 = to2.Where(o => o.EmuaerEmailAddress != null).Select(o => o.EmuaerEmailAddress).ToList().ToArray();
                    if (conTo1.Count() > 0 && conTo2.Count() > 0)
                    {
                        mailTo = conTo1.Union(conTo2).Distinct().ToArray();
                    }
                    else if (conTo1.Count() > 0)
                    {
                        mailTo = conTo1;
                    }
                    else
                    {
                        mailTo = conTo2;
                    }

                    // 抄送人
                    var cc1 = (from x in Funs.DB.Sys_User
                               join y in Funs.DB.Sys_Role on x.RoleId equals y.RoleId
                               where (y.RoleName == "CTE_Director" || y.RoleName == "CDS_Manager"
                                     || y.RoleName == "Cost_Lead" || y.RoleName == "PPE")
                               && x.Email != null && x.Email != ""
                               select new { EmuaerEmailAddress = x.Email, senduserid = x.UserId }
                                                                ).Distinct().ToList();

                    var depList = (from x in Funs.DB.Sys_User
                                   where (x.UserId == pro.ProjectControl_ConstManagerId || x.UserId == pro.ProjectControl_ProjectManagerId
                                         || x.UserId == pro.ProjectControl_EMManagerId || x.UserId == pro.ProjectControl_OperationRepId
                                         || x.UserId == pro.ProjectControl_CI_Process || x.UserId == pro.ProjectControl_CI_Equipment
                                         || x.UserId == pro.ProjectControl_CI_Instrument || x.UserId == pro.ProjectControl_CI_Electrical
                                         || x.UserId == pro.ProjectControl_CI_Civil)
                                   select x.DepartId).Distinct();
                    //string depStr = string.Join(",", depList.Select(p => p.DepartId));
                    var userList = (from x in Funs.DB.Base_Depart where depList.Contains(x.DepartId) && x.DepartLeader != null select x.DepartLeader).Distinct().ToList();
                    var cc2 = (from x in Funs.DB.Sys_User
                               where userList.Contains(x.UserId) && x.Email != null && x.Email != ""
                               select new { EmuaerEmailAddress = x.Email, senduserid = x.UserId }).Distinct().ToList();

                    string[] conCc1 = cc1.Where(o => o.EmuaerEmailAddress != null).Select(o => o.EmuaerEmailAddress).ToList().ToArray();
                    string[] conCc2 = cc2.Where(o => o.EmuaerEmailAddress != null).Select(o => o.EmuaerEmailAddress).ToList().ToArray();
                    if (conCc1.Count() > 0 && conCc2.Count() > 0)
                    {
                        mailcc = conCc1.Union(conCc2).Distinct().ToArray();
                    }
                    else if (conCc1.Count() > 0)
                    {
                        mailcc = conCc1;
                    }
                    else
                    {
                        mailcc = conCc2;
                    }

                    if (!pro.PM_MA_ProjectApproval.HasValue)
                    {
                        EmailSendMessage(BLL.Const.PreApprovalString, nameValue, mailTo, mailcc);
                    }
                    else
                    {
                        EmailSendMessage(BLL.Const.ApprovalString, nameValue, mailTo, mailcc);
                    }
                }
                else
                {
                    Alert.ShowInTop("Sending conditions are not met!", MessageBoxIcon.Warning);
                    return;
                }
            }
        }
        #endregion

        #region 权限设置
        /// <summary>
        /// 菜单按钮权限
        /// </summary>
        private void GetButtonPower()
        {
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.ProjectControlEditorMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnSave))
                {
                    this.btnSave.Hidden = false;
                    this.btnCalculated.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnSend))
                {
                    this.btnEmail.Hidden = false;
                }
            }
        }
        #endregion

        #region DropDownList下拉选择
        /// <summary>
        /// 当项目类型为Projects并且Orginal Budget大于100万时,MC为当前日期加1个月
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void drpJobType_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.drpJobStatus.Items.Clear();
            if (this.drpJobType.SelectedItem.Text == "Other")
            {
                BLL.ConstService.InitConstValueProjectStatus(this.drpJobStatus, BLL.Const.ProjectPlanner_JobStatus, "3", false);
            }
            else
            {
                BLL.ConstService.InitConstValueProjectStatus(this.drpJobStatus, BLL.Const.ProjectPlanner_JobStatus, "2", false);
            }

            if (string.IsNullOrEmpty(Request.Params["eProjectId"]))
            {
                if (this.drpJobType.SelectedItem.Text == "Projects" && Funs.GetNewDecimal(this.txtOrginalBudget.Text) > 1000000)
                {
                    this.txtMS_MC.Text = DateTime.Now.AddMonths(1).ToShortDateString();
                }
                else
                {
                    this.txtMS_MC.Text = string.Empty;
                }

                this.drpProjectManager.Items.Clear();
                this.drpConstManager.Items.Clear();
                this.drpOpre.Items.Clear();
                this.drpEMManager.Items.Clear();
                // this.drpLeadBy.Items.Clear();
                //如果项目类型为Other,项目经理、施工经理、操作代表、设计经理 显示为CTE部门或人员
                if (this.drpJobType.SelectedItem.Text == "Other")
                {
                    this.drpProjectManager.EnableGroup = false;
                    this.drpConstManager.EnableGroup = false;
                    this.drpOpre.EnableGroup = false;
                    this.drpEMManager.EnableGroup = false;
                    // this.drpLeadBy.EnableGroup = false;
                    BLL.Sys_UserService.InitDropDownList(this.drpProjectManager, true);
                    BLL.Sys_UserService.InitDropDownList(this.drpConstManager, true);
                    BLL.Sys_UserService.InitDropDownList(this.drpOpre, true);
                    BLL.Sys_UserService.InitDropDownList(this.drpEMManager, true);
                    // BLL.Sys_UserService.InitDropDownList(this.drpLeadBy, true);
                    this.drpProjectManager.SelectedIndex = 0;
                    this.drpConstManager.SelectedIndex = 0;
                    this.drpOpre.SelectedIndex = 0;
                    this.drpEMManager.SelectedIndex = 0;
                    // this.drpLeadBy.SelectedIndex = 0;
                }
                else
                {
                    BLL.Sys_UserService.InitUserDropDownList(this.drpProjectManager, true);
                    BLL.Sys_UserService.InitUserDropDownList(this.drpConstManager, true);
                    BLL.Sys_UserService.InitUserDropDownList(this.drpOpre, true);
                    BLL.Sys_UserService.InitUserDropDownList(this.drpEMManager, true);
                    //BLL.Sys_UserService.InitUserDropDownList(this.drpLeadBy, true);
                    this.drpProjectManager.SelectedIndex = 0;
                    this.drpConstManager.SelectedIndex = 0;
                    this.drpOpre.SelectedIndex = 0;
                    this.drpEMManager.SelectedIndex = 0;
                    //this.drpLeadBy.SelectedIndex = 0;

                    //自动加载项目号
                    //if (string.IsNullOrEmpty(Request.Params["eProjectId"]))
                    //{
                    //    string prefixCode = DateTime.Now.ToString("yy");
                    //    this.txtJobNo.Text = BLL.SQLHelper.RunProcNewId("SpGetNewCode3", "dbo.Editor_EProject", "ProjectControl_JobNo", prefixCode);
                    //}
                }
            }
        }

        protected void drpJobStatus_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (drpJobStatus.SelectedValue != "Hold")
            {
                this.txtHold.Text = string.Empty;
            }
            else
            {
                var eproject = BLL.EProjectService.GeteProjectById(Request.Params["eProjectId"]);
                if (eproject != null)
                {
                    this.txtHold.Text = eproject.Job_Hold == null ? "" : string.Format("{0:yyyy-MM-dd}", eproject.Job_Hold);
                }
            }
        }
        protected void txtOrginalBudget_TextChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(Request.Params["eProjectId"]))
            {
                if (this.drpJobType.SelectedItem.Text == "Projects" && Funs.GetNewDecimal(this.txtOrginalBudget.Text) > 1000000)
                {
                    this.txtMS_MC.Text = DateTime.Now.AddMonths(1).ToShortDateString();
                }
                else
                {
                    this.txtMS_MC.Text = string.Empty;
                }
            }
        }
        #endregion

        #region 计算进度
        /// <summary>
        /// 计算进度
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnCalculated_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.txtLPSchStart.Text.Trim()) && !string.IsNullOrEmpty(this.txtLPSchEnd.Text.Trim()))
            {
                decimal lp1 = 0;
                decimal lp2 = 0;
                lp1 = (DateTime.Now - Convert.ToDateTime(this.txtLPSchStart.Text.Trim())).Days;
                lp2 = (Convert.ToDateTime(this.txtLPSchEnd.Text.Trim()) - Convert.ToDateTime(this.txtLPSchStart.Text.Trim())).Days;
                if (lp2 != 0)
                {
                    decimal progress = lp1 / lp2 * 100;
                    if (progress > 100)
                    {
                        this.txtLPProgress.Text = "100";
                    }
                    else if (progress < 0)
                    {
                        this.txtLPProgress.Text = "0";
                    }
                    else
                    {
                        this.txtLPProgress.Text = progress.ToString();
                    }
                }
            }
            if (!string.IsNullOrEmpty(this.txtCCSchStart.Text.Trim()) && !string.IsNullOrEmpty(this.txtCCSchEnd.Text.Trim()))
            {
                decimal cc1 = 0;
                decimal cc2 = 0;
                cc1 = (DateTime.Now - Convert.ToDateTime(this.txtCCSchStart.Text.Trim())).Days;
                cc2 = (Convert.ToDateTime(this.txtCCSchEnd.Text.Trim()) - Convert.ToDateTime(this.txtCCSchStart.Text.Trim())).Days;
                if (cc2 != 0)
                {
                    decimal progress = cc1 / cc2 * 100;
                    if (progress > 100)
                    {
                        this.txtCCProgress.Text = "100";
                    }
                    else if (progress < 0)
                    {
                        this.txtCCProgress.Text = "0";
                    }
                    else
                    {
                        this.txtCCProgress.Text = progress.ToString();
                    }
                }
            }
            if (!string.IsNullOrEmpty(this.txtCMSchStart.Text.Trim()) && !string.IsNullOrEmpty(this.txtCMSchEnd.Text.Trim()))
            {
                decimal cm1 = 0;
                decimal cm2 = 0;
                cm1 = (DateTime.Now - Convert.ToDateTime(this.txtCMSchStart.Text.Trim())).Days;
                cm2 = (Convert.ToDateTime(this.txtCMSchEnd.Text.Trim()) - Convert.ToDateTime(this.txtCMSchStart.Text.Trim())).Days;

                if (cm2 != 0)
                {
                    decimal progress = cm1 / cm2 * 100;
                    if (progress > 100)
                    {
                        this.txtCMProgress.Text = "100";
                    }
                    else if (progress < 0)
                    {
                        this.txtCMProgress.Text = "0";
                    }
                    else
                    {
                        this.txtCMProgress.Text = progress.ToString();
                    }
                }
            }
        }
        #endregion

        protected void txtRevisedMCDate_OnTextChanged(object sender, EventArgs e)
        {
            string eprojectId = Request.Params["eProjectId"];
            var epro = BLL.EProjectService.GeteProjectById(eprojectId);

            if (txtMS_Close.Text.Trim() == string.Empty && txtRevisedMCDate.Text.Trim() != string.Empty)
            {
                txtMS_Close.Text = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtRevisedMCDate.Text.Trim()).AddMonths(6));
            }
            if (txtRevisedMCDate.Text.Trim() == string.Empty)
            {
                if (epro != null)
                {
                    if (!epro.ProjectControl_MS_Close.HasValue)
                    {
                        txtMS_Close.Text = string.Empty;
                    }
                }
                else
                {
                    txtMS_Close.Text = string.Empty;
                }
            }
        }

        protected void txtMS_MC_OnTextChanged(object sender, EventArgs e)
        {
            string eprojectId = Request.Params["eProjectId"];
            var epro = BLL.EProjectService.GeteProjectById(eprojectId);

            if (txtMS_Close.Text.Trim() == string.Empty && txtMS_MC.Text.Trim() != string.Empty)
            {
                txtMS_Close.Text = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtMS_MC.Text.Trim()).AddMonths(6));
            }
            if (txtMS_MC.Text.Trim() == string.Empty)
            {
                if (epro != null)
                {
                    if (!epro.ProjectControl_MS_Close.HasValue)
                    {
                        txtMS_Close.Text = string.Empty;
                    }
                }
                else
                {
                    txtMS_Close.Text = string.Empty;
                }
            }
        }
    }
}