using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.HSSE.Solution
{
    public partial class ExpertArgumentList : PageBase
    {
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ////权限按钮方法
                this.GetButtonPower();
                ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
                // 绑定表格
                BindGrid();
            }
        }
        /// 
        /// 绑定数据
        /// 
        private void BindGrid()
        {
            string strSql = @"SELECT Larger.LargerHazardListId,Larger.HazardCode,Larger.ProjectId,Larger.RecordTime,Larger.RecardManId,sysUser.UserName as RecardManName,Larger.Remark,Larger.States,Larger.VersionNo"
                          + @",(CASE WHEN Larger.States=1 THEN '已完成' WHEN Larger.States=-1 THEN '已作废' ELSE '待提交' END) AS StatesName"
                          + @" FROM dbo.Solution_LargerHazardList AS Larger"
                          + @" LEFT JOIN Sys_User AS sysUser on Larger.RecardManId=sysUser.UserId WHERE 1=1 ";
            List listStr = new List();
            strSql += " AND Larger.ProjectId = @ProjectId";
            if (!string.IsNullOrEmpty(Request.Params["projectId"]))  ///是否文件柜查看页面传项目值
            {
                listStr.Add(new SqlParameter("@ProjectId", Request.Params["projectId"]));
                strSql += " AND Larger.States = @States";  ///状态为已完成
                listStr.Add(new SqlParameter("@States", BLL.Const.State_1));
            }
            else
            {
                listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
            }
            if (!string.IsNullOrEmpty(this.txtHazardCode.Text.Trim()))
            {
                strSql += " AND Larger.HazardCode LIKE @HazardCode";
                listStr.Add(new SqlParameter("@HazardCode", "%" + this.txtHazardCode.Text.Trim() + "%"));
            }
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            Grid1.RecordCount = tb.Rows.Count;
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        #endregion
        #region 查询
        /// 
        /// 查询
        /// 
        /// 
        /// 
        protected void TextBox_TextChanged(object sender, EventArgs e)
        {
            this.BindGrid();
        }
        #endregion
        #region 表排序、分页、关闭窗口
        /// 
        /// 分页
        /// 
        /// 
        /// 
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            Grid1.PageIndex = e.NewPageIndex;
            BindGrid();
        }
        /// 
        /// 排序
        /// 
        /// 
        /// 
        protected void Grid1_Sort(object sender, GridSortEventArgs e)
        {
            BindGrid();
        }
        /// 
        /// 分页显示条数下拉框
        /// 
        /// 
        /// 
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            BindGrid();
        }
        /// 
        /// 关闭弹出窗
        /// 
        /// 
        /// 
        protected void Window1_Close(object sender, WindowCloseEventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region Grid双击事件
        /// 
        /// Grid行双击事件
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            btnMenuModify_Click(null, null);
        }
        #endregion
        #region 编辑
        /// 
        /// 编辑按钮
        /// 
        /// 
        /// 
        protected void btnMenuModify_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                return;
            }
            var getRecord = BLL.ExpertArgumentService.GetLargerHazardListById(Grid1.SelectedRowID);
            if (getRecord != null)
            {
                if (!this.btnMenuModify.Hidden && (getRecord.States == BLL.Const.State_0 || string.IsNullOrEmpty(getRecord.States)))   ////双击事件 编辑权限有:编辑页面,无:查看页面 或者状态是完成时查看页面
                {
                    PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ExpertArgumentListEdit.aspx?LargerHazardListId={0}", getRecord.LargerHazardListId, "查看 - ")));
                }
                else
                {
                    PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ExpertArgumentListView.aspx?LargerHazardListId={0}", getRecord.LargerHazardListId, "编辑 - ")));
                }
            }
        }
        #endregion
        #region 删除
        /// 
        ///  删除
        /// 
        /// 
        /// 
        protected void btnMenuDel_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length > 0)
            {
                foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                {
                    string rowID = Grid1.DataKeys[rowIndex][0].ToString();
                    var getRecord = BLL.ExpertArgumentService.GetLargerHazardListById(rowID);
                    if (getRecord != null)
                    {
                        BLL.LogService.AddSys_Log(this.CurrUser, getRecord.HazardCode, getRecord.LargerHazardListId, BLL.Const.ProjectExpertArgumentMenuId, BLL.Const.BtnDelete);
                        BLL.ExpertArgumentService.DeleteLargerHazardListItemByLargerHazardListId(rowID);
                        BLL.ExpertArgumentService.DeleteLargerHazardListById(rowID);
                    }
                }
                BindGrid();
                ShowNotify("删除数据成功!(表格数据已重新绑定)");
            }
        }
        #endregion
        #region 获取按钮权限
        /// 
        /// 获取按钮权限
        /// 
        /// 
        /// 
        private void GetButtonPower()
        {
            if (Request.Params["value"] == "0")
            {
                return;
            }
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.ProjectExpertArgumentMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnAdd))
                {
                    this.btnNew.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnModify))
                {
                    this.btnMenuModify.Hidden = false;
                    this.btnUpgraded.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnDelete))
                {
                    this.btnMenuDel.Hidden = false;
                }
            }
        }
        #endregion
        #region 导出按钮
        /// 导出按钮
        /// 
        /// 
        /// 
        protected void btnOut_Click(object sender, EventArgs e)
        {
            Response.ClearContent();
            string filename = Funs.GetNewFileName();
            Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("危大工程清单" + filename, System.Text.Encoding.UTF8) + ".xls");
            Response.ContentType = "application/excel";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            this.Grid1.PageSize = this.Grid1.RecordCount;
            this.BindGrid();
            Response.Write(GetGridTableHtml(Grid1));
            Response.End();
        }
        #endregion
        protected void btnUpgraded_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                return;
            }
            var getRecord = BLL.ExpertArgumentService.GetLargerHazardListById(Grid1.SelectedRowID);
            if (getRecord != null && getRecord.States == Const.State_1)
            {
                string newV = "V1.0";
                var getV = getRecord.VersionNo;
                if (!string.IsNullOrEmpty(getV))
                {
                    try
                    {
                        string a = Funs.GetStrListByStr(getV.Substring(1), '.')[0];
                        newV = "V" + (Funs.GetNewIntOrZero(a) + 1) + ".0";
                    }
                    catch (Exception ex)
                    { }
                }
                string NewId = SQLHelper.GetNewID();
                Model.Solution_LargerHazardList newLargerHazardList = new Model.Solution_LargerHazardList
                {
                    LargerHazardListId = NewId,
                    ProjectId = getRecord.ProjectId,
                    RecardManId = this.CurrUser.UserId,
                    RecordTime = DateTime.Now,
                    Remark = getRecord.Remark,
                    VersionNo = newV,
                    States =Const.State_0,
                };
                newLargerHazardList.HazardCode=  BLL.CodeRecordsService.ReturnCodeByMenuIdProjectId(BLL.Const.ProjectExpertArgumentMenuId, this.CurrUser.LoginProjectId, this.CurrUser.UnitId);
                BLL.ExpertArgumentService.AddLargerHazardList(newLargerHazardList);
                var getItems = Funs.DB.Solution_LargerHazardListItem.Where(x => x.LargerHazardListId == getRecord.LargerHazardListId);                         
                if (getItems.Count() > 0)
                {
                    foreach (var item in getItems)
                    {
                        Model.Solution_LargerHazardListItem newItem = new Model.Solution_LargerHazardListItem
                        {
                            LargerHazardListItemId = SQLHelper.GetNewID(),
                            SortIndex = item.SortIndex,
                            LargerHazardListId = NewId,
                            UnitWorkId = item.UnitWorkId,
                            WorkPackageId = item.WorkPackageId,
                            WorkPackageSize = item.WorkPackageSize,
                            ExpectedStartTime = item.ExpectedStartTime,
                            ExpectedEndTime = item.ExpectedEndTime,
                            IsArgument = item.IsArgument,
                            UnitId = item.UnitId,
                        };
                        Funs.DB.Solution_LargerHazardListItem.InsertOnSubmit(newItem);
                        Funs.DB.SubmitChanges();
                    }
                }
                this.BindGrid();
                PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ExpertArgumentListEdit.aspx?LargerHazardListId={0}", NewId, "查看 - ")));
            }
            else
            {
                Alert.ShowInTop("未提交单据不能升版本!", MessageBoxIcon.Warning);
                return;
            }
        }
        protected void btnNew_Click(object sender, EventArgs e)
        {
            string NewId = SQLHelper.GetNewID();
            Model.Solution_LargerHazardList newLargerHazardList = new Model.Solution_LargerHazardList
            {
                LargerHazardListId = NewId,
                ProjectId =this.CurrUser.LoginProjectId,
                RecardManId = this.CurrUser.UserId,
                RecordTime = DateTime.Now,
                VersionNo = "V1.0",
                States = Const.State_0,
            };
            newLargerHazardList.HazardCode = BLL.CodeRecordsService.ReturnCodeByMenuIdProjectId(BLL.Const.ProjectExpertArgumentMenuId, this.CurrUser.LoginProjectId, this.CurrUser.UnitId);
            BLL.ExpertArgumentService.AddLargerHazardList(newLargerHazardList);
            this.BindGrid();
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ExpertArgumentListEdit.aspx?LargerHazardListId={0}", NewId, "新增 - ")));
        }
    }
}