using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace FineUIPro.Web.ResourcePlan
{
    public partial class ResourcePlanAdd : PageBase
    {
        /// <summary>
        /// 角色编辑页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        //string eProjectId = string.Empty;
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {

                //GetButtonPower();//按钮权限
                btnClose.OnClientClick = ActiveWindow.GetHideReference();

                checkJobType.DataTextField = "ConstText";
                checkJobType.DataValueField = "ConstValue";
                checkJobType.DataSource = BLL.ConstService.GetConstListByGroupId(BLL.Const.ProjectPlanner_JobType);
                checkJobType.DataBind();

                //Phase暂无
                //checkPhase.DataTextField = "ConstText";
                //checkPhase.DataValueField = "ConstValue";
                //checkPhase.DataSource = BLL.ConstService.GetConstListByGroupId(BLL.Const.ProjectPlanner_JobType);
                //checkPhase.DataBind();

                //checkPriority.DataTextField = "ConstText";
                //checkPriority.DataValueField = "ConstValue";
                //checkPriority.DataSource = BLL.ConstService.GetConstListByGroupId(BLL.Const.PM_Priority);
                //checkPriority.DataBind();

                //项目经理
                BLL.Sys_UserService.InitCTEUserDropDownList(this.ddDesigner, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.ddChecker, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.ddApprover, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.ddLeader, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.DropDownList1, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.DropDownList2, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.DropDownList3, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.DropDownList4, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.DropDownList5, false);
                BLL.Sys_UserService.InitCTEUserDropDownList(this.DropDownList6, false);
                BLL.Sys_UserService.InitUserDropDownList(this.DropDownList7, false);

                string eProjectId = Request.Params["eProjectId"];
                if (!string.IsNullOrEmpty(eProjectId))
                {
                    var eProject = BLL.EProjectService.GeteProjectById(eProjectId);
                    if (eProject != null)
                    {
                        this.txtJobNo.Text = eProject.ProjectControl_JobNo;
                        this.txtJobTitle.Text = eProject.ProjectControl_JobTitle;
                        //this.txtWO.Text = eProject.ProjectControl_Account;
                        this.txtMOCNo.Text = eProject.ProjectControl_MOCFormNo;

                        if (!string.IsNullOrEmpty(eProject.PM_General_CDI))
                        {
                            BLL.ConstService.InitConstValueDropDownList(this.drpCDI, BLL.Const.PM_CDI, false);
                            cbCDI.Checked = true;
                            drpCDI.SelectedValue = eProject.PM_General_CDI;
                        }

                        foreach (CheckItem lst in this.checkJobType.Items)//项目类型
                        {
                            if (!string.IsNullOrEmpty(eProject.ProjectControl_JobType))
                            {
                                if (eProject.ProjectControl_JobType.Equals(lst.Value))
                                    lst.Selected = true;
                            }
                        }
                        //foreach (CheckItem lsts in this.checkPriority.Items)//优先级
                        //{
                        //    if (!string.IsNullOrEmpty(eProject.PM_General_Priority))
                        //    {
                        //        if (eProject.PM_General_Priority.Equals(lsts.Value))
                        //            lsts.Selected = true;
                        //    }
                        //}

                        var rp = BLL.ResourcePlanService.GetResourcePlanByEProjectId(eProjectId);
                        if (rp.Count() >0 && (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest"))
                        {
                            txtWO.Label = "NetWork";
                            txtWO.Enabled = false;
                        }


                        SqlParameter[] parameter = new SqlParameter[]
                        {
                           new SqlParameter("@EProjectId",eProjectId)
                        };
                        DataSet ds = SQLHelper.RunProcedure("Proc_View_ResourcePlanDetailWBS", parameter, "t");

                        DataTable table1 = ds.Tables[0];
                        DataTable table2 = ds.Tables[1];
                        if (table1.Rows.Count > 0 && table1 != null)
                        {
                            foreach (DataRow item in table1.Rows)
                            {
                                if (!string.IsNullOrEmpty(item["Sch_Start"].ToString()))
                                {
                                    txtSchStart2.Text = item["Sch_Start"].ToString();
                                }
                                if (!string.IsNullOrEmpty(item["Sch_End"].ToString()))
                                {
                                    txtSchEnd2.Text = item["Sch_End"].ToString();
                                }
                            }
                        }
                        if (table2.Rows.Count > 0 && table2 != null)
                        {
                            foreach (DataRow item in table2.Rows)
                            {
                                if (!string.IsNullOrEmpty(item["Sch_Start"].ToString()))
                                {
                                    DatePicker1.Text = item["Sch_Start"].ToString();
                                }
                                if (!string.IsNullOrEmpty(item["Sch_End"].ToString()))
                                {
                                    DatePicker2.Text = item["Sch_End"].ToString();
                                }
                            }
                        }

                        if (!string.IsNullOrEmpty(eProject.ProjectControl_ProjectManagerId))
                        {
                            this.DropDownList7.SelectedValue = eProject.ProjectControl_ProjectManagerId;
                        }
                        //绑定
                        BindGrid();
                    }
                }
            }
        }

        private void BindGrid()
        {

            string strSql = @"SELECT DisciplinesWBSId,DisciplinesWBSCode,DisciplinesWBSName,WBS,DepartId,DepartName,NetworkOper,WorkorderOper,Designer,Checker,Approver,Leader,Roles,Remark,Type,'' as UserName,'' as UserId"
                           + @" FROM Base_DisciplinesWBS ";
            DataTable table = SQLHelper.GetDataTableRunText(strSql, null);
            DataRow[] dr1 = table.Select("Type='1'", "DisciplinesWBSCode asc");
            //复制结构
            DataTable newData1 = table.Clone();
            DataTable newData2 = table.Clone();
            DataTable newData3 = table.Clone();
            for (int i = 0; i < dr1.Length; i++)
            {
                //添加一行数据
                DataRow row = newData1.NewRow();
                row["DisciplinesWBSId"] = dr1[i]["DisciplinesWBSId"].ToString();
                row["DisciplinesWBSCode"] = dr1[i]["DisciplinesWBSCode"].ToString();
                row["DisciplinesWBSName"] = dr1[i]["DisciplinesWBSName"].ToString();
                row["WBS"] = dr1[i]["WBS"].ToString();
                row["DepartId"] = dr1[i]["DepartId"].ToString();
                row["DepartName"] = dr1[i]["DepartName"].ToString();
                row["NetworkOper"] = dr1[i]["NetworkOper"].ToString();
                row["WorkorderOper"] = dr1[i]["WorkorderOper"].ToString();
                row["Designer"] = dr1[i]["Designer"].ToString();
                row["Checker"] = dr1[i]["Checker"].ToString();
                row["Approver"] = dr1[i]["Approver"].ToString();
                row["Leader"] = dr1[i]["Leader"].ToString();
                row["Roles"] = dr1[i]["Roles"].ToString();
                row["Remark"] = dr1[i]["Remark"].ToString();
                row["Type"] = dr1[i]["Type"].ToString();
                newData1.Rows.Add(row);
            }
            Grid3.DataSource = newData1;
            Grid3.DataBind();
            DataRow[] dr2 = table.Select("Type='2'", "DisciplinesWBSCode asc");
            for (int i = 0; i < dr2.Length; i++)
            {
                //添加一行数据
                DataRow row = newData2.NewRow();
                row["DisciplinesWBSId"] = dr2[i]["DisciplinesWBSId"].ToString();
                row["DisciplinesWBSCode"] = dr2[i]["DisciplinesWBSCode"].ToString();
                row["DisciplinesWBSName"] = dr2[i]["DisciplinesWBSName"].ToString();
                row["WBS"] = dr2[i]["WBS"].ToString();
                row["NetworkOper"] = dr2[i]["NetworkOper"].ToString();
                row["WorkorderOper"] = dr2[i]["WorkorderOper"].ToString();
                row["DepartId"] = dr2[i]["DepartId"].ToString();
                row["DepartName"] = dr2[i]["DepartName"].ToString();
                //如果EProjectContol中的CM不为空,新增RP时自动加载EProjectContol中的CM到Construction Mngmnt的Name中
                if (dr2[i]["DisciplinesWBSName"].ToString() == "Construction Mngmnt")
                {
                    string eProjectId = Request.Params["eProjectId"];
                    var ep = BLL.EProjectService.GeteProjectById(eProjectId);
                    if (ep != null)
                    {
                        if (!string.IsNullOrEmpty(ep.ProjectControl_ConstManagerId))
                        {
                            row["Designer"] = ep.ProjectControl_ConstManagerId;
                        }
                    }
                }
                else
                {
                    row["Designer"] = dr2[i]["Designer"].ToString();
                }
                row["Checker"] = dr2[i]["Checker"].ToString();
                row["Approver"] = dr2[i]["Approver"].ToString();
                row["Leader"] = dr2[i]["Leader"].ToString();
                row["Roles"] = dr2[i]["Roles"].ToString();
                row["Remark"] = dr2[i]["Remark"].ToString();
                row["Type"] = dr2[i]["Type"].ToString();
                newData2.Rows.Add(row);
            }
            Grid4.DataSource = newData2;
            Grid4.DataBind();

            DataRow[] dr3 = table.Select("Type='3'", "DisciplinesWBSCode asc");
            for (int i = 0; i < dr3.Length; i++)
            {
                //添加一行数据
                DataRow row = newData3.NewRow();
                row["DisciplinesWBSId"] = dr3[i]["DisciplinesWBSId"].ToString();
                row["DisciplinesWBSCode"] = dr3[i]["DisciplinesWBSCode"].ToString();
                row["DisciplinesWBSName"] = dr3[i]["DisciplinesWBSName"].ToString();
                row["WBS"] = dr3[i]["WBS"].ToString();
                row["NetworkOper"] = dr3[i]["NetworkOper"].ToString();
                row["WorkorderOper"] = dr3[i]["WorkorderOper"].ToString();
                row["DepartId"] = dr3[i]["DepartId"].ToString();
                row["DepartName"] = dr3[i]["DepartName"].ToString();
                row["Designer"] = dr3[i]["Designer"].ToString();
                row["Checker"] = dr3[i]["Checker"].ToString();
                row["Approver"] = dr3[i]["Approver"].ToString();
                row["Leader"] = dr3[i]["Leader"].ToString();
                row["Roles"] = dr3[i]["Roles"].ToString();
                row["Remark"] = dr3[i]["Remark"].ToString();
                row["Type"] = dr3[i]["Type"].ToString();
                newData3.Rows.Add(row);
            }
            Grid5.DataSource = newData3;
            Grid5.DataBind();

        }


        protected void Grid3_RowDataBound(object sender, GridRowEventArgs e)
        {
            DataRowView row = e.DataItem as DataRowView;
            string DisciplinesWBSName = row["DisciplinesWBSName"].ToString();
            if (DisciplinesWBSName == "PID" || DisciplinesWBSName == "Document" || DisciplinesWBSName == "Cost Estimate")
            {
                RenderField Sch_Start = Grid3.FindColumn("Sch_Start") as RenderField;
                e.CellCssClasses[Sch_Start.ColumnIndex] = "f-grid-cell-uneditable";
                RenderField Sch_End = Grid3.FindColumn("Sch_End") as RenderField;
                e.CellCssClasses[Sch_End.ColumnIndex] = "f-grid-cell-uneditable";
            }
        }

        #region CTE,CTA,CTM 选择复选框(只能选择其中一项)
        protected void cbDesign1_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbDesign1.Checked)
            {
                cbDesign2.Checked = false;
                cbDesign3.Checked = false;
            }
        }

        protected void cbDesign2_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbDesign2.Checked)
            {
                cbDesign1.Checked = false;
                cbDesign3.Checked = false;
            }

        }

        protected void cbDesign3_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbDesign3.Checked)
            {
                cbDesign1.Checked = false;
                cbDesign2.Checked = false;
            }
        }

        protected void cbProcurement1_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbProcurement1.Checked)
            {
                cbProcurement2.Checked = false;
                cbProcurement3.Checked = false;
            }
        }
        protected void cbProcurement2_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbProcurement2.Checked)
            {
                cbProcurement1.Checked = false;
                cbProcurement3.Checked = false;
            }
        }

        protected void cbProcurement3_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbProcurement3.Checked)
            {
                cbProcurement1.Checked = false;
                cbProcurement2.Checked = false;
            }
        }

        protected void cbConstruction1_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbConstruction1.Checked)
            {
                cbConstruction2.Checked = false;
                cbConstruction3.Checked = false;
            }
        }

        protected void cbConstruction2_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbConstruction2.Checked)
            {
                cbConstruction1.Checked = false;
                cbConstruction3.Checked = false;
            }
        }

        protected void cbConstruction3_OnCheckedChanged(object sender, EventArgs e)
        {
            if (cbConstruction3.Checked)
            {
                cbConstruction1.Checked = false;
                cbConstruction2.Checked = false;
            }
        }

        #endregion

        /// <summary>
        /// 提交按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                Model.Resource_Plan model = new Model.Resource_Plan();
                List<Model.Resource_PlanDetail> PlanDetaillist = new List<Model.Resource_PlanDetail>();
                List<Model.ManHours_Plan> ManHourList = new List<Model.ManHours_Plan>();
                Model.Editor_EProject EProjects = new Model.Editor_EProject();
                List<Model.Editor_PM> PMList = new List<Model.Editor_PM>();

                string eProjectId = Request.Params["eProjectId"];
                model.ResourcePlanId = Guid.NewGuid().ToString();
                model.EProjectId = eProjectId;

                model.WO = txtWO.Text;
                if (!string.IsNullOrEmpty(txtSchStart1.Text))
                {
                    model.ProjectApproval_Sch_Start = Convert.ToDateTime(txtSchStart1.Text);
                }
                model.ProjectApproval_Sch_NotApplicable = false;
                if (cbNotApplicable1.Checked)
                {
                    model.ProjectApproval_Sch_NotApplicable = true;
                }
                if (!string.IsNullOrEmpty(txtSchStart2.Text))
                {
                    model.Detail_Eng_Civil_Sch_Start = Convert.ToDateTime(txtSchStart2.Text);
                }
                if (!string.IsNullOrEmpty(txtSchEnd2.Text))
                {
                    model.Detail_Eng_Civil_Sch_End = Convert.ToDateTime(txtSchEnd2.Text);
                }
                model.Detail_Eng_Civil_Sch_NotApplicable = false;
                if (cbNotApplicable2.Checked)
                {
                    model.Detail_Eng_Civil_Sch_NotApplicable = true;
                }
                if (!string.IsNullOrEmpty(DatePicker1.Text))
                {
                    model.Detail_Eng_Mech_EI_Sch_Start = Convert.ToDateTime(DatePicker1.Text);
                }
                if (!string.IsNullOrEmpty(DatePicker2.Text))
                {
                    model.Detail_Eng_Mech_EI_Sch_End = Convert.ToDateTime(DatePicker2.Text);
                }
                model.Detail_Eng_Mech_EI_Sch_NotApplicable = false;
                if (CheckBox1.Checked)
                {
                    model.Detail_Eng_Mech_EI_Sch_NotApplicable = true;
                }
                if (!string.IsNullOrEmpty(DatePicker3.Text))
                {
                    model.LLE_Procurement_Sch_Start = Convert.ToDateTime(DatePicker3.Text);
                }
                if (!string.IsNullOrEmpty(DatePicker4.Text))
                {
                    model.LLE_Procurement_Sch_End = Convert.ToDateTime(DatePicker4.Text);
                }
                model.LLE_Procurement_Sch_NotApplicable = false;
                if (CheckBox2.Checked)
                {
                    model.LLE_Procurement_Sch_NotApplicable = true;
                }
                if (!string.IsNullOrEmpty(DatePicker5.Text))
                {
                    model.Const_Civil_Sch_Start = Convert.ToDateTime(DatePicker5.Text);
                }
                if (!string.IsNullOrEmpty(DatePicker6.Text))
                {
                    model.Const_Civil_Sch_End = Convert.ToDateTime(DatePicker6.Text);
                }
                model.Const_Civil_Sch_NotApplicable = false;
                if (CheckBox3.Checked)
                {
                    model.Const_Civil_Sch_NotApplicable = true;
                }
                if (!string.IsNullOrEmpty(DatePicker7.Text))
                {
                    model.Const_Mech_EI_Start = Convert.ToDateTime(DatePicker7.Text);
                }
                if (!string.IsNullOrEmpty(DatePicker8.Text))
                {
                    model.Const_Mech_EI_End = Convert.ToDateTime(DatePicker8.Text);
                }
                model.Const_Mech_EI_NotApplicable = false;
                if (CheckBox4.Checked)
                {
                    model.Const_Mech_EI_NotApplicable = true;
                }
                if (!string.IsNullOrEmpty(DatePicker9.Text))
                {
                    model.MC_Sch_Start = Convert.ToDateTime(DatePicker9.Text);
                }
                //if (!string.IsNullOrEmpty(DatePicker10.Text))
                //{
                //    model.MC_Sch_End = Convert.ToDateTime(DatePicker10.Text);
                //}
                //model.MC_Sch_NotApplicable = false;
                if (CheckBox5.Checked)
                {
                    model.MC_Sch_NotApplicable = true;
                }

                if (checkPhase.SelectedValueArray != null)
                {
                    model.Phase = checkPhase.SelectedValueArray[0];
                }

                //foreach (CheckItem item in checkPhase.Items)
                //{
                //    if (item.Selected)
                //    {
                //       model.Phase = item.Value;
                //    }
                //}

                if (cbDesign1.Checked)
                {
                    model.Design = "CTE";
                }
                else if (cbDesign2.Checked)
                {
                    model.Design = "CTA";
                }
                else if (cbDesign3.Checked)
                {
                    model.Design = "CTM";
                }
                else
                {
                    model.Design = null;
                }

                if (cbProcurement1.Checked)
                {
                    model.Procurement = "CTE";
                }
                else if (cbProcurement2.Checked)
                {
                    model.Procurement = "CTA";
                }
                else if (cbProcurement2.Checked)
                {
                    model.Procurement = "CTM";
                }
                else
                {
                    model.Procurement = null;
                }

                if (cbConstruction1.Checked)
                {
                    model.Construction = "CTE";
                }
                else if (cbConstruction2.Checked)
                {
                    model.Construction = "CTA";
                }
                else if (cbConstruction3.Checked)
                {
                    model.Construction = "CTM";
                }
                else
                {
                    model.Construction = null;
                }

                model.CreateDate = DateTime.Now;

                //Progress:自动计算% =(Today - Sch.Start)  / (Sch. End- Sch.Start)
                //更新 Editor_EProject
                EProjects.ModifyDate = DateTime.Now;
                EProjects.ModifyPerson = CurrUser.UserId;
                if (!string.IsNullOrEmpty(txtSchStart1.Text))
                {
                    EProjects.ProjectControl_MS_Approval = Convert.ToDateTime(txtSchStart1.Text);
                }

                if (!string.IsNullOrEmpty(DatePicker3.Text) && !string.IsNullOrEmpty(DatePicker4.Text))
                {
                    DateTime time = DateTime.Now;
                    EProjects.ProjectControl_LP_SchStart = Funs.GetNewDateTime(this.DatePicker3.Text.Trim());
                    EProjects.ProjectControl_LP_SchEnd = Funs.GetNewDateTime(this.DatePicker4.Text.Trim());
                    TimeSpan ts1 = time - Convert.ToDateTime(EProjects.ProjectControl_LP_SchStart);
                    TimeSpan ts2 = Convert.ToDateTime(EProjects.ProjectControl_LP_SchEnd) - Convert.ToDateTime(EProjects.ProjectControl_LP_SchStart);
                    decimal ts = Convert.ToDecimal(Math.Round(ts1.Days * 100.0 / ts2.Days, 2));
                    EProjects.ProjectControl_LP_Progress = ts;

                    EProjects.PM_LLEP_RevisedStart = Funs.GetNewDateTime(this.DatePicker3.Text.Trim());
                    EProjects.PM_LLEP_RevisedEnd = Funs.GetNewDateTime(this.DatePicker4.Text.Trim());
                    EProjects.PM_LLEP_ActualProgress = ts;
                }

                if (!string.IsNullOrEmpty(DatePicker5.Text) && !string.IsNullOrEmpty(DatePicker6.Text))
                {
                    DateTime time = DateTime.Now;
                    EProjects.ProjectControl_CC_SchStart = Convert.ToDateTime(this.DatePicker5.Text.Trim());
                    EProjects.ProjectControl_CC_SchEnd = Convert.ToDateTime(this.DatePicker6.Text.Trim());
                    TimeSpan ts1 = time - Convert.ToDateTime(EProjects.ProjectControl_CC_SchStart);
                    TimeSpan ts2 = Convert.ToDateTime(EProjects.ProjectControl_CC_SchEnd) - Convert.ToDateTime(EProjects.ProjectControl_CC_SchStart);
                    decimal ts = Convert.ToDecimal(Math.Round(ts1.Days * 100.0 / ts2.Days, 2));
                    EProjects.ProjectControl_CC_Progress = ts;

                    EProjects.CM_CC_RevisedStart = Convert.ToDateTime(this.DatePicker5.Text.Trim());
                    EProjects.CM_CC_RevisedEnd = Convert.ToDateTime(this.DatePicker6.Text.Trim());
                    EProjects.CM_CC_AcutalProgress = ts;
                }

                if (!string.IsNullOrEmpty(DatePicker7.Text) && !string.IsNullOrEmpty(DatePicker8.Text))
                {
                    DateTime time = DateTime.Now;
                    EProjects.ProjectControl_CM_SchStart = Convert.ToDateTime(this.DatePicker7.Text.Trim());
                    EProjects.ProjectControl_CM_SchEnd = Convert.ToDateTime(this.DatePicker8.Text.Trim());
                    TimeSpan ts1 = time - Convert.ToDateTime(EProjects.ProjectControl_CM_SchStart);
                    TimeSpan ts2 = Convert.ToDateTime(EProjects.ProjectControl_CM_SchEnd) - Convert.ToDateTime(EProjects.ProjectControl_CM_SchStart);
                    decimal ts = Convert.ToDecimal(Math.Round(ts1.Days * 100.0 / ts2.Days, 2));
                    EProjects.ProjectControl_CM_Progress = ts;

                    EProjects.CM_CM_RevisedStart = Convert.ToDateTime(this.DatePicker7.Text.Trim());
                    EProjects.CM_CM_RevisedEnd = Convert.ToDateTime(this.DatePicker8.Text.Trim());
                    EProjects.CM_CM_AcutalProgress = ts;
                }

                if (!string.IsNullOrEmpty(DatePicker9.Text))
                {
                    EProjects.ProjectControl_MS_MC = Funs.GetNewDateTime(this.DatePicker9.Text.Trim());
                    EProjects.ProjectControl_Revised_MC_Date = Funs.GetNewDateTime(this.DatePicker9.Text.Trim());
                    EProjects.ProjectControl_MS_Close = Funs.GetNewDateTime(this.DatePicker9.Text.Trim()).Value.AddMonths(6);
                }
                if (!string.IsNullOrEmpty(DropDownList7.SelectedValue))
                {
                    EProjects.ProjectControl_ProjectManagerId = DropDownList7.SelectedValue;
                }


                //foreach (CheckItem item in this.checkPriority.Items)
                //{
                //    if (item.Selected)
                //    {
                //        EProjects.PM_General_Priority = item.Value;
                //    }
                //}

                string ProjectControlAccount = txtWO.Text;

                // 添加第二个资源逻辑 类型项目或小型投机 account为空,wo为network
                var rp = BLL.ResourcePlanService.GetResourcePlanByEProjectId(eProjectId);
                var eProject = BLL.EProjectService.GeteProjectById(eProjectId);
                if (eProject.ProjectControl_JobType != "Projects" && eProject.ProjectControl_JobType != "Small Invest")
                {
                    EProjects.ProjectControl_Account = txtWO.Text;
                }
                if (rp.Count() > 0)
                {
                    // 把account 加日期写入StudyWo中
                    EProjects.StudyWo = eProject.ProjectControl_Account;

                    if (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest")
                    {
                        EProjects.ProjectControl_Account = null;
                        ProjectControlAccount = string.Empty;
                    }

                    // 后加条件,当创建第二个资源时,项目批准日期不为空时项目状态为On Going 不要了 修改于2024.07.03
                    //if (eProject.ProjectControl_JobType == "Other" && eProject.PM_MA_ProjectApproval.HasValue && !eProject.CM_MA_MC.HasValue
                    //    && (eProject.ProjectControl_JobStatus == "Not Start" || eProject.ProjectControl_JobStatus == "Study"))
                    //{
                    //    EProjects.ProjectControl_JobStatus = "On Going";
                    //}
                    
                    //else
                    //{
                    //    EProjects.ProjectControl_JobStatus = eProject.ProjectControl_JobStatus;
                    //}
                    //(现增加第二张资源一个月后关闭)
                    //if(eProject.ProjectControl_JobType == "MOC")
                    //{
                    //    // 如果类型是moc在增加第二张资源时,则第一张资源的人工时AccountDisabled关闭,如是other则手动关闭,如果不是则在编辑器中维护network时关闭第一张资源人工时AccountDisabled
                    //    PlanService.UpdateManHourPlanAccountDisabled(rp.First().ResourcePlanId, 1);
                    //}
                }

                if (eProject != null)
                {
                    if (eProject.ProjectControl_JobStatus == "Not Start" && !eProject.PM_MA_ProjectApproval.HasValue)
                    {
                        EProjects.ProjectControl_JobStatus = "Study";
                    }
                    else
                    {
                        EProjects.ProjectControl_JobStatus = eProject.ProjectControl_JobStatus;
                    }



                    if (cbCDI.Checked)
                    {
                        EProjects.PM_General_CDI = drpCDI.SelectedValue;
                    }
                }


                // pm 添加到人工时
                if (!string.IsNullOrEmpty(DropDownList7.SelectedValue) && !string.IsNullOrEmpty(NumberBox15.Text))
                {
                    if (BLL.Sys_UserService.IsCTEAndCalculated(DropDownList7.SelectedValue))
                    {
                        var pmd = from x in Funs.DB.Base_DisciplinesWBS where x.Type == "4" select x;
                        Model.ManHours_Plan PM = new Model.ManHours_Plan();
                        PM.ManHoursPlanId = Guid.NewGuid().ToString();
                        PM.ResourcePlanId = model.ResourcePlanId;
                        PM.EProjectId = Request.Params["eProjectId"];
                        PM.EngineerId = DropDownList7.SelectedValue;

                        PM.Account = txtWO.Text;
                        if (pmd.Count() > 0)
                        {
                            PM.DisciplineId = pmd.FirstOrDefault().DisciplinesWBSId;
                            PM.Discipline = pmd.FirstOrDefault().DisciplinesWBSName;
                            PM.Roles = pmd.FirstOrDefault().Roles;

                            if (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest")
                            {
                                if (checkPhase.Items[0].Selected)
                                {
                                    if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                    {
                                        //ManHoursPlan.Account = WorkorderOper + "-" + txtWO.Text;
                                        PM.Account = eProject.ProjectControl_NetworkNo + "-" + pmd.FirstOrDefault().NetworkOper1;
                                    }
                                    else
                                    {
                                        PM.Account = pmd.FirstOrDefault().NetworkOper1;
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                    {
                                        PM.Account = eProject.ProjectControl_NetworkNo + "-" + pmd.FirstOrDefault().NetworkOper;
                                    }
                                    else
                                    {
                                        PM.Account = pmd.FirstOrDefault().NetworkOper;
                                    }
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(txtWO.Text))
                                {
                                    PM.Account = txtWO.Text + "-" + pmd.FirstOrDefault().WorkorderOper;
                                }
                                else
                                {
                                    PM.Account = pmd.FirstOrDefault().WorkorderOper;
                                }
                            }
                        }
                        else
                        {
                            PM.DisciplineId = "M00";
                            PM.Discipline = "M00";
                            PM.Roles = "M00";
                        }

                        PM.ManHours = Convert.ToInt32(NumberBox15.Text);
                        PM.IsClose = 0;
                        PM.AccountDisabled = 0;
                        ManHourList.Add(PM);
                    }
                }

                model.CountNum = 0;
                model.IsClose = 0;

                JArray JArrays = Grid3.GetMergedData();
                if (JArrays.Count > 0)
                {
                    //Process 1
                    JObject objectsProcess = (JObject)JArrays[1];
                    string Leader1 = objectsProcess["values"]["Leader"].ToString();
                    DateTime? schStart0 = null;
                    DateTime? schEnd0 = null;
                    if (!string.IsNullOrEmpty(objectsProcess["values"]["Sch_Start"].ToString()))
                    {
                        schStart0 = Convert.ToDateTime(objectsProcess["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsProcess["values"]["Sch_End"].ToString()))
                    {
                        schEnd0 = Convert.ToDateTime(objectsProcess["values"]["Sch_End"].ToString());
                    }

                    // Piping  8
                    JObject objectsPiping = (JObject)JArrays[8];
                    string Leader2 = objectsPiping["values"]["Leader"].ToString();

                    DateTime? schStart8 = null;
                    DateTime? schEnd8 = null;
                    if (!string.IsNullOrEmpty(objectsPiping["values"]["Sch_Start"].ToString()))
                    {
                        schStart8 = Convert.ToDateTime(objectsPiping["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsPiping["values"]["Sch_End"].ToString()))
                    {
                        schEnd8 = Convert.ToDateTime(objectsPiping["values"]["Sch_End"].ToString());
                    }


                    //Plumbing/F.F 6
                    JObject objectsPlumbing = (JObject)JArrays[6];
                    string Leader3 = objectsPlumbing["values"]["Leader"].ToString();

                    DateTime? schStart6 = null;
                    DateTime? schEnd6 = null;
                    if (!string.IsNullOrEmpty(objectsPlumbing["values"]["Sch_Start"].ToString()))
                    {
                        schStart6 = Convert.ToDateTime(objectsPlumbing["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsPlumbing["values"]["Sch_End"].ToString()))
                    {
                        schEnd6 = Convert.ToDateTime(objectsPlumbing["values"]["Sch_End"].ToString());
                    }

                    if (!String.IsNullOrEmpty(Leader1))
                    {
                        EProjects.ProjectControl_CI_Process = Leader1;
                    }
                    else
                    {
                        if (!String.IsNullOrEmpty(Leader2))
                        {
                            EProjects.ProjectControl_CI_Process = Leader2;
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(Leader3))
                            {
                                EProjects.ProjectControl_CI_Process = Leader3;
                            }
                            else
                            {
                                EProjects.ProjectControl_CI_Process = eProject.ProjectControl_CI_Process;
                            }
                        }
                    }


                    JObject objectsCivil = (JObject)JArrays[3];
                    string Equipment1 = objectsCivil["values"]["Leader"].ToString();

                    DateTime? schStart3 = null;
                    DateTime? schEnd3 = null;
                    if (!string.IsNullOrEmpty(objectsCivil["values"]["Sch_Start"].ToString()))
                    {
                        schStart3 = Convert.ToDateTime(objectsCivil["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsCivil["values"]["Sch_End"].ToString()))
                    {
                        schEnd3 = Convert.ToDateTime(objectsCivil["values"]["Sch_End"].ToString());
                    }


                    JObject objectsArchitectral = (JObject)JArrays[4];
                    string Equipment2 = objectsArchitectral["values"]["Leader"].ToString();

                    DateTime? schStart4 = null;
                    DateTime? schEnd4 = null;
                    if (!string.IsNullOrEmpty(objectsArchitectral["values"]["Sch_Start"].ToString()))
                    {
                        schStart4 = Convert.ToDateTime(objectsArchitectral["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsArchitectral["values"]["Sch_End"].ToString()))
                    {
                        schEnd4 = Convert.ToDateTime(objectsArchitectral["values"]["Sch_End"].ToString());
                    }

                    JObject objectsHVAC = (JObject)JArrays[5];
                    string Equipment3 = objectsHVAC["values"]["Leader"].ToString();

                    DateTime? schStart5 = null;
                    DateTime? schEnd5 = null;
                    if (!string.IsNullOrEmpty(objectsHVAC["values"]["Sch_Start"].ToString()))
                    {
                        schStart5 = Convert.ToDateTime(objectsHVAC["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsHVAC["values"]["Sch_End"].ToString()))
                    {
                        schEnd5 = Convert.ToDateTime(objectsHVAC["values"]["Sch_End"].ToString());
                    }


                    JObject objectsMasterplanning = (JObject)JArrays[2];
                    string Equipment4 = objectsMasterplanning["values"]["Leader"].ToString();

                    DateTime? schStart2 = null;
                    DateTime? schEnd2 = null;
                    if (!string.IsNullOrEmpty(objectsMasterplanning["values"]["Sch_Start"].ToString()))
                    {
                        schStart2 = Convert.ToDateTime(objectsMasterplanning["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsMasterplanning["values"]["Sch_End"].ToString()))
                    {
                        schEnd2 = Convert.ToDateTime(objectsMasterplanning["values"]["Sch_End"].ToString());
                    }

                    // ProjectControl_CI_Equipment
                    // 取优先级Civil>Architectral>HVAC>Masterplanning
                    if (!String.IsNullOrEmpty(Equipment1))
                    {
                        EProjects.ProjectControl_CI_Civil = Equipment1;
                    }
                    else
                    {
                        if (!String.IsNullOrEmpty(Equipment2))
                        {
                            EProjects.ProjectControl_CI_Civil = Equipment2;
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(Equipment3))
                            {
                                EProjects.ProjectControl_CI_Civil = Equipment3;
                            }
                            else
                            {
                                if (!String.IsNullOrEmpty(Equipment4))
                                {
                                    EProjects.ProjectControl_CI_Civil = Equipment4;
                                }
                                else
                                {
                                    EProjects.ProjectControl_CI_Civil = eProject.ProjectControl_CI_Civil;
                                }
                            }
                        }
                    }

                    JObject objectsInstrument = (JObject)JArrays[11];
                    string Instrument = objectsInstrument["values"]["Leader"].ToString();

                    DateTime? schStart11 = null;
                    DateTime? schEnd11 = null;
                    if (!string.IsNullOrEmpty(objectsInstrument["values"]["Sch_Start"].ToString()))
                    {
                        schStart11 = Convert.ToDateTime(objectsInstrument["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsInstrument["values"]["Sch_End"].ToString()))
                    {
                        schEnd11 = Convert.ToDateTime(objectsInstrument["values"]["Sch_End"].ToString());
                    }

                    if (!string.IsNullOrEmpty(Instrument))
                    {
                        EProjects.ProjectControl_CI_Instrument = Instrument;
                    }
                    else
                    {
                        EProjects.ProjectControl_CI_Instrument = eProject.ProjectControl_CI_Instrument;
                    }

                    JObject objectsElectrical = (JObject)JArrays[9];
                    string Electrical = objectsElectrical["values"]["Leader"].ToString();

                    DateTime? schStart9 = null;
                    DateTime? schEnd9 = null;
                    if (!string.IsNullOrEmpty(objectsElectrical["values"]["Sch_Start"].ToString()))
                    {
                        schStart9 = Convert.ToDateTime(objectsElectrical["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsElectrical["values"]["Sch_End"].ToString()))
                    {
                        schEnd9 = Convert.ToDateTime(objectsElectrical["values"]["Sch_End"].ToString());
                    }


                    JObject objectsTelecommunication = (JObject)JArrays[10];
                    string Telecommunication = objectsTelecommunication["values"]["Leader"].ToString();

                    DateTime? schStart10 = null;
                    DateTime? schEnd10 = null;
                    if (!string.IsNullOrEmpty(objectsTelecommunication["values"]["Sch_Start"].ToString()))
                    {
                        schStart10 = Convert.ToDateTime(objectsTelecommunication["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsTelecommunication["values"]["Sch_End"].ToString()))
                    {
                        schEnd10 = Convert.ToDateTime(objectsTelecommunication["values"]["Sch_End"].ToString());
                    }

                    if (!String.IsNullOrEmpty(Electrical))
                    {
                        EProjects.ProjectControl_CI_Electrical = Electrical;
                    }
                    else
                    {
                        if (!String.IsNullOrEmpty(Telecommunication))
                        {
                            EProjects.ProjectControl_CI_Electrical = Telecommunication;
                        }
                        else
                        {
                            EProjects.ProjectControl_CI_Electrical = eProject.ProjectControl_CI_Electrical;
                        }

                    }


                    JObject objectsMech = (JObject)JArrays[7];
                    string MechEqui = objectsMech["values"]["Leader"].ToString();

                    DateTime? schStart7 = null;
                    DateTime? schEnd7 = null;
                    if (!string.IsNullOrEmpty(objectsMech["values"]["Sch_Start"].ToString()))
                    {
                        schStart7 = Convert.ToDateTime(objectsMech["values"]["Sch_Start"].ToString());
                    }
                    if (!string.IsNullOrEmpty(objectsMech["values"]["Sch_End"].ToString()))
                    {
                        schEnd7 = Convert.ToDateTime(objectsMech["values"]["Sch_End"].ToString());
                    }

                    if (!String.IsNullOrEmpty(MechEqui))
                    {
                        EProjects.ProjectControl_CI_Equipment = MechEqui;
                    }
                    else
                    {
                        EProjects.ProjectControl_CI_Equipment = eProject.ProjectControl_CI_Equipment;
                    }

                    Model.Resource_PlanDetail PlanDetail = null;
                    for (int i = 0; i < JArrays.Count; i++)
                    {
                        PlanDetail = new Model.Resource_PlanDetail();
                        //int rowIndex = Grid3.SelectedRowIndexArray[i];
                        JObject objects = (JObject)JArrays[i];
                        object[] dataKeys = Grid3.DataKeys[i];
                        PlanDetail.ResourcePlanDetailId = Guid.NewGuid().ToString();
                        PlanDetail.ResourcePlanId = model.ResourcePlanId;
                        PlanDetail.EProjectId = Request.Params["eProjectId"];
                        PlanDetail.DisciplinesWBSId = dataKeys[0].ToString();
                        PlanDetail.DisciplinesWBSCode = dataKeys[1].ToString();
                        PlanDetail.DisciplinesWBSName = dataKeys[2].ToString();
                        PlanDetail.WBS = dataKeys[3].ToString();
                        PlanDetail.ISort = i + 1;
                        string NetworkOper = objects["values"]["NetworkOper"].ToString();
                        string WorkorderOper = objects["values"]["WorkorderOper"].ToString();
                        PlanDetail.DesignersId = objects["values"]["Designer"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Sch_Start"].ToString()))
                        {
                            PlanDetail.Sch_Start = Convert.ToDateTime(objects["values"]["Sch_Start"].ToString());
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["Sch_End"].ToString()))
                        {
                            PlanDetail.Sch_End = Convert.ToDateTime(objects["values"]["Sch_End"].ToString());
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio1"].ToString()))
                        {
                            PlanDetail.Ratio1 = Convert.ToDecimal(objects["values"]["Ratio1"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours1"].ToString()))
                        {
                            PlanDetail.ManHours1 = Convert.ToDecimal(objects["values"]["ManHours1"]);
                        }

                        PlanDetail.CheckersId = objects["values"]["Checker"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio2"].ToString()))
                        {
                            PlanDetail.Ratio2 = Convert.ToDecimal(objects["values"]["Ratio2"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours2"].ToString()))
                        {
                            PlanDetail.ManHours2 = Convert.ToDecimal(objects["values"]["ManHours2"]);
                        }

                        PlanDetail.ApproversId = objects["values"]["Approver"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio3"].ToString()))
                        {
                            PlanDetail.Ratio3 = Convert.ToDecimal(objects["values"]["Ratio3"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours3"].ToString()))
                        {
                            PlanDetail.ManHours3 = Convert.ToDecimal(objects["values"]["ManHours3"]);
                        }

                        PlanDetail.LeadersId = objects["values"]["Leader"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio4"].ToString()))
                        {
                            PlanDetail.Ratio4 = Convert.ToDecimal(objects["values"]["Ratio4"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours4"].ToString()))
                        {
                            PlanDetail.ManHours4 = Convert.ToDecimal(objects["values"]["ManHours4"]);
                        }

                        PlanDetail.Types = "1";
                        PlanDetaillist.Add(PlanDetail);

                        if (!string.IsNullOrEmpty(objects["values"]["Designer"].ToString()) || !string.IsNullOrEmpty(objects["values"]["Checker"].ToString())
                            || !string.IsNullOrEmpty(objects["values"]["Approver"].ToString()) || !string.IsNullOrEmpty(objects["values"]["Leader"].ToString()))
                        {
                            Model.Editor_PM EditorPM = new Model.Editor_PM();
                            EditorPM.PMId = Guid.NewGuid().ToString();
                            EditorPM.EProjectId = Request.Params["eProjectId"];
                            EditorPM.DisciplinesWBSCode = dataKeys[1].ToString();
                            EditorPM.DisciplinesWBSName = dataKeys[2].ToString();
                            EditorPM.WBS = dataKeys[3].ToString();
                            if (!string.IsNullOrEmpty(objects["values"]["Sch_Start"].ToString()))
                            {
                                EditorPM.SchStart = Convert.ToDateTime(objects["values"]["Sch_Start"].ToString());
                                EditorPM.RevisedStart = Convert.ToDateTime(objects["values"]["Sch_Start"].ToString());
                            }
                            if (!string.IsNullOrEmpty(objects["values"]["Sch_End"].ToString()))
                            {
                                EditorPM.SchEnd = Convert.ToDateTime(objects["values"]["Sch_End"].ToString());
                                EditorPM.RevisedEnd = Convert.ToDateTime(objects["values"]["Sch_End"].ToString());
                            }
                            PMList.Add(EditorPM);
                        }

                        // 总计划人工时
                        string Designer = objects["values"]["Designer"].ToString() + "@" + objects["values"]["Checker"].ToString() + "@" + objects["values"]["Approver"].ToString() + "@" + objects["values"]["Leader"].ToString();
                        string ManHours = objects["values"]["ManHours1"].ToString() + "@" + objects["values"]["ManHours2"].ToString() + "@" + objects["values"]["ManHours3"].ToString() + "@" + objects["values"]["ManHours4"].ToString();
                        string[] DesignerArr = Designer.Split('@');
                        string[] ManHoursArr = ManHours.Split('@');

                        Model.ManHours_Plan ManHoursPlan = null;
                        for (int l = 0; l < DesignerArr.Length; l++)
                        {
                            if (!string.IsNullOrEmpty(DesignerArr[l].ToString()))
                            {

                                ManHoursPlan = new Model.ManHours_Plan();
                                ManHoursPlan.ManHoursPlanId = Guid.NewGuid().ToString();
                                ManHoursPlan.ResourcePlanId = model.ResourcePlanId;
                                ManHoursPlan.EProjectId = Request.Params["eProjectId"];
                                ManHoursPlan.EngineerId = DesignerArr[l].ToString();

                                if (BLL.Sys_UserService.IsCTEAndCalculated(DesignerArr[l]))
                                {
                                    if (!string.IsNullOrEmpty(ManHoursArr[l].ToString()))
                                    {
                                        ManHoursPlan.ManHours = Convert.ToInt32(ManHoursArr[l].ToString());
                                    }
                                }
                                else
                                {
                                    ManHoursPlan.ManHours = 0;
                                }

                                //ManHoursPlan.Roles = objects["values"]["Roles"].ToString();
                                ManHoursPlan.DisciplineId = dataKeys[0].ToString();
                                ManHoursPlan.Discipline = dataKeys[2].ToString();
                                var wbs = BLL.DisciplinesWBSService.GetDisciplinesWBSById(dataKeys[0].ToString());
                                string roles = string.Empty;
                                if (l == 0)
                                {
                                    if (wbs.Designer == "D10" || wbs.Designer == "D20")
                                    {
                                        roles = wbs.Designer;
                                    }
                                    else
                                    {
                                        roles = wbs.Designer + "_Designer";
                                    }
                                }
                                if (l == 1)
                                {
                                    roles = wbs.Checker + "_Checker";
                                }
                                if (l == 2)
                                {
                                    roles = wbs.Approver + "_Approver";
                                }
                                if (l == 3)
                                {
                                    roles = wbs.Leader + "_Leader";
                                }
                                ManHoursPlan.Roles = roles;

                                //ManHoursPlan.Account = txtWO.Text;
                                if (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest")
                                {
                                    if (checkPhase.Items[0].Selected)
                                    {
                                        if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                        {
                                            //ManHoursPlan.Account = WorkorderOper + "-" + txtWO.Text;
                                            ManHoursPlan.Account = eProject.ProjectControl_NetworkNo + "-" + wbs.NetworkOper1;
                                        }
                                        else
                                        {
                                            ManHoursPlan.Account = wbs.NetworkOper1;
                                        }
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                        {
                                            ManHoursPlan.Account = eProject.ProjectControl_NetworkNo + "-" + NetworkOper;
                                        }
                                        else
                                        {
                                            ManHoursPlan.Account = NetworkOper;
                                        }
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(txtWO.Text))
                                    {
                                        ManHoursPlan.Account = txtWO.Text + "-" + WorkorderOper;
                                    }
                                    else
                                    {
                                        ManHoursPlan.Account = WorkorderOper;
                                    }
                                }
                                ManHoursPlan.IsClose = 0;
                                ManHoursPlan.AccountDisabled = 0;
                                ManHourList.Add(ManHoursPlan);
                            }
                        }
                    }
                }

                JArray ConstructionArr = Grid4.GetMergedData();
                if (ConstructionArr.Count > 0)
                {
                    Model.Resource_PlanDetail PlanDetail = null;
                    for (int c = 0; c < ConstructionArr.Count; c++)
                    {
                        JObject objects = (JObject)ConstructionArr[c];
                        PlanDetail = new Model.Resource_PlanDetail();
                        PlanDetail.ResourcePlanDetailId = Guid.NewGuid().ToString();
                        PlanDetail.ResourcePlanId = model.ResourcePlanId;
                        PlanDetail.EProjectId = Request.Params["eProjectId"];
                        object[] dataKeys = Grid4.DataKeys[c];
                        PlanDetail.ISort = c + 1;
                        PlanDetail.DisciplinesWBSId = dataKeys[0].ToString();
                        PlanDetail.DisciplinesWBSCode = dataKeys[1].ToString();
                        PlanDetail.DisciplinesWBSName = dataKeys[2].ToString();
                        PlanDetail.WBS = dataKeys[3].ToString();
                        string NetworkOper = objects["values"]["NetworkOper"].ToString();
                        string WorkorderOper = objects["values"]["WorkorderOper"].ToString();
                        PlanDetail.DesignersId = objects["values"]["Designer"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio1"].ToString()))
                        {
                            PlanDetail.Ratio1 = Convert.ToDecimal(objects["values"]["Ratio1"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours1"].ToString()))
                        {
                            PlanDetail.ManHours1 = Convert.ToDecimal(objects["values"]["ManHours1"]);
                        }
                        PlanDetail.CheckersId = objects["values"]["Checker"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio2"].ToString()))
                        {
                            PlanDetail.Ratio2 = Convert.ToDecimal(objects["values"]["Ratio2"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours2"].ToString()))
                        {
                            PlanDetail.ManHours2 = Convert.ToDecimal(objects["values"]["ManHours2"]);
                        }
                        PlanDetail.ApproversId = objects["values"]["Approver"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio3"].ToString()))
                        {
                            PlanDetail.Ratio3 = Convert.ToDecimal(objects["values"]["Ratio3"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours3"].ToString()))
                        {
                            PlanDetail.ManHours3 = Convert.ToDecimal(objects["values"]["ManHours3"]);
                        }
                        PlanDetail.Types = "2";
                        PlanDetaillist.Add(PlanDetail);
                        //反写ProjectControl中CM
                        if (PlanDetail.DisciplinesWBSName == "Construction Management")
                        {
                            if (!string.IsNullOrEmpty(PlanDetail.DesignersId))
                            {
                                EProjects.ProjectControl_ConstManagerId = PlanDetail.DesignersId;
                                EProjects.ProjectControl_ConstManager = BLL.Sys_UserService.GetUserNameByUserId(PlanDetail.DesignersId);
                            }
                        }

                        string Designer = objects["values"]["Designer"].ToString() + "@" + objects["values"]["Checker"].ToString() + "@" + objects["values"]["Approver"].ToString();
                        string ManHours = objects["values"]["ManHours1"].ToString() + "@" + objects["values"]["ManHours2"].ToString() + "@" + objects["values"]["ManHours3"].ToString();
                        string[] DesignerArr = Designer.Split('@');
                        string[] ManHoursArr = ManHours.Split('@');
                        Model.ManHours_Plan ManHoursPlan = null;
                        for (int l = 0; l < DesignerArr.Length; l++)
                        {
                            if (!string.IsNullOrEmpty(DesignerArr[l].ToString()))
                            {

                                ManHoursPlan = new Model.ManHours_Plan();
                                ManHoursPlan.ManHoursPlanId = Guid.NewGuid().ToString();
                                ManHoursPlan.ResourcePlanId = model.ResourcePlanId;
                                ManHoursPlan.EProjectId = Request.Params["eProjectId"];
                                ManHoursPlan.Roles = objects["values"]["Roles"].ToString();
                                ManHoursPlan.EngineerId = DesignerArr[l].ToString();
                                if (BLL.Sys_UserService.IsCTEAndCalculated(DesignerArr[l]))
                                {
                                    if (!string.IsNullOrEmpty(ManHoursArr[l].ToString()))
                                    {
                                        ManHoursPlan.ManHours = Convert.ToInt32(ManHoursArr[l].ToString());
                                    }
                                }
                                else
                                {
                                    ManHoursPlan.ManHours = 0;
                                }
                                ManHoursPlan.DisciplineId = dataKeys[0].ToString();
                                ManHoursPlan.Discipline = dataKeys[2].ToString();
                                var wbs = BLL.DisciplinesWBSService.GetDisciplinesWBSById(dataKeys[0].ToString());

                                // ManHoursPlan.Account = txtWO.Text;
                                if (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest")
                                {
                                    if (checkPhase.Items[0].Selected)
                                    {
                                        if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                        {
                                            //ManHoursPlan.Account = WorkorderOper + "-" + txtWO.Text;
                                            ManHoursPlan.Account = eProject.ProjectControl_NetworkNo + "-" + wbs.NetworkOper1;
                                        }
                                        else
                                        {
                                            ManHoursPlan.Account = wbs.NetworkOper1;
                                        }
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                        {
                                            ManHoursPlan.Account = eProject.ProjectControl_NetworkNo + "-" + NetworkOper;
                                        }
                                        else
                                        {
                                            ManHoursPlan.Account = NetworkOper;
                                        }
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(txtWO.Text))
                                    {
                                        ManHoursPlan.Account = txtWO.Text + "-" + WorkorderOper;
                                    }
                                    else
                                    {
                                        ManHoursPlan.Account = WorkorderOper;
                                    }
                                }

                                ManHoursPlan.IsClose = 0;
                                ManHoursPlan.AccountDisabled = 0;
                                ManHourList.Add(ManHoursPlan);
                            }
                        }
                    }
                }

                JArray QualityArr = Grid5.GetMergedData();
                if (QualityArr.Count > 0)
                {
                    Model.Resource_PlanDetail PlanDetail = null;
                    for (int q = 0; q < QualityArr.Count; q++)
                    {
                        JObject objects = (JObject)QualityArr[q];
                        PlanDetail = new Model.Resource_PlanDetail();
                        PlanDetail.ResourcePlanDetailId = Guid.NewGuid().ToString();
                        PlanDetail.ResourcePlanId = model.ResourcePlanId;
                        PlanDetail.EProjectId = Request.Params["eProjectId"];
                        object[] dataKeys = Grid5.DataKeys[q];
                        PlanDetail.DisciplinesWBSId = dataKeys[0].ToString();
                        PlanDetail.DisciplinesWBSCode = dataKeys[1].ToString();
                        PlanDetail.DisciplinesWBSName = dataKeys[2].ToString();
                        PlanDetail.WBS = dataKeys[3].ToString();
                        PlanDetail.ISort = q + 1;
                        string NetworkOper = objects["values"]["NetworkOper"].ToString();
                        string WorkorderOper = objects["values"]["WorkorderOper"].ToString();
                        PlanDetail.DesignersId = objects["values"]["Designer"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio1"].ToString()))
                        {
                            PlanDetail.Ratio1 = Convert.ToDecimal(objects["values"]["Ratio1"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours1"].ToString()))
                        {
                            PlanDetail.ManHours1 = Convert.ToDecimal(objects["values"]["ManHours1"]);
                        }
                        PlanDetail.CheckersId = objects["values"]["Checker"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio2"].ToString()))
                        {
                            PlanDetail.Ratio2 = Convert.ToDecimal(objects["values"]["Ratio2"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours2"].ToString()))
                        {
                            PlanDetail.ManHours2 = Convert.ToDecimal(objects["values"]["ManHours2"]);
                        }
                        PlanDetail.ApproversId = objects["values"]["Approver"].ToString();
                        if (!string.IsNullOrEmpty(objects["values"]["Ratio3"].ToString()))
                        {
                            PlanDetail.Ratio3 = Convert.ToDecimal(objects["values"]["Ratio3"]);
                        }
                        if (!string.IsNullOrEmpty(objects["values"]["ManHours3"].ToString()))
                        {
                            PlanDetail.ManHours3 = Convert.ToDecimal(objects["values"]["ManHours3"]);
                        }
                        PlanDetail.Types = "3";
                        PlanDetaillist.Add(PlanDetail);

                        string Designer = objects["values"]["Designer"].ToString() + "@" + objects["values"]["Checker"].ToString() + "@" + objects["values"]["Approver"].ToString();
                        string ManHours = objects["values"]["ManHours1"].ToString() + "@" + objects["values"]["ManHours2"].ToString() + "@" + objects["values"]["ManHours3"].ToString();
                        string[] DesignerArr = Designer.Split('@');
                        string[] ManHoursArr = ManHours.Split('@');
                        Model.ManHours_Plan ManHoursPlan = null;
                        for (int l = 0; l < DesignerArr.Length; l++)
                        {
                            if (!string.IsNullOrEmpty(DesignerArr[l].ToString()))
                            {

                                ManHoursPlan = new Model.ManHours_Plan();
                                ManHoursPlan.ManHoursPlanId = Guid.NewGuid().ToString();
                                ManHoursPlan.ResourcePlanId = model.ResourcePlanId;
                                ManHoursPlan.EProjectId = Request.Params["eProjectId"];
                                ManHoursPlan.Roles = objects["values"]["Roles"].ToString();
                                ManHoursPlan.EngineerId = DesignerArr[l].ToString();
                                if (BLL.Sys_UserService.IsCTEAndCalculated(DesignerArr[l]))
                                {
                                    if (!string.IsNullOrEmpty(ManHoursArr[l].ToString()))
                                    {
                                        ManHoursPlan.ManHours = Convert.ToInt32(ManHoursArr[l].ToString());
                                    }
                                }
                                else
                                {
                                    ManHoursPlan.ManHours = 0;
                                }
                                ManHoursPlan.DisciplineId = dataKeys[0].ToString();
                                ManHoursPlan.Discipline = dataKeys[2].ToString();
                                var wbs = BLL.DisciplinesWBSService.GetDisciplinesWBSById(dataKeys[0].ToString());

                                // ManHoursPlan.Account = txtWO.Text;
                                if (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest")
                                {
                                    if (checkPhase.Items[0].Selected)
                                    {
                                        if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                        {
                                            //ManHoursPlan.Account = WorkorderOper + "-" + txtWO.Text;
                                            ManHoursPlan.Account = eProject.ProjectControl_NetworkNo + "-" + wbs.NetworkOper1;
                                        }
                                        else
                                        {
                                            ManHoursPlan.Account = wbs.NetworkOper1;
                                        }
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(eProject.ProjectControl_NetworkNo))
                                        {
                                            ManHoursPlan.Account = eProject.ProjectControl_NetworkNo + "-" + NetworkOper;
                                        }
                                        else
                                        {
                                            ManHoursPlan.Account = NetworkOper;
                                        }
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(txtWO.Text))
                                    {
                                        ManHoursPlan.Account = txtWO.Text + "-" + WorkorderOper;
                                    }
                                    else
                                    {
                                        ManHoursPlan.Account = WorkorderOper;
                                    }
                                }

                                ManHoursPlan.IsClose = 0;
                                ManHoursPlan.AccountDisabled = 0;
                                ManHourList.Add(ManHoursPlan);
                            }
                        }
                    }
                }

                bool result = BLL.ResourcePlanService.AddTran(model, EProjects, PlanDetaillist, PMList, ManHourList);
                if (result)
                {
                    // 回写编辑器CTE Involved
                    string cteInvolved = "N";
                    Model.Editor_EProject eproject = Funs.DB.Editor_EProject.FirstOrDefault(x => x.EProjectId == eProjectId);

                    if (eproject.ProjectControl_LeadByName != null && !eproject.ProjectControl_LeadByName.Contains("CTE")) // && !eproject.ProjectControl_LeadByName.Contains("CTE/D"))
                    {
                        var plan = from x in Funs.DB.ManHours_Plan where x.EProjectId == eProjectId select x;
                        foreach (var p in plan)
                        {
                            if (!string.IsNullOrEmpty(p.EngineerId))
                            {
                                var user = from x in Funs.DB.Sys_User
                                           join y in Funs.DB.Base_Depart on x.DepartId equals y.DepartId
                                           where x.UserId == p.EngineerId
                                                && y.DepartName.Contains("CTE")
                                           select x;
                                if (user.Count() > 0)
                                {
                                    cteInvolved = "Y";
                                    break;
                                }
                            }
                        }
                    }

                    eproject.CTEInvolved = cteInvolved;
                    Funs.DB.SubmitChanges();

                    ShowNotify("Save Successfully!", MessageBoxIcon.Success);
                    PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                }
                else
                {
                    Alert.ShowInParent("Save failed!");
                    return;
                }
            }
            catch (Exception ex)
            {
                Alert.ShowInParent(ex.ToString());
                return;
            }
        }

        #region 权限设置
        /// <summary>
        /// 菜单按钮权限
        /// </summary>
        //private void GetButtonPower()
        //{
        //    var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.ResourcePlanMenuId);
        //    if (buttonList.Count() > 0)
        //    {
        //        if (buttonList.Contains(BLL.Const.BtnSave))
        //        {
        //            this.btnSave.Hidden = false;
        //        }
        //    }
        //    else
        //    {
        //        var user = BLL.Sys_UserService.GetUsersByUserId(this.CurrUser.UserId);
        //        if (user != null && user.DepartId == Const.CTEM_DepartId)
        //        {
        //            this.btnSave.Hidden = false;
        //        }
        //    }
        //}
        #endregion



        protected void cbNotApplicable1_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (cbNotApplicable1.Checked)
            {
                txtSchStart1.Enabled = false;
                txtSchStart1.Text = "";
            }
            else
            {
                txtSchStart1.Enabled = true;


            }
        }

        protected void cbCDI_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (cbCDI.Checked)
            {
                drpCDI.Enabled = true;
                BLL.ConstService.InitConstValueDropDownList(this.drpCDI, BLL.Const.PM_CDI, false);
            }
            else
            {
                drpCDI.Items.Clear();
                drpCDI.Enabled = false;
            }
        }


        protected void txtSchStart1_TextChanged(object sender, EventArgs e)
        {
            DateTime time = DateTime.Now;
            if (txtSchStart1.SelectedDate.HasValue)
            {
                //DateTime dt = Convert.ToDateTime(txtSchStart1.Text);
                //if (dt > time) {
                //    Alert.ShowInParent("Cannot be greater than the current date!");
                //    txtSchStart1.Text = "";
                //    return;
                //}
                cbNotApplicable1.Readonly = true;
            }
            else
            {
                cbNotApplicable1.Readonly = false;
            }
        }


        protected void cbNotApplicable2_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (cbNotApplicable2.Checked)
            {
                txtSchStart2.Enabled = false;
                txtSchEnd2.Enabled = false;
                txtSchStart2.Text = "";
                txtSchEnd2.Text = "";
            }
            else
            {

                txtSchStart2.Enabled = true;
                txtSchEnd2.Enabled = true;
            }
        }

        protected void txtSchStart2_TextChanged(object sender, EventArgs e)
        {
            if (txtSchStart2.SelectedDate.HasValue || txtSchEnd2.SelectedDate.HasValue)
            {
                cbNotApplicable2.Readonly = true;
            }
            else
            {
                cbNotApplicable2.Readonly = false;
            }
        }


        protected void txtSchEnd2_TextChanged(object sender, EventArgs e)
        {
            if (txtSchStart2.SelectedDate.HasValue || txtSchEnd2.SelectedDate.HasValue)
            {
                cbNotApplicable2.Readonly = true;
            }
            else
            {
                cbNotApplicable2.Readonly = false;
            }
        }

        protected void CheckBox1_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (CheckBox1.Checked)
            {
                DatePicker1.Enabled = false;
                DatePicker2.Enabled = false;
                DatePicker1.Text = "";
                DatePicker2.Text = "";
            }
            else
            {

                DatePicker1.Enabled = true;
                DatePicker2.Enabled = true;
            }
        }

        protected void DatePicker1_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker1.SelectedDate.HasValue || DatePicker2.SelectedDate.HasValue)
            {
                CheckBox1.Readonly = true;
            }
            else
            {
                CheckBox1.Readonly = false;
            }
        }


        protected void DatePicker2_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker1.SelectedDate.HasValue || DatePicker2.SelectedDate.HasValue)
            {
                CheckBox1.Readonly = true;
            }
            else
            {
                CheckBox1.Readonly = false;
            }
        }

        protected void CheckBox2_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (CheckBox2.Checked)
            {
                DatePicker3.Enabled = false;
                DatePicker4.Enabled = false;
                DatePicker3.Text = "";
                DatePicker4.Text = "";
            }
            else
            {

                DatePicker3.Enabled = true;
                DatePicker4.Enabled = true;
            }
        }

        protected void DatePicker3_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker3.SelectedDate.HasValue || DatePicker4.SelectedDate.HasValue)
            {
                CheckBox2.Readonly = true;
            }
            else
            {
                CheckBox2.Readonly = false;
            }
        }


        protected void DatePicker4_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker3.SelectedDate.HasValue || DatePicker4.SelectedDate.HasValue)
            {
                CheckBox2.Readonly = true;
            }
            else
            {
                CheckBox2.Readonly = false;
            }
        }

        protected void CheckBox3_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (CheckBox3.Checked)
            {
                DatePicker5.Enabled = false;
                DatePicker6.Enabled = false;
                DatePicker5.Text = "";
                DatePicker6.Text = "";
            }
            else
            {

                DatePicker5.Enabled = true;
                DatePicker6.Enabled = true;
            }
        }

        protected void DatePicker5_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker5.SelectedDate.HasValue || DatePicker6.SelectedDate.HasValue)
            {
                CheckBox3.Readonly = true;
            }
            else
            {
                CheckBox3.Readonly = false;
            }
        }


        protected void DatePicker6_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker5.SelectedDate.HasValue || DatePicker6.SelectedDate.HasValue)
            {
                CheckBox3.Readonly = true;
            }
            else
            {
                CheckBox3.Readonly = false;
            }
        }

        protected void CheckBox4_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (CheckBox4.Checked)
            {
                DatePicker7.Enabled = false;
                DatePicker8.Enabled = false;
                DatePicker7.Text = "";
                DatePicker8.Text = "";
            }
            else
            {

                DatePicker7.Enabled = true;
                DatePicker8.Enabled = true;
            }
        }

        protected void DatePicker7_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker7.SelectedDate.HasValue || DatePicker8.SelectedDate.HasValue)
            {
                CheckBox4.Readonly = true;
            }
            else
            {
                CheckBox4.Readonly = false;
            }
        }

        protected void DatePicker8_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker7.SelectedDate.HasValue || DatePicker8.SelectedDate.HasValue)
            {
                CheckBox4.Readonly = true;
            }
            else
            {
                CheckBox4.Readonly = false;
            }
        }

        protected void CheckBox5_CheckedChanged(object sender, CheckedEventArgs e)
        {
            if (CheckBox5.Checked)
            {
                DatePicker9.Enabled = false;
                DatePicker9.Text = "";

            }
            else
            {

                DatePicker9.Enabled = true;

            }
        }

        protected void DatePicker9_TextChanged(object sender, EventArgs e)
        {
            if (DatePicker9.SelectedDate.HasValue)
            {
                CheckBox5.Readonly = true;
            }
            else
            {
                CheckBox5.Readonly = false;
            }
        }




    }

}