using BLL;
using Model;
using System;
using System.Linq;
namespace FineUIPro.Web.JDGL.WBS
{
    public partial class WBSSetEdit : PageBase
    {
        #region 加载
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadData();
                string id = Request.Params["Id"];
                string type = Request.Params["Type"];
                string operating = Request.Params["operating"];
                if (operating == "add")
                {
                    int i = 0;
                    if (type.Equals("cnProfession"))
                    {
                        //txtCode.Text = GetNewCode(id, i, "cnProfession");
                    }
                    else
                    {
                        txtCode.Readonly = true;
                        this.trSortIndex.Hidden = true;
                        txtCode.Text = GetNewCode(id, i, "wbsSet");
                        Model.WBS_WbsSetInit wbsSet = BLL.WbsSetInitService.GetWbsSetInitByWbsSetCode(id);
                        this.trWeight.Hidden = false;
                        if (wbsSet != null)
                        {
                            if (wbsSet.Weights != null)
                            {
                                this.nbWeights.Text = wbsSet.Weights.ToString();
                            }
                        }
                    }
                }
                else
                {
                    if (type.Equals("unitProject"))
                    {
                        Model.Wbs_UnitProjectInit unitProject = BLL.UnitProjectInitService.GetUnitProjectInitByUnitProjectCode(id);
                        if (unitProject != null)
                        {
                            txtCode.Text = unitProject.UnitProjectCode;
                            txtName.Text = unitProject.UnitProjectName;
                            if (unitProject.SortIndex != null)
                            {
                                txtSortIndex.Text = unitProject.SortIndex.ToString();
                            }
                        }
                    }
                    else
                    {
                        txtCode.Readonly = true;
                        this.trSortIndex.Hidden = true;
                        Model.WBS_WbsSetInit wbsSet = BLL.WbsSetInitService.GetWbsSetInitByWbsSetCode(id);
                        if (wbsSet != null)
                        {
                            if (BLL.WbsSetInitService.GetItemCount(id) == 0)  //末级节点
                            {
                                this.trWeight.Hidden = false;
                                if (wbsSet.Weights != null)
                                {
                                    this.nbWeights.Text = wbsSet.Weights.ToString();
                                }
                            }
                            txtCode.Text = wbsSet.WbsSetCode;
                            txtName.Text = wbsSet.WbsSetName;
                        }
                    }
                }
            }
        }
        private void LoadData()
        {
            btnClose.OnClientClick = ActiveWindow.GetHideReference();
        }
        #endregion
        #region 获取编号
        /// 
        /// 获取编号
        /// 
        /// 
        /// 
        /// 
        /// 
        private string GetNewCode(string code, int i, string type)
        {
            string newCode = string.Empty;
            string testCode = string.Empty;
            string istr = string.Empty;
            i++;
            if (i < 10)
            {
                istr = "0" + i.ToString();
            }
            else
            {
                istr = i.ToString();
            }
            testCode = string.Empty;
            if (type == "cnProfession" && !code.Contains('-'))
            {
                var cnProfess = CnProfessionInitService.GetCnProfessionInitByCnProfessionId(code);
                var count = 0;
                if (cnProfess != null)
                {
                    count = BLL.UnitProjectInitService.GetUnitProcountByCnProfessionId(System.Convert.ToInt32(code));
                    testCode = cnProfess.CnProfessionCode + "-" + istr;
                }
                else
                {
                    count = BLL.UnitProjectInitService.GetUnitProjectInitcountByUnitProjectCode(code);
                    testCode = code + "-" + istr;
                }
                if (count == 0)
                {
                    newCode = testCode;
                }
                else
                {
                    do
                    {
                        i++;
                        if (i < 10)
                        {
                            istr = "0" + i.ToString();
                        }
                        else
                        {
                            istr = i.ToString();
                        }
                        if (cnProfess != null)
                        {
                            testCode = cnProfess.CnProfessionCode + "-" + istr;
                        }
                        else
                        {
                            testCode = code + "-" + istr;
                        }
                    } while (BLL.UnitProjectInitService.GetUnitProjectInitByUnitProjectCode(testCode) != null);
                    newCode = testCode;
                }
            }
            else
            {
                testCode = code + istr;
                if (BLL.WbsSetInitService.GetWbsSetInitByWbsSetCode(testCode) == null)
                {
                    newCode = testCode;
                }
                else
                {
                    do
                    {
                        i++;
                        if (i < 10)
                        {
                            istr = "0" + i.ToString();
                        }
                        else
                        {
                            istr = i.ToString();
                        }
                        testCode = code + istr;
                    } while (BLL.WbsSetInitService.GetWbsSetInitByWbsSetCode(testCode) != null);
                    newCode = testCode;
                }
            }
            return newCode;
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            string id = Request.Params["Id"];
            string type = Request.Params["Type"];
            string operating = Request.Params["operating"];
            if (operating == "add")
            {
                if (type == "cnProfession")
                {
                    Model.WBS_CnProfessionInit cnProfession = CnProfessionInitService.GetCnProfessionInitByCnProfessionId(id);
                    Model.Wbs_UnitProjectInit unitProject = new Wbs_UnitProjectInit();
                    unitProject.UnitProjectCode = txtCode.Text.Trim();
                    unitProject.UnitProjectName = txtName.Text.Trim();
                    unitProject.CnProfessionId = cnProfession.CnProfessionId;
                    unitProject.IsIn = false;
                    unitProject.SortIndex = Funs.GetNewIntOrZero(txtSortIndex.Text.Trim());
                    BLL.UnitProjectInitService.AddUnitProjectInit(unitProject);
                }
                else
                {
                    Model.WBS_WbsSetInit oldWbsSet = BLL.WbsSetInitService.GetWbsSetInitByWbsSetCode(id);
                    Model.Wbs_UnitProjectInit oldUnitProject = BLL.UnitProjectInitService.GetUnitProjectInitByUnitProjectCode(id);
                    Model.WBS_WbsSetInit wbsSet = new WBS_WbsSetInit();
                    wbsSet.WbsSetCode = txtCode.Text.Trim();
                    wbsSet.WbsSetName = txtName.Text.Trim();
                    if (!string.IsNullOrEmpty(this.nbWeights.Text.Trim()))
                    {
                        wbsSet.Weights = Funs.GetNewIntOrZero(this.nbWeights.Text.Trim());
                    }
                    if (oldWbsSet == null)
                    {
                        wbsSet.CnProfessionId = oldUnitProject.CnProfessionId;
                        wbsSet.UnitProjectCode = oldUnitProject.UnitProjectCode;
                        wbsSet.SuperWbsSetCode = null;
                    }
                    else
                    {
                        wbsSet.CnProfessionId = oldWbsSet.CnProfessionId;
                        wbsSet.UnitProjectCode = oldWbsSet.UnitProjectCode;
                        wbsSet.SuperWbsSetCode = oldWbsSet.WbsSetCode;
                    }
                    wbsSet.IsIn = false;
                    BLL.WbsSetInitService.AddWbsSetInit(wbsSet);
                }
                BLL.LogService.AddSys_Log(this.CurrUser, id, id, BLL.Const.WBSSetMenuId, "增加WBS库单位、分部、分项工程!");
                PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(txtCode.Text.Trim()) + ActiveWindow.GetHidePostBackReference());
            }
            else
            {
                if (type == "unitProject")
                {
                    Model.Wbs_UnitProjectInit unitProject = BLL.UnitProjectInitService.GetUnitProjectInitByUnitProjectCode(id);
                    if (unitProject != null)
                    {
                        unitProject.UnitProjectCode = id;
                        unitProject.UnitProjectName = txtName.Text.Trim();
                        unitProject.SortIndex = Funs.GetNewIntOrZero(txtSortIndex.Text.Trim());
                        BLL.UnitProjectInitService.UpdateUnitProjectInit(unitProject);
                    }
                }
                else
                {
                    Model.WBS_WbsSetInit wbsSet = BLL.WbsSetInitService.GetWbsSetInitByWbsSetCode(id);
                    if (wbsSet != null)
                    {
                        wbsSet.WbsSetCode = txtCode.Text.Trim();
                        wbsSet.WbsSetName = txtName.Text.Trim();
                        if (!string.IsNullOrEmpty(this.nbWeights.Text.Trim()))
                        {
                            wbsSet.Weights = Funs.GetNewIntOrZero(this.nbWeights.Text.Trim());
                        }
                        BLL.WbsSetInitService.UpdateWbsSetInit(wbsSet);
                    }
                }
                BLL.LogService.AddSys_Log(this.CurrUser, id, id, BLL.Const.WBSSetMenuId, "修改WBS库单位、分部、分项工程!");
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
            }
        }
        #endregion
    }
}