using BLL;
using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.HSSE.Check
{
    public partial class RectifyNoticesRecheck : PageBase
    {
        #region 定义项
        public string RectifyNoticesId
        {
            get
            {
                return (string)ViewState["RectifyNoticesId"];
            }
            set
            {
                ViewState["RectifyNoticesId"] = value;
            }
        }
        #endregion
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                RectifyNoticesId = Request.Params["RectifyNoticesId"];
                var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(RectifyNoticesId);
                if (getRectifyNotices != null)
                {
                    this.txtUnit.Text = UnitService.GetUnitNameByUnitId(getRectifyNotices.UnitId);
                    this.txtWorkArea.Text = UnitWorkService.GetUnitWorkName(getRectifyNotices.WorkAreaId);
                    this.txtCheckMan.Text = UserService.getUserNamesUserIds(getRectifyNotices.CheckManIds);
                    this.txtCheckPerson.Text = getRectifyNotices.CheckManNames;
                    this.txtRectifyNoticesCode.Text = getRectifyNotices.RectifyNoticesCode;
                    this.txtCheckedDate.Text = getRectifyNotices.CheckedDate.ToString();
                    this.txtReCheckOpinion.Text = getRectifyNotices.ReCheckOpinion;
                    this.txtHiddenHazardType.Text = "一般";
                    if (getRectifyNotices.HiddenHazardType == "2")
                    {
                        this.txtHiddenHazardType.Text = "较大";
                    }
                    else if (getRectifyNotices.HiddenHazardType == "3")
                    {
                        this.txtHiddenHazardType.Text = "重大";
                    }
                    if (!string.IsNullOrEmpty(getRectifyNotices.ProfessionalEngineerId))
                    {
                        this.drpProfessionalEngineer.Text = UserService.GetUserNameByUserId(getRectifyNotices.ProfessionalEngineerId);
                    }
                    if (!string.IsNullOrEmpty(getRectifyNotices.ConstructionManagerId))
                    {
                        this.drpConstructionManager.Text = UserService.GetUserNameByUserId(getRectifyNotices.ConstructionManagerId);
                    }
                    if (!string.IsNullOrEmpty(getRectifyNotices.ProjectManagerId))
                    {
                        this.drpProjectManager.Text = UserService.GetUserNameByUserId(getRectifyNotices.ProjectManagerId);
                    }
                    this.lbDutyPerson.Text = UserService.GetUserNameByUserId(getRectifyNotices.DutyPersonId);
                    if (Funs.DB.Check_RectifyNoticesItem.FirstOrDefault(x => !x.IsRectify.HasValue || x.IsRectify == false) == null)
                    {
                        this.rdbIsAgree.SelectedValue = "true";
                    }
                    else
                    {
                        this.rdbIsAgree.SelectedValue = "false";
                    }
                    getControlShow();
                }
                BindGrid();
                BindGrid1();
            }
            else
            {
                string arg = GetRequestEventArgument(); // 此函数所在文件:PageBase.cs
                if (arg == "UPDATE_SUMMARY")
                {
                    getControlShow();
                }
            }
        }
        /// 
        /// 
        /// 
        public void BindGrid()
        {
            if (!string.IsNullOrEmpty(this.RectifyNoticesId))
            {
                string strSql = @"select RectifyNoticesItemId, RectifyNoticesId, WrongContent, Requirement, LimitTime, RectifyResults
                                            ,IsRectify,(CASE WHEN IsRectify=1 THEN '合格' WHEN IsRectify=0 THEN '不合格' ELSE '' END) AS IsRectifyName
                                            from [dbo].[Check_RectifyNoticesItem] ";
                List listStr = new List();
                strSql += "where RectifyNoticesId = @RectifyNoticesId";
                listStr.Add(new SqlParameter("@RectifyNoticesId", RectifyNoticesId));
                SqlParameter[] parameter = listStr.ToArray();
                DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
                var table = this.GetPagedDataTable(Grid1, tb);
                Grid1.DataSource = table;
                Grid1.DataBind();
            }
            else
            {
                Grid1.DataSource = null;
                Grid1.DataBind();
            }
        }
        /// 
        /// 
        /// 
        public void BindGrid1()
        {
            if (!string.IsNullOrEmpty(this.RectifyNoticesId))
            {
                string strSql = @"select FlowOperateId, RectifyNoticesId, OperateName, OperateManId, OperateTime, IsAgree, Opinion,S.UserName
                ,(case when IsAgree=0 then '不同意' else '同意' end) as IsAgreeName
                from Check_RectifyNoticesFlowOperate C left join Sys_User S on C.OperateManId=s.UserId ";
                List listStr = new List();
                strSql += "where RectifyNoticesId= @RectifyNoticesId";
                listStr.Add(new SqlParameter("@RectifyNoticesId", RectifyNoticesId));
                SqlParameter[] parameter = listStr.ToArray();
                DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
                var table = this.GetPagedDataTable(gvFlowOperate, tb);
                gvFlowOperate.DataSource = table;
                gvFlowOperate.DataBind();
            }
            else
            {
                Grid1.DataSource = null;
                Grid1.DataBind();
            }
        }
        
        #region 整改图片
        /// 
        /// 获取整改前图片(放于Img中)
        /// 
        /// 
        /// 
        protected string ConvertImageUrlByImage(object RectifyNoticesItemId)
        {
            string url = string.Empty;
            if (RectifyNoticesItemId != null)
            {
                var RectifyNoticesItem = BLL.AttachFileService.GetAttachFile(RectifyNoticesItemId.ToString() + "#1", BLL.Const.ProjectRectifyNoticesMenuId);
                if (RectifyNoticesItem != null)
                {
                    url = BLL.UploadAttachmentService.ShowImage("../../", RectifyNoticesItem.AttachUrl);
                }
            }
            return url;
        }
        /// 
        /// 获取整改后图片
        /// 
        /// 
        /// 
        protected string ConvertImgUrlByImage(object RectifyNoticesItemId)
        {
            string url = string.Empty;
            if (RectifyNoticesItemId != null)
            {
                var RectifyNoticesItem = BLL.AttachFileService.GetAttachFile(RectifyNoticesItemId.ToString() + "#2", BLL.Const.ProjectRectifyNoticesMenuId);
                if (RectifyNoticesItem != null)
                {
                    url = BLL.UploadAttachmentService.ShowImage("../../", RectifyNoticesItem.AttachUrl);
                }
            }
            return url;
        }
        #endregion
                
        #region 数据保存提交方法
        /// 
        /// 
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            SaveRectifyNotices(Const.BtnSave);
        }
       
        /// 
        /// 
        /// 
        /// 
        /// 
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            SaveRectifyNotices(Const.BtnSubmit);
        }
        /// 
        /// 保存方法
        /// 
        /// 
        private void SaveRectifyNotices(string saveType)
        {
            var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(this.RectifyNoticesId);
            if (getRectifyNotices != null)
            {
                var getAllItem = from x in Funs.DB.Check_RectifyNoticesItem
                                 where x.RectifyNoticesId == getRectifyNotices.RectifyNoticesId
                                 select x;
                if (getAllItem.Count() > 0)
                {
                    foreach (JObject mergedRow in Grid1.GetModifiedData())
                    {
                        JObject values = mergedRow.Value("values");
                        string rectifyNoticesItemId = mergedRow.Value("id");
                        string isRectify = values.Value("IsRectify");
                        var getUpdateItem = getAllItem.FirstOrDefault(x => x.RectifyNoticesItemId == rectifyNoticesItemId);
                        if (getUpdateItem != null)
                        {
                            if (isRectify == "合格")
                            {
                                getUpdateItem.IsRectify = true;
                            }
                            else
                            {
                                getUpdateItem.IsRectify = false;
                            }
                            Funs.DB.SubmitChanges();
                        }
                    }
                }
                getRectifyNotices.ReCheckOpinion = this.txtReCheckOpinion.Text;
                getRectifyNotices.ReCheckDate = DateTime.Now;
                if (saveType == Const.BtnSubmit)
                {
                    bool isAgree = false;
                    if (getAllItem.FirstOrDefault(x => !x.IsRectify.HasValue || x.IsRectify == false) == null)
                    {
                        isAgree = true;
                    }
                    if (isAgree)
                    {
                        getRectifyNotices.States = Const.State_5;
                        getRectifyNotices.ReCheckDate = DateTime.Now;                        
                        //// 回写专项检查明细表                            
                        var getcheck = Funs.DB.Check_CheckSpecialDetail.Where(x => x.DataId.Contains(getRectifyNotices.RectifyNoticesId));
                        if (getcheck.Count() > 0)
                        {
                            foreach (var item in getcheck)
                            {
                                item.CompleteStatus = true;
                                item.CompletedDate = DateTime.Now;
                                Funs.DB.SubmitChanges();
                            }
                            //// 根据明细ID判断是否全部整改完成 并更新专项检查状态
                            Check_CheckSpecialService.UpdateCheckSpecialStates(getcheck.FirstOrDefault().CheckSpecialId);
                        }
                    }
                    else
                    {
                        getRectifyNotices.States = Const.State_2;
                        getRectifyNotices.UnitHeadManDate = null;
                        getRectifyNotices.CompleteDate = null;
                        getRectifyNotices.ProfessionalEngineerTime2 = null;
                        getRectifyNotices.ConstructionManagerTime2 = null;
                        getRectifyNotices.ProjectManagerTime2 = null;
                    }
                    Model.Check_RectifyNoticesFlowOperate newOItem = new Model.Check_RectifyNoticesFlowOperate
                    {
                        FlowOperateId = SQLHelper.GetNewID(),
                        RectifyNoticesId = getRectifyNotices.RectifyNoticesId,
                        OperateManId = this.CurrUser.UserId,
                        OperateTime = DateTime.Now,
                        OperateName = "安全经理/安全工程师复查",
                        IsAgree = isAgree,
                        Opinion = this.txtReCheckOpinion.Text.Trim(),
                    };
                    Funs.DB.Check_RectifyNoticesFlowOperate.InsertOnSubmit(newOItem);                  
                }
                Funs.DB.SubmitChanges();
                ShowNotify(saveType + "成功!", MessageBoxIcon.Success);
                if (string.IsNullOrEmpty(Request.Params["Main"]))
                {
                    PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                }
                else
                {
                    PageContext.RegisterStartupScript(String.Format("window.close();"));
                }
            }
        }
        #endregion
        /// 
        /// 
        /// 
        /// 
        /// 
        protected void rdbIsAgree_SelectedIndexChanged(object sender, EventArgs e)
        {
            getControlShow();
        }
        /// 
        /// 
        /// 
        private void getControlShow()
        {
            if (this.rdbIsAgree.SelectedValue == "true")
            {
                this.step1_person2.Hidden = false;
                this.lbDutyPerson.Hidden = true;
            }
            else
            {
                this.step1_person2.Hidden = true;
                this.lbDutyPerson.Hidden = false;
            }
            this.lbCom.Hidden = !this.lbDutyPerson.Hidden;
        }
    }
}