using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.JDGL.WBS
{
    public partial class CostControlDetailEdit : PageBase
    {
        /// 
        /// 控制项主键
        /// 
        public string Id
        {
            get
            {
                return (string)ViewState["Id"];
            }
            set
            {
                ViewState["Id"] = value;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.Id = Request.Params["Id"];
                Model.WBS_CostControl costControl = BLL.CostControlService.GetCostControlByCostControlId(this.Id);
                if (costControl != null)
                {
                    this.txtCostControlName.Text = costControl.CostControlName;
                }
                var list = BLL.CostControlDetailService.GetMonthCostControlDetailsByCostControlId(this.Id);
                this.Grid1.DataSource = list;
                this.Grid1.DataBind();
            }
        }
        #region 增加按钮事件
        /// 
        /// 增加按钮事件
        /// 
        /// 
        /// 
        protected void btnNew_Click(object sender, EventArgs e)
        {
            var list = GetDetails();
            Model.WBS_CostControlDetail detail = new Model.WBS_CostControlDetail();
            detail.CostControlDetailId = SQLHelper.GetNewID();
            list.Add(detail);
            Grid1.DataSource = list;
            Grid1.DataBind();
        }
        #endregion
        private List GetDetails()
        {
            List details = new List();
            foreach (JObject mergedRow in Grid1.GetMergedData())
            {
                JObject values = mergedRow.Value("values");
                int i = mergedRow.Value("index");
                Model.WBS_CostControlDetail detail = new Model.WBS_CostControlDetail();
                detail.CostControlDetailId = Grid1.Rows[i].RowID;
                detail.CostControlId = this.Id;
                detail.Months = Funs.GetNewDateTime(values.Value("Months") + "-01");
                detail.PlanNum = Funs.GetNewDecimal(values.Value("PlanNum"));
                details.Add(detail);
            }
            return details;
        }
        #region 行点击事件
        /// 
        /// Grid行点击事件
        /// 
        /// 
        /// 
        protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
        {
            string detailId = Grid1.DataKeys[e.RowIndex][0].ToString();
            var list = GetDetails();
            if (e.CommandName == "del")//删除
            {
                var detail = list.FirstOrDefault(x => x.CostControlDetailId == detailId);
                Model.WBS_CostControlDetail oldDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlDetailId(detailId);
                if (detail != null)
                {
                    list.Remove(detail);
                }
                if (oldDetail != null)
                {
                    BLL.CostControlDetailService.DeleteCostControlDetail(detailId);
                }
                this.Grid1.DataSource = list;
                this.Grid1.DataBind();
            }
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            var list = GetDetails();
            foreach (var item in list)
            {
                Model.WBS_CostControlDetail oldDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlDetailId(item.CostControlDetailId);
                if (oldDetail == null)
                {
                    BLL.CostControlDetailService.AddCostControlDetail(item);
                }
                else
                {
                    item.ThisNum = oldDetail.ThisNum;
                    BLL.CostControlDetailService.UpdateCostControlDetail(item);
                }
            }
            ShowNotify("保存成功!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHideReference());
        }
        #endregion
        #region 调整计划
        /// 
        /// 调整计划按钮
        /// 
        /// 
        /// 
        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            var list = GetDetails();
            int versionNum = BLL.CostControlDetailHistoryService.GetMonthMaxVersionNumByCostControlId(this.Id);
            foreach (var item in list)
            {
                Model.WBS_CostControlDetailHistory detailHistory = new Model.WBS_CostControlDetailHistory();
                detailHistory.CostControlDetailHistoryId = SQLHelper.GetNewID();
                detailHistory.CostControlId = item.CostControlId;
                detailHistory.Months = item.Months;
                detailHistory.PlanNum = item.PlanNum;
                detailHistory.VersionNum = versionNum + 1;
                BLL.CostControlDetailHistoryService.AddCostControlDetailHistory(detailHistory);
            }
            ShowNotify("历史版本保存成功!", MessageBoxIcon.Success);
        }
        #endregion
        #region  查看历史版本
        /// 
        /// 查看历史版本
        /// 
        /// 
        /// 
        protected void btnSee_Click(object sender, EventArgs e)
        {
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("CostControlDetailHistoryShow.aspx?Id={0}", this.Id, "编辑 - ")));
        }
        #endregion
    }
}