using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.ZHGL.Supervise
{
    public partial class SuperviseCheckRectifyEdit : 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);
                        }
                        //this.btnUpdata.Hidden = true;
                        //if (rectify.IsFromMainUnit == true)
                        //{
                        //    this.btnUpdata.Hidden = false;
                        //}
                        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;
            bool resultAll = 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,
                    VerifierName = item.VerifierName,
                    VerifierDate = item.VerifierDate,
                };
                if (!item.RealEndDate.HasValue)
                {
                    result = false;
                }
                if (!item.VerifierDate.HasValue || string.IsNullOrEmpty(item.VerifierName))
                {
                    resultAll = false;
                }
                BLL.SuperviseCheckRectifyItemService.AddSuperviseCheckRectifyItem(newSuperviseCheckRectifyItem);
            }
            if (result)    //已全部确认完成
            {
                superviseCheckRectify.HandleState = "3";    //待验收
                if (resultAll)
                {
                    superviseCheckRectify.HandleState = "4";    //已闭环
                }
            }
            else
            {
                superviseCheckRectify.HandleState = "2";    //已签发但未完成
            }
            BLL.SuperviseCheckRectifyService.UpdateSuperviseCheckRectify(superviseCheckRectify);
            BLL.LogService.AddSys_Log(this.CurrUser, superviseCheckRectify.SuperviseCheckRectifyCode, superviseCheckRectify.SuperviseCheckRectifyId, BLL.Const.SuperviseCheckRectifyMenuId, Const.BtnModify);
            if (type == "updata" && superviseCheckRectify.IsFromMainUnit == true)     //保存并上报
            {
                Update(this.SuperviseCheckRectifyId);
            }
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #endregion
        #region 上传到集团公司
        /// 
        /// 上传到集团公司
        /// 
        /// 
        private void Update(string superviseCheckRectifyId)
        {
            /////创建客户端服务
            //var poxy = Web.ServiceProxy.CreateServiceClient();
            //poxy.DataInsertSupervise_SuperviseCheckRectifyTableCompleted += new EventHandler(poxy_DataInsertSupervise_SuperviseCheckRectifyTableCompleted);
            //var rectify = from x in Funs.DB.View_SuperviseCheckRectify
            //              where x.RealEndDate != null && x.SuperviseCheckRectifyId == superviseCheckRectifyId && x.IsFromMainUnit == true
            //              select new HSSEService.Supervise_SuperviseCheckRectify
            //              {
            //                  SuperviseCheckRectifyId = x.SuperviseCheckRectifyId,
            //                  SuperviseCheckRectifyCode = x.SuperviseCheckRectifyCode,
            //                  ProjectId = x.ProjectId,
            //                  UnitId = x.UnitId,
            //                  CheckDate = x.CheckDate,
            //                  IssueMan = x.IssueMan,
            //                  IssueDate = x.IssueDate,
            //                  SuperviseCheckReportId = x.SuperviseCheckReportId,
            //                  HandleState = x.HandleState,
            //                  SuperviseCheckRectifyItemId = x.SuperviseCheckRectifyItemId,
            //                  RectifyItemId = x.RectifyItemId,
            //                  ConfirmMan = x.ConfirmMan,
            //                  ConfirmDate = x.ConfirmDate,
            //                  OrderEndDate = x.OrderEndDate,
            //                  OrderEndPerson = x.OrderEndPerson,
            //                  RealEndDate = x.RealEndDate,
            //              };
            //poxy.DataInsertSupervise_SuperviseCheckRectifyTableAsync(rectify.ToList());
        }
        #endregion
        #region 安全监督检查整改
        /// 
        /// 安全监督检查整改
        /// 
        /// 
        /// 
        //private void poxy_DataInsertSupervise_SuperviseCheckRectifyTableCompleted(object sender, HSSEService.DataInsertSupervise_SuperviseCheckRectifyTableCompletedEventArgs e)
        //{
        //    if (e.Error == null)
        //    {
        //        var idList = e.Result;
        //        BLL.LogService.AddSys_Log(this.CurrUser, "【安全监督检查整改】上传到服务器" + idList.Count.ToString() + "条数据;", string.Empty, BLL.Const.SuperviseCheckRectifyMenuId, Const.BtnUploadResources);
        //    }
        //    else
        //    {
        //        BLL.LogService.AddSys_Log(this.CurrUser, "【安全监督检查整改】上传到服务器失败;", string.Empty, BLL.Const.SuperviseCheckRectifyMenuId, Const.BtnUploadResources);
        //    }
        //}
        #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"));
                item.VerifierName = values.Value("VerifierName");
                item.VerifierDate = Funs.GetNewDateTime(values.Value("VerifierDate"));
            }
        }
        #endregion
        #region 获取按钮权限
        /// 
        /// 获取按钮权限
        /// 
        /// 
        /// 
        private void GetButtonPower()
        {
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.SuperviseCheckRectifyMenuId);
            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
    }
}