using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.Hazard
{
    public partial class ProjectSuperviseCheckRectifyEdit : PageBase
    {
        #region 定义变量
        /// 
        /// 主键
        /// 
        public string SuperviseCheckRectifyId
        {
            get
            {
                return (string)ViewState["SuperviseCheckRectifyId"];
            }
            set
            {
                ViewState["SuperviseCheckRectifyId"] = value;
            }
        }
        /// 
        /// 定义集合
        /// 
        private static List superviseCheckRectifyItems = new List();
        #endregion
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                btnClose.OnClientClick = ActiveWindow.GetHideReference();
                ////权限按钮方法
                this.GetButtonPower();
                this.SuperviseCheckRectifyId = Request.Params["SuperviseCheckRectifyId"];
                if (!string.IsNullOrEmpty(this.SuperviseCheckRectifyId))
                {
                    var rectify = Funs.DB.View_Supervise_SuperviseCheckRectify.FirstOrDefault(x => x.SuperviseCheckRectifyId == this.SuperviseCheckRectifyId);
                    if (rectify != null)
                    {
                        this.lbUnitName.Text = rectify.UnitName;
                        this.lbProjectName.Text = rectify.ProjectName;
                        this.lbSuperviseCheckRectifyCode.Text = rectify.SuperviseCheckRectifyCode;
                        if (!string.IsNullOrEmpty(rectify.IssueMan))
                        {
                            this.txtIssueMan.Text = rectify.IssueMan;
                        }
                        else
                        {
                            this.txtIssueMan.Text = this.CurrUser.UserName;
                        }
                        if (rectify.IssueDate != null)
                        {
                            this.txtIssueDate.Text = string.Format("{0:yyyy-MM-dd}", rectify.IssueDate);
                        }
                        else
                        {
                            this.txtIssueDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
                        }
                        superviseCheckRectifyItems = (from x in Funs.DB.View_Supervise_SuperviseCheckRectifyItem where x.SuperviseCheckRectifyId == this.SuperviseCheckRectifyId orderby x.RectifyCode select x).ToList();
                        Grid1.DataSource = superviseCheckRectifyItems;
                        Grid1.DataBind();
                    }
                }
            }
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            Save("add");
        }
        //protected void btnUpdata_Click(object sender, EventArgs e)
        //{
        //    Save("updata");
        //}
        /// 
        /// 保存
        /// 
        /// 
        private void Save(string type)
        {
            Model.Supervise_SuperviseCheckRectify superviseCheckRectify = BLL.SuperviseCheckRectifyService.GetSuperviseCheckRectifyById(Request.Params["SuperviseCheckRectifyId"]);
            superviseCheckRectify.IssueMan = this.txtIssueMan.Text.Trim();
            if (!string.IsNullOrEmpty(this.txtIssueDate.Text.Trim()))
            {
                superviseCheckRectify.IssueDate = Convert.ToDateTime(this.txtIssueDate.Text.Trim());
            }
            BLL.SuperviseCheckRectifyItemService.DeleteSuperviseCheckRectifyItemBySuperviseCheckRectifyId(Request.Params["SuperviseCheckRectifyId"]);
            jerqueSaveList();
            bool result = true;
            foreach (var item in superviseCheckRectifyItems)
            {
                Model.Supervise_SuperviseCheckRectifyItem newSuperviseCheckRectifyItem = new Model.Supervise_SuperviseCheckRectifyItem
                {
                    SuperviseCheckRectifyItemId = item.SuperviseCheckRectifyItemId,
                    SuperviseCheckRectifyId = item.SuperviseCheckRectifyId,
                    RectifyItemId = item.RectifyItemId,
                    ConfirmMan = item.ConfirmMan,
                    ConfirmDate = item.ConfirmDate,
                    OrderEndDate = item.OrderEndDate,
                    OrderEndPerson = item.OrderEndPerson,
                    RealEndDate = item.RealEndDate,
                    AttachUrl = item.AttachUrl
                };
                if (item.RealEndDate == null)
                {
                    result = false;
                }
                BLL.SuperviseCheckRectifyItemService.AddSuperviseCheckRectifyItem(newSuperviseCheckRectifyItem);
            }
            if (result)    //已全部确认完成
            {
                superviseCheckRectify.HandleState = "3";    //已完成
            }
            else
            {
                superviseCheckRectify.HandleState = "2";    //已签发但未完成
            }
            BLL.SuperviseCheckRectifyService.UpdateSuperviseCheckRectify(superviseCheckRectify);
            BLL.LogService.AddSys_Log(this.CurrUser, superviseCheckRectify.SuperviseCheckRectifyCode, superviseCheckRectify.SuperviseCheckRectifyId, BLL.Const.SuperviseCheckRectifyMenuId, BLL.Const.BtnModify);          
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #endregion        
        #region 保存集合
        /// 
        /// 保存集合
        /// 
        private void jerqueSaveList()
        {
            JArray mergedData = Grid1.GetMergedData();
            foreach (JObject mergedRow in mergedData)
            {
                string status = mergedRow.Value("status");
                JObject values = mergedRow.Value("values");
                var item = superviseCheckRectifyItems.FirstOrDefault(e => e.SuperviseCheckRectifyItemId == values.Value("SuperviseCheckRectifyItemId"));
                item.ConfirmMan = values.Value("ConfirmMan");
                item.ConfirmDate = Funs.GetNewDateTime(values.Value("ConfirmDate"));
                item.OrderEndDate = Funs.GetNewDateTime(values.Value("OrderEndDate"));
                item.OrderEndPerson = values.Value("OrderEndPerson");
                item.RealEndDate = Funs.GetNewDateTime(values.Value("RealEndDate"));
            }
        }
        #endregion
        #region 获取按钮权限
        /// 
        /// 获取按钮权限
        /// 
        /// 
        /// 
        private void GetButtonPower()
        {
            if (Request.Params["value"] == "0")
            {
                return;
            }
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.ProjectSuperviseCheckRectifyMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnSave))
                {
                    this.btnSave.Hidden = false;
                }
                //if (buttonList.Contains(BLL.Const.BtnSaveUp))
                //{
                //    this.btnUpdata.Hidden = false;
                //}
            }
        }
        #endregion
    }
}