using BLL;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
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 ResourcePlanEdit : 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 resourcePlanId = Request.Params["ResourcePlanId"];
                if (!string.IsNullOrEmpty(resourcePlanId))
                {
                    var rp = BLL.ResourcePlanService.GetModelsResourcePlans(resourcePlanId);
                    var eProject = BLL.EProjectService.GeteProjectById(rp.EProjectId);
                    if (eProject != null)
                    {
                        this.txtJobNo.Text = eProject.ProjectControl_JobNo;
                        this.txtJobTitle.Text = eProject.ProjectControl_JobTitle;
                        this.txtMOCNo.Text = eProject.ProjectControl_MOCFormNo;

                        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 wbs = BLL.DisciplinesWBSService.GetDisciplinesWBSListByType("4"); //"4"表示项目经理
                        if (wbs != null)
                        {
                            Model.ManHours_Plan p = BLL.PlanService.GetPlanByIds(resourcePlanId, wbs.FirstOrDefault().DisciplinesWBSId);
                            if (p != null)
                            {
                                this.DropDownList7.SelectedValue = p.EngineerId;
                                this.NumberBox15.Text = p.ManHours.ToString();
                            }
                            else if (!string.IsNullOrEmpty(eProject.ProjectControl_ProjectManagerId))
                            {
                                this.DropDownList7.SelectedValue = eProject.ProjectControl_ProjectManagerId;
                            }
                        }
                        if (!string.IsNullOrEmpty(rp.Phase))
                        {
                            checkPhase.SelectedValueArray = rp.Phase.Split(',');
                        }
                        //绑定
                        BindGrid();                      
                    }

                    //foreach (CheckItem item in checkPhase.Items)
                    //{
                    //    if (!string.IsNullOrEmpty(rp.Phase))
                    //    {
                    //        if (rp.Phase.Equals(item.Value))
                    //            item.Selected = true;
                    //    }
                    //}

                    if (rp.Design == "CTE")
                    {
                        cbDesign1.Checked = true;
                    }
                    if (rp.Design == "CTA")
                    {
                        cbDesign2.Checked = true;
                    }
                    if (rp.Design == "CTM")
                    {
                        cbDesign3.Checked = true;
                    }
                    if (rp.Procurement == "CTE")
                    {
                        cbProcurement1.Checked = true;
                    }
                    if (rp.Procurement == "CTA")
                    {
                        cbProcurement2.Checked = true;
                    }
                    if (rp.Procurement == "CTM")
                    {
                        cbProcurement3.Checked = true;
                    }
                    if (rp.Construction == "CTE")
                    {
                        cbConstruction1.Checked = true;
                    }
                    if (rp.Construction == "CTA")
                    {
                        cbConstruction2.Checked = true;
                    }
                    if (rp.Construction == "CTM")
                    {
                        cbConstruction3.Checked = true;
                    }
                }
            }
        }

        private void BindGrid()
        {
            string strSql = @"SELECT DisciplinesWBSId,DisciplinesWBSCode,DisciplinesWBSName,WBS,DepartId,DepartName,
                                     NetworkOper,NetworkOper1,WorkorderOper,Designer,Checker,Approver,Leader,Roles,Remark,
                                     Type,'' as UserName,'' as UserId
                              FROM Base_DisciplinesWBS ";
            DataTable table = SQLHelper.GetDataTableRunText(strSql, null);

            string resourcePlanId = Request.Params["ResourcePlanId"];
            Model.Resource_Plan newPlan = BLL.ResourcePlanService.GetModelsResourcePlan(resourcePlanId);
            if (newPlan != null)
            {
                string Arrays = "";
                this.txtWO.Text = newPlan.WO;
                txtSchStart1.Text = newPlan.ProjectApproval_Sch_Start.ToString();
                if (newPlan.ProjectApproval_Sch_NotApplicable==true) {
                    cbNotApplicable1.Checked = true;
                }
                txtSchStart2.Text = newPlan.Detail_Eng_Civil_Sch_Start.ToString();
                txtSchEnd2.Text = newPlan.Detail_Eng_Civil_Sch_End.ToString();
                if (newPlan.Detail_Eng_Civil_Sch_NotApplicable == true) {
                    cbNotApplicable2.Checked = true;
                }
                DatePicker1.Text = newPlan.Detail_Eng_Mech_EI_Sch_Start.ToString();
                DatePicker2.Text = newPlan.Detail_Eng_Mech_EI_Sch_End.ToString();
                if (newPlan.Detail_Eng_Mech_EI_Sch_NotApplicable == true) {
                    CheckBox1.Checked = true;
                }
                DatePicker3.Text = newPlan.LLE_Procurement_Sch_Start.ToString();
                DatePicker4.Text = newPlan.LLE_Procurement_Sch_End.ToString();
                if (newPlan.LLE_Procurement_Sch_NotApplicable == true)
                {
                    CheckBox2.Checked = true;
                }
                DatePicker5.Text = newPlan.Const_Civil_Sch_Start.ToString();
                DatePicker6.Text = newPlan.Const_Civil_Sch_End.ToString();
                if (newPlan.Const_Civil_Sch_NotApplicable == true)
                {
                    CheckBox3.Checked = true;
                }

                DatePicker7.Text = newPlan.Const_Mech_EI_Start.ToString();
                DatePicker8.Text = newPlan.Const_Mech_EI_End.ToString();
                if (newPlan.Const_Mech_EI_NotApplicable == true)
                {
                    CheckBox4.Checked = true;
                }
                DatePicker9.Text = newPlan.MC_Sch_Start.ToString();
                //DatePicker10.Text = newPlan.MC_Sch_End.ToString();
                if (newPlan.MC_Sch_NotApplicable == true)
                {
                    CheckBox5.Checked = true;
                }

                var eproj = BLL.EProjectService.GeteProjectById(Request.Params["eProjectId"]);
                if (eproj != null)
                {
                    if (eproj.PM_MA_ProjectApproval.HasValue)
                    {
                        if (!string.IsNullOrEmpty(txtSchStart1.Text))
                        {
                            txtSchStart1.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(txtSchStart2.Text))
                        {
                            txtSchStart2.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(txtSchEnd2.Text))
                        {
                            txtSchEnd2.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker1.Text))
                        {
                            DatePicker1.Enabled = false;
                        }

                        if (!string.IsNullOrEmpty(DatePicker2.Text))
                        {
                            DatePicker2.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker3.Text))
                        {
                            DatePicker3.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker4.Text))
                        {
                            DatePicker4.Enabled = false;
                        }

                        if (!string.IsNullOrEmpty(DatePicker5.Text))
                        {
                            DatePicker5.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker6.Text))
                        {
                            DatePicker6.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker7.Text))
                        {
                            DatePicker7.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker8.Text))
                        {
                            DatePicker8.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker9.Text))
                        {
                            DatePicker9.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DropDownList7.SelectedValue))
                        {
                            DropDownList7.Enabled = false;
                        }
                        if (!string.IsNullOrEmpty(DatePicker9.Text))
                        {
                            NumberBox15.Enabled = false;
                        }
                    }
                    var rp = BLL.ResourcePlanService.GetResourcePlanByEProjectId(eproj.EProjectId);
                    if (rp.Count() >0)
                    {
                        if (checkPhase.Items[0].Selected)
                        {
                            txtWO.Label = "W/O"; 
                        }
                        else
                        {
                            txtWO.Label = "NetWork";
                            txtWO.Enabled = false;
                        }
                           
                       
                    }

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

                DataTable dt = BLL.ResourcePlanService.GetDataTable(newPlan.ResourcePlanId, newPlan.EProjectId);
                DataRow[] Getdr1 = dt.Select("Types='1'", "iSort asc");
                DataRow[] dr1 = table.Select("Type='1'", "DisciplinesWBSCode asc");
                List<NewBaseDisciplinesWBS> Newlist = new List<NewBaseDisciplinesWBS>();
                NewBaseDisciplinesWBS NewModel = null;
                for (int i = 0; i < dr1.Length; i++)
                {
                    NewModel = new NewBaseDisciplinesWBS();
                    string Designer = "";
                    string Ratio1 = "";
                    string ManHours1 = "";
                    string Checker = "";
                    string Ratio2 = "";
                    string ManHours2 = "";
                    string Approver = "";
                    string Ratio3 = "";
                    string ManHours3 = "";
                    string Leader = "";
                    string Ratio4 = "";
                    string ManHours4 = "";
                    decimal TotalManHours = 0;
                    string Sch_Start = "";
                    string Sch_End = "";
                    for (int d = 0; d < Getdr1.Length; d++)
                    {
                        if (dr1[i]["DisciplinesWBSId"].ToString() == Getdr1[d]["DisciplinesWBSId"].ToString())
                        {
                            Sch_Start = Getdr1[d]["Sch_Start"].ToString();
                            Sch_End = Getdr1[d]["Sch_End"].ToString();
                            Designer = Getdr1[d]["DesignersId"].ToString();
                            Ratio1 = Getdr1[d]["Ratio1"].ToString();
                            ManHours1 = Getdr1[d]["ManHours1"].ToString();
                            Checker = Getdr1[d]["CheckersId"].ToString();
                            Ratio2 = Getdr1[d]["Ratio2"].ToString();
                            ManHours2 = Getdr1[d]["ManHours2"].ToString();
                            Approver = Getdr1[d]["ApproversId"].ToString();
                            Ratio3 = Getdr1[d]["Ratio3"].ToString();
                            ManHours3 = Getdr1[d]["ManHours3"].ToString();
                            Leader = Getdr1[d]["LeadersId"].ToString();
                            Ratio4 = Getdr1[d]["Ratio4"].ToString();
                            ManHours4 = Getdr1[d]["ManHours4"].ToString();
                            if (string.IsNullOrEmpty(ManHours1))
                            {
                                ManHours1 = "0";
                            }
                            if (string.IsNullOrEmpty(ManHours2))
                            {
                                ManHours2 = "0";
                            }
                            if (string.IsNullOrEmpty(ManHours3))
                            {
                                ManHours3 = "0";
                            }
                            if (string.IsNullOrEmpty(ManHours4))
                            {
                                ManHours4 = "0";
                            }
                            TotalManHours = Convert.ToDecimal(ManHours1) + Convert.ToDecimal(ManHours2) + Convert.ToDecimal(ManHours3) + Convert.ToDecimal(ManHours4);
                            Arrays += Getdr1[d]["ISort"].ToString() + ",";
                        }
                    }
                    NewModel.DisciplinesWBSId = dr1[i]["DisciplinesWBSId"].ToString();
                    NewModel.DisciplinesWBSCode = dr1[i]["DisciplinesWBSCode"].ToString();
                    NewModel.DisciplinesWBSName = dr1[i]["DisciplinesWBSName"].ToString();
                    NewModel.WBS = dr1[i]["WBS"].ToString();
                    NewModel.DepartId = dr1[i]["DepartId"].ToString();
                    NewModel.DepartName = dr1[i]["DepartName"].ToString();
                    NewModel.NetworkOper = dr1[i]["NetworkOper"].ToString();
                    NewModel.WorkorderOper = dr1[i]["WorkorderOper"].ToString();
                    NewModel.Roles = dr1[i]["Roles"].ToString();
                    NewModel.Sch_Start = Sch_Start;
                    NewModel.Sch_End = Sch_End;
                    NewModel.Designer = Designer;
                    NewModel.Ratio1 = Ratio1;
                    NewModel.ManHours1 = ManHours1;
                    NewModel.Checker = Checker;
                    NewModel.Ratio2 = Ratio2;
                    NewModel.ManHours2 = ManHours2;
                    NewModel.Approver = Approver;
                    NewModel.Ratio3 = Ratio3;
                    NewModel.ManHours3 = ManHours3;
                    NewModel.Leader = Leader;
                    NewModel.Ratio4 = Ratio4;
                    NewModel.ManHours4 = ManHours4;
                    if (TotalManHours == 0)
                    {
                        NewModel.TotalManHours = "";
                    }
                    else
                    {
                        NewModel.TotalManHours = Convert.ToString(TotalManHours);

                    }
                    Newlist.Add(NewModel);
                }
                Grid3.DataSource = Newlist;
                Grid3.DataBind();

                DataRow[] Getdr2 = dt.Select("Types='2'", "iSort asc");
                DataRow[] dr2 = table.Select("Type='2'", "DisciplinesWBSCode asc");
                if (Getdr2.Length > 0)
                {
                    DataTable dtGrid4 = new DataTable();
                    DataColumn DisciplinesWBSId = new DataColumn("DisciplinesWBSId", Type.GetType("System.String"));
                    DataColumn DisciplinesWBSCode = new DataColumn("DisciplinesWBSCode", Type.GetType("System.String"));
                    DataColumn DisciplinesWBSName = new DataColumn("DisciplinesWBSName", Type.GetType("System.String"));
                    DataColumn NetworkOper = new DataColumn("NetworkOper", Type.GetType("System.String"));
                    DataColumn WorkorderOper = new DataColumn("WorkorderOper", Type.GetType("System.String"));
                    DataColumn Roles = new DataColumn("Roles", Type.GetType("System.String"));
                    DataColumn WBS = new DataColumn("WBS", Type.GetType("System.String"));
                    DataColumn DepartId = new DataColumn("DepartId", Type.GetType("System.String"));
                    DataColumn DepartName = new DataColumn("DepartName", Type.GetType("System.String"));
                    DataColumn Designer = new DataColumn("Designer", Type.GetType("System.String"));
                    DataColumn Ratio1 = new DataColumn("Ratio1", Type.GetType("System.String"));
                    DataColumn ManHours1 = new DataColumn("ManHours1", Type.GetType("System.String"));
                    DataColumn Checker = new DataColumn("Checker", Type.GetType("System.String"));
                    DataColumn Ratio2 = new DataColumn("Ratio2", Type.GetType("System.String"));
                    DataColumn ManHours2 = new DataColumn("ManHours2", Type.GetType("System.String"));
                    DataColumn Approver = new DataColumn("Approver", Type.GetType("System.String"));
                    DataColumn Ratio3 = new DataColumn("Ratio3", Type.GetType("System.String"));
                    DataColumn ManHours3 = new DataColumn("ManHours3", Type.GetType("System.String"));
                    DataColumn TotalManHours = new DataColumn("TotalManHours", Type.GetType("System.String"));
                    dtGrid4.Columns.Add(DisciplinesWBSId);
                    dtGrid4.Columns.Add(DisciplinesWBSCode);
                    dtGrid4.Columns.Add(DisciplinesWBSName);
                    dtGrid4.Columns.Add(WBS);
                    dtGrid4.Columns.Add(NetworkOper);
                    dtGrid4.Columns.Add(WorkorderOper);
                    dtGrid4.Columns.Add(Roles);
                    dtGrid4.Columns.Add(DepartId);
                    dtGrid4.Columns.Add(DepartName);
                    dtGrid4.Columns.Add(Designer);
                    dtGrid4.Columns.Add(Ratio1);
                    dtGrid4.Columns.Add(ManHours1);
                    dtGrid4.Columns.Add(Checker);
                    dtGrid4.Columns.Add(Ratio2);
                    dtGrid4.Columns.Add(ManHours2);
                    dtGrid4.Columns.Add(Approver);
                    dtGrid4.Columns.Add(Ratio3);
                    dtGrid4.Columns.Add(ManHours3);
                    dtGrid4.Columns.Add(TotalManHours);
                    for (int i = 0; i < Getdr2.Length; i++)
                    {
                        decimal TotalManHourss = 0;
                        String mh1 = "0";
                        String mh2 = "0";
                        String mh3 = "0";
                        DataRow row = dtGrid4.NewRow();
                        row["DisciplinesWBSId"] = Getdr2[i]["DisciplinesWBSId"].ToString();
                        row["DisciplinesWBSCode"] = Getdr2[i]["DisciplinesWBSCode"].ToString();
                        row["DisciplinesWBSName"] = Getdr2[i]["DisciplinesWBSName"].ToString();
                        row["WBS"] = Getdr2[i]["WBS"].ToString();
                        row["NetworkOper"] = Getdr2[i]["NetworkOper"].ToString();
                        row["WorkorderOper"] = Getdr2[i]["WorkorderOper"].ToString();
                        row["Roles"] = dr2[i]["Roles"].ToString();
                        row["Designer"] = Getdr2[i]["DesignersId"].ToString();
                        row["Ratio1"] = Getdr2[i]["Ratio1"].ToString();
                        mh1 = Getdr2[i]["ManHours1"].ToString();
                        row["ManHours1"] = mh1;
                        row["Checker"] = Getdr2[i]["CheckersId"].ToString();
                        row["Ratio2"] = Getdr2[i]["Ratio2"].ToString();
                        mh2 = Getdr2[i]["ManHours2"].ToString();
                        row["ManHours2"] = mh2;
                        row["Approver"] = Getdr2[i]["ApproversId"].ToString();
                        row["Ratio3"] = Getdr2[i]["Ratio3"].ToString();
                        mh3 = Getdr2[i]["ManHours3"].ToString();
                        row["ManHours3"] = mh3;
                        if (string.IsNullOrEmpty(Getdr2[i]["ManHours1"].ToString()))
                        {
                            mh1 = "0";
                        }
                        if (string.IsNullOrEmpty(Getdr2[i]["ManHours2"].ToString()))
                        {
                            mh2 = "0";
                        }
                        if (string.IsNullOrEmpty(Getdr2[i]["ManHours3"].ToString()))
                        {
                            mh3 = "0";
                        }
                        TotalManHourss = Convert.ToDecimal(mh1) + Convert.ToDecimal(mh2) + Convert.ToDecimal(mh3);
                        if (TotalManHourss == 0)
                        {
                            row["TotalManHours"] = "";
                        }
                        else
                        {
                            row["TotalManHours"] = Convert.ToString(TotalManHourss);
                        }
                        dtGrid4.Rows.Add(row);
                    }
                    Grid4.DataSource = dtGrid4;
                    Grid4.DataBind();
                }

                DataRow[] Getdr3 = dt.Select("Types='3'", "iSort asc");
                DataRow[] dr3 = table.Select("Type='3'", "DisciplinesWBSCode asc");
                if (Getdr3.Length > 0)
                {
                    DataTable dtGrid5 = new DataTable();
                    DataColumn DisciplinesWBSId = new DataColumn("DisciplinesWBSId", Type.GetType("System.String"));
                    DataColumn DisciplinesWBSCode = new DataColumn("DisciplinesWBSCode", Type.GetType("System.String"));
                    DataColumn DisciplinesWBSName = new DataColumn("DisciplinesWBSName", Type.GetType("System.String"));
                    DataColumn WBS = new DataColumn("WBS", Type.GetType("System.String"));
                    DataColumn NetworkOper = new DataColumn("NetworkOper", Type.GetType("System.String"));
                    DataColumn WorkorderOper = new DataColumn("WorkorderOper", Type.GetType("System.String"));
                    DataColumn Roles = new DataColumn("Roles", Type.GetType("System.String"));
                    DataColumn DepartId = new DataColumn("DepartId", Type.GetType("System.String"));
                    DataColumn DepartName = new DataColumn("DepartName", Type.GetType("System.String"));
                    DataColumn Designer = new DataColumn("Designer", Type.GetType("System.String"));
                    DataColumn Ratio1 = new DataColumn("Ratio1", Type.GetType("System.String"));
                    DataColumn ManHours1 = new DataColumn("ManHours1", Type.GetType("System.String"));
                    DataColumn Checker = new DataColumn("Checker", Type.GetType("System.String"));
                    DataColumn Ratio2 = new DataColumn("Ratio2", Type.GetType("System.String"));
                    DataColumn ManHours2 = new DataColumn("ManHours2", Type.GetType("System.String"));
                    DataColumn Approver = new DataColumn("Approver", Type.GetType("System.String"));
                    DataColumn Ratio3 = new DataColumn("Ratio3", Type.GetType("System.String"));
                    DataColumn ManHours3 = new DataColumn("ManHours3", Type.GetType("System.String"));
                    DataColumn TotalManHours = new DataColumn("TotalManHours", Type.GetType("System.String"));
                    dtGrid5.Columns.Add(DisciplinesWBSId);
                    dtGrid5.Columns.Add(DisciplinesWBSCode);
                    dtGrid5.Columns.Add(DisciplinesWBSName);
                    dtGrid5.Columns.Add(WBS);
                    dtGrid5.Columns.Add(NetworkOper);
                    dtGrid5.Columns.Add(WorkorderOper);
                    dtGrid5.Columns.Add(Roles);
                    dtGrid5.Columns.Add(DepartId);
                    dtGrid5.Columns.Add(DepartName);
                    dtGrid5.Columns.Add(Designer);
                    dtGrid5.Columns.Add(Ratio1);
                    dtGrid5.Columns.Add(ManHours1);
                    dtGrid5.Columns.Add(Checker);
                    dtGrid5.Columns.Add(Ratio2);
                    dtGrid5.Columns.Add(ManHours2);
                    dtGrid5.Columns.Add(Approver);
                    dtGrid5.Columns.Add(Ratio3);
                    dtGrid5.Columns.Add(ManHours3);
                    dtGrid5.Columns.Add(TotalManHours);
                    for (int i = 0; i < Getdr3.Length; i++)
                    {
                        decimal TotalManHourss = 0;
                        String mh1 = "0";
                        String mh2 = "0";
                        String mh3 = "0";
                        DataRow row = dtGrid5.NewRow();
                        row["DisciplinesWBSId"] = Getdr3[i]["DisciplinesWBSId"].ToString();
                        row["DisciplinesWBSCode"] = Getdr3[i]["DisciplinesWBSCode"].ToString();
                        row["DisciplinesWBSName"] = Getdr3[i]["DisciplinesWBSName"].ToString();
                        row["WBS"] = Getdr3[i]["WBS"].ToString();
                        row["NetworkOper"] = Getdr3[i]["NetworkOper"].ToString();//
                        row["WorkorderOper"] = Getdr3[i]["WorkorderOper"].ToString();
                        row["Roles"] = dr3[i]["Roles"].ToString();
                        row["Designer"] = Getdr3[i]["DesignersId"].ToString();
                        row["Ratio1"] = Getdr3[i]["Ratio1"].ToString();
                        mh1 = Getdr3[i]["ManHours1"].ToString();
                        row["ManHours1"] = mh1;
                        row["Checker"] = Getdr3[i]["CheckersId"].ToString();
                        row["Ratio2"] = Getdr3[i]["Ratio2"].ToString();
                        mh2 = Getdr3[i]["ManHours2"].ToString();
                        row["ManHours2"] = mh2;
                        row["Approver"] = Getdr3[i]["ApproversId"].ToString();
                        row["Ratio3"] = Getdr3[i]["Ratio3"].ToString();
                        mh3 = Getdr3[i]["ManHours3"].ToString();
                        row["ManHours3"] = mh3;
                        if (string.IsNullOrEmpty(Getdr3[i]["ManHours1"].ToString()))
                        {
                            mh1 = "0";
                        }
                        if (string.IsNullOrEmpty(Getdr3[i]["ManHours2"].ToString()))
                        {
                            mh2 = "0";
                        }
                        if (string.IsNullOrEmpty(Getdr3[i]["ManHours3"].ToString()))
                        {
                            mh3 = "0";
                        }
                        TotalManHourss = Convert.ToDecimal(mh1) + Convert.ToDecimal(mh2) + Convert.ToDecimal(mh3);
                        if (TotalManHourss == 0)
                        {
                            row["TotalManHours"] = "";
                        }
                        else
                        {
                            row["TotalManHours"] = Convert.ToString(TotalManHourss);
                        }
                        dtGrid5.Rows.Add(row);
                    }
                    Grid5.DataSource = dtGrid5;
                    Grid5.DataBind();
                }
            }
        }

        protected void Grid3_RowDataBound(object sender, GridRowEventArgs e)
        {
            var row = e.DataItem as NewBaseDisciplinesWBS;
            if (row != null)
            {
                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";
                }
            }

            string eProjectId = Request.Params["eProjectId"];
            if (!string.IsNullOrEmpty(eProjectId))
            {
                var eProject = BLL.EProjectService.GeteProjectById(eProjectId);
                if (eProject != null && eProject.PM_MA_ProjectApproval.HasValue)
                {
                    if (!string.IsNullOrEmpty(row.Sch_Start))
                    {
                        RenderField Sch_Start = Grid3.FindColumn("Sch_Start") as RenderField;
                        e.CellCssClasses[Sch_Start.ColumnIndex] = "f-grid-cell-uneditable";
                    }
                    if (!string.IsNullOrEmpty(row.Sch_End))
                    {
                        RenderField Sch_End = Grid3.FindColumn("Sch_End") as RenderField;
                        e.CellCssClasses[Sch_End.ColumnIndex] = "f-grid-cell-uneditable";
                    }
                    RenderField ManHours1 = Grid3.FindColumn("ManHours1") as RenderField;
                    e.CellCssClasses[ManHours1.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(row.ManHours1))
                    {
                         e.Values[11] = "0";
                    }                   
                    RenderField ManHours2 = Grid3.FindColumn("ManHours2") as RenderField;
                    e.CellCssClasses[ManHours2.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(row.ManHours2))
                    {
                        e.Values[14] = "0";
                    }
                    RenderField ManHours3 = Grid3.FindColumn("ManHours3") as RenderField;
                    e.CellCssClasses[ManHours3.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(row.ManHours3))
                    {
                        e.Values[17] = "0";
                    }
                    RenderField ManHours4 = Grid3.FindColumn("ManHours4") as RenderField;
                    e.CellCssClasses[ManHours4.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(row.ManHours4))
                    {
                       e.Values[20] = "0";
                    }
                }
            }
        }

        protected void Grid4_RowDataBound(object sender, GridRowEventArgs e)
        {
            string eProjectId = Request.Params["eProjectId"];
            if (!string.IsNullOrEmpty(eProjectId))
            {
                var eProject = BLL.EProjectService.GeteProjectById(eProjectId);
                if (eProject != null && eProject.PM_MA_ProjectApproval.HasValue)
                {
                    RenderField ManHours1 = Grid4.FindColumn("ManHours1") as RenderField;
                    e.CellCssClasses[ManHours1.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(e.Values[8].ToString()))
                    {
                         e.Values[8] = "0";
                    }                   
                    RenderField ManHours2 = Grid4.FindColumn("ManHours2") as RenderField;
                    e.CellCssClasses[ManHours2.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(e.Values[11].ToString()))
                    {
                        e.Values[11] = "0";
                    }
                    RenderField ManHours3 = Grid4.FindColumn("ManHours3") as RenderField;
                    e.CellCssClasses[ManHours3.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(e.Values[14].ToString()))
                    {
                          e.Values[14] = "0";
                    }
                }
            }
        }

        protected void Grid5_RowDataBound(object sender, GridRowEventArgs e)
        {
            string eProjectId = Request.Params["eProjectId"];
            if (!string.IsNullOrEmpty(eProjectId))
            {
                var eProject = BLL.EProjectService.GeteProjectById(eProjectId);
                if (eProject != null && eProject.PM_MA_ProjectApproval.HasValue)
                {
                    RenderField ManHours1 = Grid5.FindColumn("ManHours1") as RenderField;
                    e.CellCssClasses[ManHours1.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(e.Values[8].ToString()))
                    {
                        e.Values[8] = "0";
                    }                    
                    RenderField ManHours2 = Grid5.FindColumn("ManHours2") as RenderField;
                    e.CellCssClasses[ManHours2.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(e.Values[11].ToString()))
                    {
                        e.Values[11] = "0";
                    }
                    RenderField ManHours3 = Grid5.FindColumn("ManHours3") as RenderField;
                    e.CellCssClasses[ManHours3.ColumnIndex] = "f-grid-cell-uneditable";
                    if (string.IsNullOrEmpty(e.Values[14].ToString()))
                    {
                         e.Values[14] = "0";
                    }
                }
            }
        }
        
        #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)
        {
            string eProjectId = Request.Params["eProjectId"];
            string ProjectControlNetworkNo = string.Empty;
            string ProjectControlAccount = string.Empty;            
            var eProject = BLL.EProjectService.GeteProjectById(eProjectId);
            if (eProject != null)
            {
                ProjectControlNetworkNo = eProject.ProjectControl_NetworkNo;
                ProjectControlAccount = eProject.ProjectControl_Account;
            }              
            try
            {
                Model.Editor_EProject EProject = new Model.Editor_EProject();
                Model.Resource_Plan newPlan = BLL.ResourcePlanService.GetModelsResourcePlan(Request.Params["ResourcePlanId"]);
                if (newPlan != null)
                {
                    newPlan.WO = txtWO.Text;
                    if (!string.IsNullOrEmpty(txtSchStart1.Text))
                    {
                        newPlan.ProjectApproval_Sch_Start = Convert.ToDateTime(txtSchStart1.Text);
                    }
                    //if (!string.IsNullOrEmpty(txtSchEnd1.Text))
                    //{
                    //    newPlan.ProjectApproval_Sch_End = Convert.ToDateTime(txtSchEnd1.Text);
                    //}
                    newPlan.ProjectApproval_Sch_NotApplicable = false;
                    if (cbNotApplicable1.Checked)
                    {
                        newPlan.ProjectApproval_Sch_NotApplicable = true;
                    }

                    if (!string.IsNullOrEmpty(txtSchStart2.Text))
                    {
                        newPlan.Detail_Eng_Civil_Sch_Start = Convert.ToDateTime(txtSchStart2.Text);
                    }
                    else
                    {
                        newPlan.Detail_Eng_Civil_Sch_Start = null;
                    }

                    if (!string.IsNullOrEmpty(txtSchEnd2.Text))
                    {
                        newPlan.Detail_Eng_Civil_Sch_End = Convert.ToDateTime(txtSchEnd2.Text);
                    }
                    else
                    {
                        newPlan.Detail_Eng_Civil_Sch_End = null;
                    }

                    newPlan.Detail_Eng_Civil_Sch_NotApplicable = false;

                    if (cbNotApplicable2.Checked)
                    {
                        newPlan.Detail_Eng_Civil_Sch_NotApplicable = true;
                    }
                  
                    if (!string.IsNullOrEmpty(DatePicker1.Text))
                    {
                        newPlan.Detail_Eng_Mech_EI_Sch_Start = Convert.ToDateTime(DatePicker1.Text);
                    }
                    else
                    {
                        newPlan.Detail_Eng_Mech_EI_Sch_Start = null;
                    }

                    if (!string.IsNullOrEmpty(DatePicker2.Text))
                    {
                        newPlan.Detail_Eng_Mech_EI_Sch_End = Convert.ToDateTime(DatePicker2.Text);
                    }
                    else
                    {
                        newPlan.Detail_Eng_Mech_EI_Sch_End = null;
                    }

                    newPlan.Detail_Eng_Mech_EI_Sch_NotApplicable = false;
                    if (CheckBox1.Checked)
                    {
                        newPlan.Detail_Eng_Mech_EI_Sch_NotApplicable = true;
                    }

                    if (!string.IsNullOrEmpty(DatePicker3.Text))
                    {
                        newPlan.LLE_Procurement_Sch_Start = Convert.ToDateTime(DatePicker3.Text);
                    }
                    else
                    {
                        newPlan.LLE_Procurement_Sch_Start = null;
                    }

                    if (!string.IsNullOrEmpty(DatePicker4.Text))
                    {
                        newPlan.LLE_Procurement_Sch_End = Convert.ToDateTime(DatePicker4.Text);
                    }
                    else
                    {
                        newPlan.LLE_Procurement_Sch_End = null;
                    }

                    newPlan.LLE_Procurement_Sch_NotApplicable = false;
                    if (CheckBox2.Checked)
                    {
                        newPlan.LLE_Procurement_Sch_NotApplicable = true;
                    }
                   
                    if (!string.IsNullOrEmpty(DatePicker5.Text))
                    {
                        newPlan.Const_Civil_Sch_Start = Convert.ToDateTime(DatePicker5.Text);
                    }
                    else
                    {
                        newPlan.Const_Civil_Sch_Start = null;
                    }

                    if (!string.IsNullOrEmpty(DatePicker6.Text))
                    {
                        newPlan.Const_Civil_Sch_End = Convert.ToDateTime(DatePicker6.Text);
                    }
                    else
                    {
                        newPlan.Const_Civil_Sch_End = null;
                    }

                    newPlan.Const_Civil_Sch_NotApplicable = false;
                    if (CheckBox3.Checked)
                    {
                        newPlan.Const_Civil_Sch_NotApplicable = true;
                    }

                    if (!string.IsNullOrEmpty(DatePicker7.Text))
                    {
                        newPlan.Const_Mech_EI_Start = Convert.ToDateTime(DatePicker7.Text);
                    }
                    else
                    {
                        newPlan.Const_Mech_EI_Start = null;
                    }

                    if (!string.IsNullOrEmpty(DatePicker8.Text))
                    {
                        newPlan.Const_Mech_EI_End = Convert.ToDateTime(DatePicker8.Text);
                    }
                    else
                    {
                        newPlan.Const_Mech_EI_End = null;
                    }
                    newPlan.Const_Mech_EI_NotApplicable = false;
                    if (CheckBox4.Checked)
                    {
                        newPlan.Const_Mech_EI_NotApplicable = true;
                    }

                    if (!string.IsNullOrEmpty(DatePicker9.Text))
                    {
                        newPlan.MC_Sch_Start = Convert.ToDateTime(DatePicker9.Text);
                    }
                    else
                    {
                        newPlan.MC_Sch_Start = null;
                    }
                    //if (!string.IsNullOrEmpty(DatePicker10.Text))
                    //{
                    //    newPlan.MC_Sch_End = Convert.ToDateTime(DatePicker10.Text);
                    //}
                    newPlan.MC_Sch_NotApplicable = false;
                    if (CheckBox5.Checked)
                    {
                        newPlan.MC_Sch_NotApplicable = true;
                    }
                    if (checkPhase.SelectedValueArray != null)
                    {
                        newPlan.Phase = checkPhase.SelectedValueArray[0];
                    }
                    //foreach (CheckItem item in checkPhase.Items)
                    //{
                    //    if (item.Selected)
                    //    {
                    //        newPlan.Phase = item.Value;
                    //    }
                    //}
                    if (cbDesign1.Checked)
                    {
                        newPlan.Design = "CTE";
                    }
                    else if (cbDesign2.Checked)
                    {
                        newPlan.Design = "CTA";
                    }
                    else if (cbDesign3.Checked)
                    {
                        newPlan.Design = "CTM";
                    }
                    else
                    {
                        newPlan.Design = null;
                    }

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

                    if (cbConstruction1.Checked)
                    {
                        newPlan.Construction = "CTE";
                    }
                    else if (cbConstruction2.Checked)
                    {
                        newPlan.Construction = "CTA";
                    }
                    else if (cbConstruction3.Checked)
                    {
                        newPlan.Construction = "CTM";
                    }
                    else
                    {
                        newPlan.Construction = null;
                    }
                    //Progress:自动计算% =(Today - Sch.Start)  / (Sch. End- Sch.Start)
                    //更新 Editor_EProject
                    EProject.ModifyDate = DateTime.Now;
                    EProject.ModifyPerson = CurrUser.UserId;
                    if (!string.IsNullOrEmpty(txtSchStart1.Text))
                    {
                        EProject.ProjectControl_MS_Approval = Convert.ToDateTime(txtSchStart1.Text);
                    }
                    if (!string.IsNullOrEmpty(DatePicker3.Text) || !string.IsNullOrEmpty(DatePicker4.Text))
                    {
                        DateTime time = DateTime.Now;
                        EProject.ProjectControl_LP_SchStart = Funs.GetNewDateTime(this.DatePicker3.Text.Trim());
                        EProject.ProjectControl_LP_SchEnd = Funs.GetNewDateTime(this.DatePicker4.Text.Trim());
                        TimeSpan ts1 = time - Convert.ToDateTime(EProject.ProjectControl_LP_SchStart);
                        TimeSpan ts2 = Convert.ToDateTime(EProject.ProjectControl_LP_SchEnd) - Convert.ToDateTime(EProject.ProjectControl_LP_SchStart);
                        decimal ts = Convert.ToDecimal(Math.Round(ts1.Days * 100.0 / ts2.Days, 2));
                        EProject.ProjectControl_LP_Progress = ts;
                    }
                    if (eProject != null)
                    {
                        if (eProject.ProjectControl_JobStatus == "Not Start" && !eProject.PM_MA_ProjectApproval.HasValue)
                        {
                            EProject.ProjectControl_JobStatus = "Study";
                        }
                        else
                        {
                            EProject.ProjectControl_JobStatus = eProject.ProjectControl_JobStatus;
                        }

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

                    if (!string.IsNullOrEmpty(DatePicker5.Text) || !string.IsNullOrEmpty(DatePicker6.Text))
                    {
                        DateTime time = DateTime.Now;
                        EProject.ProjectControl_CC_SchStart = Convert.ToDateTime(this.DatePicker5.Text.Trim());
                        EProject.ProjectControl_CC_SchEnd = Convert.ToDateTime(this.DatePicker6.Text.Trim());
                        TimeSpan ts1 = time - Convert.ToDateTime(EProject.ProjectControl_CC_SchStart);
                        TimeSpan ts2 = Convert.ToDateTime(EProject.ProjectControl_CC_SchEnd) - Convert.ToDateTime(EProject.ProjectControl_CC_SchStart);
                        decimal ts = Convert.ToDecimal(Math.Round(ts1.Days * 100.0 / ts2.Days, 2));
                        EProject.ProjectControl_CC_Progress = ts;
                    }
                    if (!string.IsNullOrEmpty(DatePicker7.Text) || !string.IsNullOrEmpty(DatePicker8.Text))
                    {
                        DateTime time = DateTime.Now;
                        EProject.ProjectControl_CM_SchStart = Convert.ToDateTime(this.DatePicker7.Text.Trim());
                        EProject.ProjectControl_CM_SchEnd = Convert.ToDateTime(this.DatePicker8.Text.Trim());
                        TimeSpan ts1 = time - Convert.ToDateTime(EProject.ProjectControl_CM_SchStart);
                        TimeSpan ts2 = Convert.ToDateTime(EProject.ProjectControl_CM_SchEnd) - Convert.ToDateTime(EProject.ProjectControl_CM_SchStart);
                        decimal ts = Convert.ToDecimal(Math.Round(ts1.Days * 100.0 / ts2.Days, 2));
                        EProject.ProjectControl_CM_Progress = ts;
                    }
                    if (!string.IsNullOrEmpty(DatePicker9.Text))
                    {
                        EProject.ProjectControl_MS_MC = Funs.GetNewDateTime(this.DatePicker9.Text.Trim());
                        EProject.ProjectControl_Revised_MC_Date = Funs.GetNewDateTime(this.DatePicker9.Text.Trim());
                        EProject.ProjectControl_MS_Close = Funs.GetNewDateTime(this.DatePicker9.Text.Trim()).Value.AddMonths(6);
                    }
                    if (!string.IsNullOrEmpty(DropDownList7.SelectedValue))
                    {
                        EProject.ProjectControl_ProjectManagerId = DropDownList7.SelectedValue;
                    }
                    //foreach (CheckItem item in this.checkPriority.Items)
                    //{
                    //    if (item.Selected)
                    //    {
                    //        EProject.PM_General_Priority = item.Value;
                    //    }
                    //}
                    List<Model.Resource_PlanDetail> PlanDetaillist = new List<Model.Resource_PlanDetail>();
                    List<Model.ManHours_Plan> ManHourList = new List<Model.ManHours_Plan>();
                    List<Model.Editor_PM> PMList = new List<Model.Editor_PM>();

                    // 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 = newPlan.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(ProjectControlNetworkNo))
                                        {
                                            PM.Account = ProjectControlNetworkNo + "-" + pmd.FirstOrDefault().NetworkOper1;
                                        }
                                        else
                                        {
                                            PM.Account = pmd.FirstOrDefault().NetworkOper1;
                                        }

                                        //if (!string.IsNullOrEmpty(ProjectControlAccount))
                                        //{
                                        //    PM.Account = ProjectControlAccount + "-" + pmd.FirstOrDefault().WorkorderOper;
                                        //}
                                        //else
                                        //{
                                        //    PM.Account = pmd.FirstOrDefault().WorkorderOper;
                                        //}
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(ProjectControlNetworkNo))
                                        {
                                            PM.Account = ProjectControlNetworkNo + "-" + pmd.FirstOrDefault().NetworkOper;
                                        }
                                        else
                                        {
                                            PM.Account = pmd.FirstOrDefault().NetworkOper;
                                        }

                                        //var epro = BLL.EProjectService.GeteProjectById(eProjectId);
                                        //if (!string.IsNullOrEmpty(epro.ProjectControl_NetworkNo))
                                        //{
                                        //    PM.Account = epro.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);
                        }
                    }

                    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))
                        {
                            EProject.ProjectControl_CI_Process = Leader1;
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(Leader2))
                            {
                                EProject.ProjectControl_CI_Process = Leader2;
                            }
                            else
                            {
                                if (!String.IsNullOrEmpty(Leader3))
                                {
                                    EProject.ProjectControl_CI_Process = Leader3;
                                }
                                else
                                {
                                    EProject.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());
                        }

                        // 取优先级Civil>Architectral>HVAC>Masterplanning
                        if (!String.IsNullOrEmpty(Equipment1))
                        {
                            EProject.ProjectControl_CI_Civil = Equipment1;
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(Equipment2))
                            {
                                EProject.ProjectControl_CI_Civil = Equipment2;
                            }
                            else
                            {
                                if (!String.IsNullOrEmpty(Equipment3))
                                {
                                    EProject.ProjectControl_CI_Civil = Equipment3;
                                }
                                else
                                {
                                    if (!String.IsNullOrEmpty(Equipment4))
                                    {
                                        EProject.ProjectControl_CI_Civil = Equipment4;
                                    }
                                    else
                                    {
                                        EProject.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))
                        {
                            EProject.ProjectControl_CI_Instrument = Instrument;
                        }
                        else
                        {
                            EProject.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))
                        {
                            EProject.ProjectControl_CI_Electrical = Electrical;
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(Telecommunication))
                            {
                                EProject.ProjectControl_CI_Electrical = Telecommunication;
                            }
                            else
                            {
                                EProject.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))
                        {
                            EProject.ProjectControl_CI_Equipment = MechEqui;
                        }
                        else
                        {
                            EProject.ProjectControl_CI_Equipment = eProject.ProjectControl_CI_Equipment;
                        }
                        // 取CTE/C SchStart时间最早
                        #region 不用了
                        //DateTime schStart = Convert.ToDateTime("2050-01-01");
                        //if (schStart1 != null && schStart1.Value.CompareTo(schStart) < 0)
                        //{
                        //    schStart = schStart1.Value;
                        //}
                        //if (schStart2 != null && schStart2.Value.CompareTo(schStart) < 0)
                        //{
                        //    schStart = schStart2.Value;
                        //}
                        //if (schStart3 != null && schStart3.Value.CompareTo(schStart) < 0)
                        //{
                        //    schStart = schStart3.Value;
                        //}
                        //if (schStart4 != null && schStart4.Value.CompareTo(schStart) < 0)
                        //{
                        //    schStart = schStart4.Value;
                        //}

                        // 取CTE/C SchEnd时间最晚
                        //DateTime schEnd = Convert.ToDateTime("1900-01-01");

                        //if (schEnd1 != null && schEnd1.Value.CompareTo(schEnd) > 0)
                        //{
                        //    schEnd = schEnd1.Value;
                        //}
                        //if (schEnd2 != null && schEnd2.Value.CompareTo(schEnd) > 0)
                        //{
                        //    schEnd = schEnd2.Value;
                        //}
                        //if (schEnd3 != null && schEnd3.Value.CompareTo(schEnd) > 0)
                        //{
                        //    schEnd = schEnd3.Value;
                        //}
                        //if (schEnd4 != null && schEnd4.Value.CompareTo(schEnd) > 0)
                        //{
                        //    schEnd = schEnd4.Value;
                        //}

                        //if (string.IsNullOrEmpty(txtSchStart2.Text) && schStart != Convert.ToDateTime("2050-01-01"))
                        //{
                        //    newPlan.Detail_Eng_Civil_Sch_Start = schStart;
                        //}
                        //if (string.IsNullOrEmpty(txtSchEnd2.Text) && schEnd != Convert.ToDateTime("1900-01-01"))
                        //{
                        //    newPlan.Detail_Eng_Civil_Sch_End = schEnd;
                        //}

                        // 取CTE/P+ CTE/A SchStart时间最早
                        //DateTime schStartME = Convert.ToDateTime("2050-01-01");
                        //if (schStart0 != null && schStart0.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart0.Value;
                        //}
                        //if (schStart6 != null && schStart6.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart6.Value;
                        //}
                        //if (schStart7 != null && schStart7.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart7.Value;
                        //}
                        //if (schStart8 != null && schStart8.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart8.Value;
                        //}
                        //if (schStart9 != null && schStart9.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart9.Value;
                        //}
                        //if (schStart10 != null && schStart10.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart10.Value;
                        //}
                        //if (schStart11 != null && schStart11.Value.CompareTo(schStartME) < 0)
                        //{
                        //    schStartME = schStart11.Value;
                        //}

                        // 取CTE/P+ CTE/A SchEnd时间最晚
                        //DateTime schEndME = Convert.ToDateTime("1900-01-01");
                        //if (schEnd0 != null && schEnd0.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd0.Value;
                        //}
                        //if (schEnd6 != null && schEnd6.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd6.Value;
                        //}
                        //if (schEnd7 != null && schEnd7.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd7.Value;
                        //}
                        //if (schEnd8 != null && schEnd8.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd8.Value;
                        //}
                        //if (schEnd9 != null && schEnd9.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd9.Value;
                        //}
                        //if (schEnd10 != null && schEnd10.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd10.Value;
                        //}
                        //if (schEnd11 != null && schEnd11.Value.CompareTo(schEndME) > 0)
                        //{
                        //    schEndME = schEnd11.Value;
                        //}

                        //if (string.IsNullOrEmpty(DatePicker1.Text) && schStartME != Convert.ToDateTime("2050-01-01"))
                        //{
                        //    newPlan.Detail_Eng_Mech_EI_Sch_Start = schStartME;
                        //}
                        //if (string.IsNullOrEmpty(DatePicker2.Text) && schEndME != Convert.ToDateTime("1900-01-01"))
                        //{
                        //    newPlan.Detail_Eng_Mech_EI_Sch_End = schEndME;
                        //}
                        #endregion
                        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 = newPlan.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);

                            Model.Editor_PM EditorPM = null;
                            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()))
                            {
                                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 = newPlan.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.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(ProjectControlNetworkNo))
                                            {
                                                ManHoursPlan.Account = ProjectControlNetworkNo + "-" + wbs.NetworkOper1;
                                            }
                                            else
                                            {
                                                ManHoursPlan.Account = wbs.NetworkOper1;
                                            }
                                        }
                                        else
                                        {
                                            if (!string.IsNullOrEmpty(ProjectControlNetworkNo))
                                            {
                                                ManHoursPlan.Account = ProjectControlNetworkNo + "-" + 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 = newPlan.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))
                                {
                                    EProject.ProjectControl_ConstManagerId = PlanDetail.DesignersId;
                                    EProject.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 = newPlan.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(ProjectControlNetworkNo))
                                            {
                                                ManHoursPlan.Account = ProjectControlNetworkNo + "-" + wbs.NetworkOper1;
                                            }
                                            else
                                            {
                                                ManHoursPlan.Account = wbs.NetworkOper1;
                                            }
                                        }
                                        else
                                        {
                                            if (!string.IsNullOrEmpty(ProjectControlNetworkNo))
                                            {
                                                ManHoursPlan.Account = ProjectControlNetworkNo + "-" + 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 = newPlan.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 = newPlan.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());

                                    if (eProject.ProjectControl_JobType == "Projects" || eProject.ProjectControl_JobType == "Small Invest")
                                    {
                                        if (checkPhase.Items[0].Selected)
                                        {
                                            if (!string.IsNullOrEmpty(ProjectControlNetworkNo))
                                            {
                                                //ManHoursPlan.Account = WorkorderOper + "-" + txtWO.Text;
                                                ManHoursPlan.Account = ProjectControlNetworkNo + "-" + wbs.NetworkOper1;
                                            }
                                            else
                                            {
                                                ManHoursPlan.Account = wbs.NetworkOper1;
                                            }
                                        }
                                        else
                                        {
                                            if (!string.IsNullOrEmpty(ProjectControlNetworkNo))
                                            {
                                                ManHoursPlan.Account = ProjectControlNetworkNo + "-" + 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.EditTran(newPlan,EProject, 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());
                        //BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Add role information!");
                    }
                    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;
            }
        }







    }


    public class NewBaseDisciplinesWBS
    {
        public string DisciplinesWBSId { get; set; }
        public string DisciplinesWBSCode { get; set; }
        public string DisciplinesWBSName { get; set; }
        public string WBS { get; set; }
        public string NetworkOper { get; set; }
        public string WorkorderOper { get; set; }
        public string DepartId { get; set; }
        public string DepartName { get; set; }
        public string Designer { get; set; }
        public string Ratio1 { get; set; }
        public string ManHours1 { get; set; }
        public string Checker { get; set; }
        public string Ratio2 { get; set; }
        public string ManHours2 { get; set; }
        public string Approver { get; set; }
        public string Ratio3 { get; set; }
        public string ManHours3 { get; set; }
        public string Leader { get; set; }
        public string Ratio4 { get; set; }
        public string ManHours4 { get; set; }
        public string TotalManHours { get; set; }
        public string Types { get; set; }
        public int iSort { get; set; }
        public string Sch_Start { get; set; }
        public string Sch_End { get; set; }
        public string Roles { get; set; }
        
    }
}