using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BLL;
namespace FineUIPro.Web.HSSE.Check
{
    public partial class CheckColligationEdit : PageBase
    {
        #region 定义变量
        /// 
        /// 主键
        /// 
        public string CheckColligationId
        {
            get
            {
                return (string)ViewState["CheckColligationId"];
            }
            set
            {
                ViewState["CheckColligationId"] = value;
            }
        }
        /// 
        /// 项目主键
        /// 
        public string ProjectId
        {
            get
            {
                return (string)ViewState["ProjectId"];
            }
            set
            {
                ViewState["ProjectId"] = value;
            }
        }
        /// 
        /// 定义集合
        /// 
        private static List checkColligationDetails = new List();
        #endregion
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                hdAttachUrl.Text = string.Empty;
                hdId.Text = string.Empty;
                this.ProjectId = this.CurrUser.LoginProjectId;
                this.btnClose.OnClientClick = ActiveWindow.GetHideReference();               
                this.InitDropDownList();
                checkColligationDetails.Clear();
                this.CheckColligationId = Request.Params["CheckColligationId"];
                var checkColligation = BLL.Check_CheckColligationService.GetCheckColligationByCheckColligationId(this.CheckColligationId);
                if (checkColligation != null)
                {
                    this.ProjectId = checkColligation.ProjectId;
                    if (this.ProjectId != this.CurrUser.LoginProjectId)
                    {
                        this.InitDropDownList();
                    }
                    this.txtCheckColligationCode.Text = BLL.CodeRecordsService.ReturnCodeByDataId(this.CheckColligationId);
                    if (checkColligation.CheckTime != null)
                    {
                        this.txtCheckDate.Text = string.Format("{0:yyyy-MM-dd}", checkColligation.CheckTime);
                    }
                    if (!string.IsNullOrEmpty(checkColligation.CheckType))
                    {
                        this.drpCheckType.SelectedValue = checkColligation.CheckType;
                    }
                    if (!string.IsNullOrEmpty(checkColligation.PartInUnits))
                    {
                        this.drpUnit.SelectedValueArray = checkColligation.PartInUnits.Split(',');
                    }
                    if (!string.IsNullOrEmpty(checkColligation.CheckPerson))
                    {
                        this.drpCheckPerson.SelectedValue = checkColligation.CheckPerson;
                    }
                    //if (!string.IsNullOrEmpty(checkColligation.CheckAreas))
                    //{
                    //    this.drpCheckAreas.SelectedValueArray = checkColligation.CheckAreas.Split(',');
                    //}
                    if (!string.IsNullOrEmpty(checkColligation.PartInPersonIds))
                    {
                        this.drpPartInPersons.SelectedValueArray = checkColligation.PartInPersonIds.Split(',');
                    }
                    this.txtPartInPersonNames.Text = checkColligation.PartInPersonNames;
                    this.txtDaySummary.Text = HttpUtility.HtmlDecode(checkColligation.DaySummary);
                    checkColligationDetails = (from x in Funs.DB.View_Check_CheckColligationDetail where x.CheckColligationId == this.CheckColligationId orderby x.CheckItem select x).ToList();
                }
                else
                {
                    ////自动生成编码
                    this.txtCheckColligationCode.Text = BLL.CodeRecordsService.ReturnCodeByMenuIdProjectId(BLL.Const.ProjectCheckColligationMenuId, this.ProjectId, this.CurrUser.UnitId);
                    this.txtCheckDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
                    this.txtDaySummary.Text = HttpUtility.HtmlDecode("其他情况日小结");
                }
                Grid1.DataSource = checkColligationDetails;
                Grid1.DataBind();
                SetColor();
                this.ctlAuditFlow.MenuId = BLL.Const.ProjectCheckColligationMenuId;
                this.ctlAuditFlow.DataId = this.CheckColligationId;
                this.ctlAuditFlow.ProjectId = this.ProjectId;
                this.ctlAuditFlow.UnitId = this.CurrUser.UnitId;
            }
        }
        #endregion
        /// 
        ///  初始化下拉框
        /// 
        private void InitDropDownList()
        {           
            //参与单位           
            BLL.UnitService.InitUnitDropDownList(this.drpUnit, this.ProjectId, false);
            this.drpUnit.SelectedValue = this.CurrUser.UnitId;
            //检查组长
            BLL.UserService.InitUserDropDownList(this.drpCheckPerson, this.ProjectId, true);
            //检查组成员
            BLL.UserService.InitUserDropDownList(this.drpPartInPersons, this.ProjectId, true);
            //单位工程
            //BLL.WorkAreaService.InitWorkAreaDropDownList(this.drpCheckAreas, this.ProjectId, false);
        }
        
        #region 选择按钮
        /// 
        /// 选择按钮
        /// 
        /// 
        /// 
        protected void btnSelect_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.CheckColligationId))
            {
                SaveNew();
            }
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ShowCheckItem.aspx?CheckColligationId={0}&checkType=3", this.CheckColligationId, "编辑 - ")));
        }
        #endregion
        private void SaveNew()
        {
            if (string.IsNullOrEmpty(this.CheckColligationId))
            {
                Model.Check_CheckColligation checkColligation = new Model.Check_CheckColligation
                {
                    CheckColligationId = SQLHelper.GetNewID(typeof(Model.Check_CheckColligation)),
                    CheckColligationCode = this.txtCheckColligationCode.Text.Trim(),
                    ProjectId = this.ProjectId
                };
                if (this.drpCheckType.SelectedValue != BLL.Const._Null)
                {
                    checkColligation.CheckType = this.drpCheckType.SelectedValue;
                }
                //参与单位
                string unitIds = string.Empty;
                foreach (var item in this.drpUnit.SelectedValueArray)
                {
                    unitIds += item + ",";
                }
                if (!string.IsNullOrEmpty(unitIds))
                {
                    unitIds = unitIds.Substring(0, unitIds.LastIndexOf(","));
                }
                checkColligation.PartInUnits = unitIds;
                if (this.drpCheckPerson.SelectedValue != BLL.Const._Null)
                {
                    checkColligation.CheckPerson = this.drpCheckPerson.SelectedValue;
                }
                ///组成员
                string partInPersonIds = string.Empty;
                string partInPersons = string.Empty;
                foreach (var item in this.drpPartInPersons.SelectedValueArray)
                {
                    var user = BLL.UserService.GetUserByUserId(item);
                    if (user != null)
                    {
                        partInPersonIds += user.UserId + ",";
                        partInPersons += user.UserName + ",";
                    }
                }
                if (!string.IsNullOrEmpty(partInPersonIds))
                {
                    checkColligation.PartInPersonIds = partInPersonIds.Substring(0, partInPersonIds.LastIndexOf(","));
                    checkColligation.PartInPersons = partInPersons.Substring(0, partInPersons.LastIndexOf(","));
                }
                checkColligation.PartInPersonNames = this.txtPartInPersonNames.Text.Trim();
                checkColligation.CheckTime = Funs.GetNewDateTime(this.txtCheckDate.Text.Trim());
                checkColligation.DaySummary = HttpUtility.HtmlEncode(this.txtDaySummary.Text.Trim());
                ////单据状态
                checkColligation.States = BLL.Const.State_0;
                this.CheckColligationId = checkColligation.CheckColligationId;
                checkColligation.CompileMan = this.CurrUser.UserId;
                BLL.Check_CheckColligationService.AddCheckColligation(checkColligation);
                BLL.LogService.AddSys_Log(this.CurrUser, checkColligation.CheckColligationCode, checkColligation.CheckColligationId, BLL.Const.ProjectCheckColligationMenuId, BLL.Const.BtnAdd);
            }
        }
        #region 提交按钮
        /// 
        /// 提交按钮
        /// 
        /// 
        /// 
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            if (!IsAllFix())
            {
                Alert.ShowInTop("请将检查项的不合格项描述补充完整!", MessageBoxIcon.Warning);
                return;
            }
            if (this.ctlAuditFlow.NextStep == BLL.Const.State_1 && this.ctlAuditFlow.NextPerson == BLL.Const._Null)
            {
                Alert.ShowInTop("请选择下一步办理人!", MessageBoxIcon.Warning);
                return;
            }
            this.SaveData(BLL.Const.BtnSubmit);
            PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
        }
        #endregion
        #region 保存按钮
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (!IsAllFix())
            {
                Alert.ShowInTop("请将检查项的不合格项描述补充完整!", MessageBoxIcon.Warning);
                return;
            }
            this.SaveData(BLL.Const.BtnSave);
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #endregion
        #region 明细项是否全部填写内容
        /// 
        /// 明细项是否全部填写内容
        /// 
        /// 
        private bool IsAllFix()
        {
            bool isAllFix = true;
            if (!string.IsNullOrEmpty(this.CheckColligationId))
            {
                var details = BLL.Check_CheckColligationDetailService.GetCheckColligationDetailByCheckColligationId(this.CheckColligationId);
                //if (details.Count > 0)
                //{
                    foreach (var item in details)
                    {
                        if (string.IsNullOrEmpty(item.Unqualified))
                        {
                            isAllFix = false;
                            break;
                        }
                    }
                //}
                //else
                //{
                //    isAllFix = false;
                //}
            }
            return isAllFix;
        }
        #endregion
        /// 
        /// 保存数据
        /// 
        /// 
        private void SaveData(string type)
        {
            Model.Check_CheckColligation checkColligation = new Model.Check_CheckColligation
            {
                CheckColligationCode = this.txtCheckColligationCode.Text.Trim(),
                ProjectId = this.ProjectId
            };
            if (this.drpCheckType.SelectedValue != BLL.Const._Null)
            {
                checkColligation.CheckType = this.drpCheckType.SelectedValue;
            }
            //参与单位
            string unitIds = string.Empty;
            foreach (var item in this.drpUnit.SelectedValueArray)
            {
                unitIds += item + ",";
            }
            if (!string.IsNullOrEmpty(unitIds))
            {
                unitIds = unitIds.Substring(0, unitIds.LastIndexOf(","));
            }
            checkColligation.PartInUnits = unitIds;
            if (this.drpCheckPerson.SelectedValue != BLL.Const._Null)
            {
                checkColligation.CheckPerson = this.drpCheckPerson.SelectedValue;
            }
            ///组成员
            string partInPersonIds = string.Empty;
            string partInPersons = string.Empty;
            foreach (var item in this.drpPartInPersons.SelectedValueArray)
            {
                var user = BLL.UserService.GetUserByUserId(item);
                if (user != null)
                {
                    partInPersonIds += user.UserId + ",";
                    partInPersons += user.UserName + ",";
                }
            }
            if (!string.IsNullOrEmpty(partInPersonIds))
            {
                checkColligation.PartInPersonIds = partInPersonIds.Substring(0, partInPersonIds.LastIndexOf(","));
                checkColligation.PartInPersons = partInPersons.Substring(0, partInPersons.LastIndexOf(","));
            }
            checkColligation.PartInPersonNames = this.txtPartInPersonNames.Text.Trim();
            //单位工程
            //string workAreaIds = string.Empty;
            //foreach (var item in this.drpCheckAreas.SelectedValueArray)
            //{
            //    workAreaIds += item + ",";
            //}
            //if (!string.IsNullOrEmpty(workAreaIds))
            //{
            //    workAreaIds = workAreaIds.Substring(0, workAreaIds.LastIndexOf(","));
            //}
            //checkColligation.CheckAreas = workAreaIds;
            checkColligation.CheckTime = Funs.GetNewDateTime(this.txtCheckDate.Text.Trim());
            checkColligation.DaySummary = HttpUtility.HtmlEncode(this.txtDaySummary.Text.Trim());
            ////单据状态
            checkColligation.States = BLL.Const.State_0;
            if (type == BLL.Const.BtnSubmit)
            {
                checkColligation.States = this.ctlAuditFlow.NextStep;
            }
            if (!string.IsNullOrEmpty(this.CheckColligationId))
            {
                checkColligation.CheckColligationId = this.CheckColligationId;
                BLL.Check_CheckColligationService.UpdateCheckColligation(checkColligation);
                BLL.LogService.AddSys_Log(this.CurrUser, checkColligation.CheckColligationCode, checkColligation.CheckColligationId, BLL.Const.ProjectCheckColligationMenuId, BLL.Const.BtnModify);
            }
            else
            {
                checkColligation.CheckColligationId = SQLHelper.GetNewID(typeof(Model.Check_CheckColligation));
                this.CheckColligationId = checkColligation.CheckColligationId;
                checkColligation.CompileMan = this.CurrUser.UserId;
                BLL.Check_CheckColligationService.AddCheckColligation(checkColligation);
                BLL.LogService.AddSys_Log(this.CurrUser, checkColligation.CheckColligationCode, checkColligation.CheckColligationId, BLL.Const.ProjectCheckColligationMenuId, BLL.Const.BtnAdd);
            }
            ////保存流程审核数据         
            this.ctlAuditFlow.btnSaveData(this.ProjectId, BLL.Const.ProjectCheckColligationMenuId, this.CheckColligationId, (type == BLL.Const.BtnSubmit ? true : false), this.txtCheckDate.Text.Trim(), "~/Check/CheckColligationView.aspx?CheckColligationId={0}");
        }
        #region 关闭弹出窗
        /// 
        /// 关闭弹出窗
        /// 
        /// 
        /// 
        protected void Window1_Close(object sender, EventArgs e)
        {
            checkColligationDetails = (from x in Funs.DB.View_Check_CheckColligationDetail where x.CheckColligationId == this.CheckColligationId orderby x.CheckItem select x).ToList();
            Grid1.DataSource = checkColligationDetails;
            Grid1.DataBind();
            SetColor();
        }
        #endregion
        private void SetColor()
        {
            for (int i = 0; i < this.Grid1.Rows.Count; i++)
            {
                if (this.Grid1.Rows[i].Values[5].ToString() == "")
                {
                    Grid1.Rows[i].CellCssClasses[5] = "red";
                }
                if (this.Grid1.Rows[i].Values[6].ToString() == "")
                {
                    Grid1.Rows[i].CellCssClasses[6] = "red";
                }
                if (this.Grid1.Rows[i].Values[7].ToString() == "")
                {
                    Grid1.Rows[i].CellCssClasses[7] = "red";
                }
            }
        }
        #region Grid双击事件
        /// 
        /// Grid行双击事件
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            btnMenuEdit_Click(null, null);
        }
        #endregion
        #region 编辑
        /// 
        /// 编辑按钮
        /// 
        /// 
        /// 
        protected void btnMenuEdit_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                return;
            }
            string checkColligationDetailId = Grid1.SelectedRowID;
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("CheckColligationDetailEdit.aspx?CheckColligationDetailId={0}", checkColligationDetailId, "编辑 - ")));
        }
        #endregion
        #region 删除
        /// 
        /// 批量删除
        /// 
        /// 
        /// 
        protected void btnMenuDelete_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length > 0)
            {
                foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                {
                    string rowID = Grid1.DataKeys[rowIndex][0].ToString();
                    var getV = BLL.Check_CheckColligationDetailService.GetCheckColligationDetailByCheckColligationDetailId(rowID);
                    if (getV != null)
                    {
                        BLL.LogService.AddSys_Log(this.CurrUser, getV.CheckItem, getV.CheckColligationDetailId, BLL.Const.ProjectCheckColligationMenuId, BLL.Const.BtnDelete);
                        BLL.Check_CheckColligationDetailService.DeleteCheckColligationDetailById(rowID);
                    }
                }
                checkColligationDetails = (from x in Funs.DB.View_Check_CheckColligationDetail where x.CheckColligationId == this.CheckColligationId orderby x.CheckItem select x).ToList();
                Grid1.DataSource = checkColligationDetails;
                Grid1.DataBind();
                ShowNotify("删除数据成功!(表格数据已重新绑定)", MessageBoxIcon.Success);
            }
        }
        #endregion
        #region 获取检查类型
        /// 
        /// 获取检查类型
        /// 
        /// 
        /// 
        protected string ConvertCheckItemType(object CheckItem)
        {
            return BLL.Technique_CheckItemDetailService.ConvertCheckItemType(CheckItem);
        }
        #endregion
        #region 附件上传
        /// 
        /// 上传附件
        /// 
        /// 
        /// 
        protected void btnAttachUrl_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.CheckColligationId))
            {
                SaveNew();
            }
            PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/CheckColligation&menuId={1}", this.CheckColligationId, BLL.Const.ProjectCheckColligationMenuId)));
        }
        #endregion
        #region 转换字符串
        /// 
        /// 转换整改完成情况
        /// 
        /// 
        /// 
        protected string ConvertCompleteStatus(object CompleteStatus)
        {
            if (CompleteStatus != null)
            {
                if (!string.IsNullOrEmpty(CompleteStatus.ToString()))
                {
                    bool completeStatus = Convert.ToBoolean(CompleteStatus.ToString());
                    if (completeStatus)
                    {
                        return "是";
                    }
                    else
                    {
                        return "否";
                    }
                }
            }
            return "";
        }
        #endregion
        #region Grid点击事件
        /// 
        /// Grid1行点击事件
        /// 
        /// 
        /// 
        protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
        {
            string checkColligationDetailId = Grid1.DataKeys[e.RowIndex][0].ToString();
            Model.Check_CheckColligationDetail detail = BLL.Check_CheckColligationDetailService.GetCheckColligationDetailByCheckColligationDetailId(checkColligationDetailId);
            if (e.CommandName == "click")
            {
                Model.Check_CheckColligationDetail newDetail = new Model.Check_CheckColligationDetail
                {
                    CheckColligationDetailId = SQLHelper.GetNewID(typeof(Model.Check_CheckColligationDetail)),
                    CheckColligationId = detail.CheckColligationId,
                    CheckItem = detail.CheckItem,
                    CheckContent = detail.CheckContent,
                    Unqualified = "隐患",
                    Suggestions = "整改",
                    CompleteStatus = true
                };
                BLL.Check_CheckColligationDetailService.AddCheckColligationDetail(newDetail);
                checkColligationDetails = (from x in Funs.DB.View_Check_CheckColligationDetail where x.CheckColligationId == this.CheckColligationId orderby x.CheckItem select x).ToList();
                Grid1.DataSource = checkColligationDetails;
                Grid1.DataBind();
                SetColor();
            }
        }
        #endregion
        protected void btnImport_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.CheckColligationId))
            {
                this.SaveData(BLL.Const.BtnSave);
            }
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("CheckColligationDetailIn.aspx?CheckColligationId={0}", this.CheckColligationId, "导入 - "), "导入", 1024, 560));
        }
    }
}