using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using BLL;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ZHGL.HSSESystem
{
    public partial class HSSEManage : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ////权限按钮方法
                this.GetButtonPower();
                InitTreeMenu();
            }
        }
        /// 
        /// 加载树
        /// 
        private void InitTreeMenu()
        {
            this.trHSSEManage.Nodes.Clear();
            this.trHSSEManage.ShowBorder = false;
            this.trHSSEManage.ShowHeader = false;
            this.trHSSEManage.EnableIcons = true;
            this.trHSSEManage.AutoScroll = true;
            this.trHSSEManage.EnableSingleClickExpand = true;
            TreeNode rootNode = new TreeNode
            {
                Text = "安全管理机构",
                NodeID = "0",
                Expanded = true
            };
            this.trHSSEManage.Nodes.Add(rootNode);
            BoundTree(rootNode.Nodes, "0");
        }
        /// 
        /// 加载树
        /// 
        /// 
        /// 
        private void BoundTree(TreeNodeCollection nodes, string menuId)
        {
            var dt = BLL.HSSEManageService.GetHSSEManageBySupHSSEManageId(menuId);
            if (dt.Count() > 0)
            {
                TreeNode tn = null;
                foreach (var dr in dt)
                {
                    tn = new TreeNode
                    {
                        Text = dr.HSSEManageName,
                        NodeID = dr.HSSEManageId,
                        EnableClickEvent = true
                    };
                    //tn.ToolTip = "编号:" + dr.HSSEManageCode + ";
机构名称:" + dr.HSSEManageName + ";
职责:" + dr.Duties + ";
组成文件:" + dr.BundleFile + ";
机构人员:" + dr.AgencyPersonnel;
                    nodes.Add(tn);
                    BoundTree(tn.Nodes, dr.HSSEManageId);
                }
            }
        }
        #region 关闭窗口
        /// 
        /// 关闭窗口
        /// 
        /// 
        /// 
        protected void Window1_Close(object sender, WindowCloseEventArgs e)
        {
            InitTreeMenu();
        }
        #endregion       
        /// 
        /// 增加数节点
        /// 
        /// 
        /// 
        protected void btnNew_Click(object sender, EventArgs e)
        {
            if (this.trHSSEManage.SelectedNode != null)
            {
                Model.HSSESystem_HSSEManage m = BLL.HSSEManageService.GetHSSEManageById(this.trHSSEManage.SelectedNode.NodeID);
                if (m != null || this.trHSSEManage.SelectedNode.NodeID == "0")   //根节点或者非末级节点,可以增加
                {
                    PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("HSSEManageEdit.aspx?SupHSSEManageId={0}", this.trHSSEManage.SelectedNode.NodeID, "编辑 - ")));
                }
                else
                {
                    ShowNotify("选择的项已是末级!", MessageBoxIcon.Warning);
                }
            }
            else
            {
                ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
            }
        }
        /// 
        /// 修改
        /// 
        /// 
        /// 
        protected void btnEdit_Click(object sender, EventArgs e)
        {
            if (this.trHSSEManage.SelectedNode != null)
            {
                if (this.trHSSEManage.SelectedNode.NodeID != "0")   //非根节点可以编辑
                {
                    PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("HSSEManageEdit.aspx?HSSEManageId={0}", this.trHSSEManage.SelectedNode.NodeID, "编辑 - ")));
                }
                else
                {
                    ShowNotify("根节点无法编辑!", MessageBoxIcon.Warning);
                }
            }
            else
            {
                ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
            }
        }
        /// 
        /// 删除
        /// 
        /// 
        /// 
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            if (this.trHSSEManage.SelectedNode != null)
            {
                var q = BLL.HSSEManageItemService.GetHSSEManageItemList(this.trHSSEManage.SelectedNode.NodeID);
                if (q.Count() == 0)
                {
                    BLL.HSSEManageService.DeleteHSSEManage(this.trHSSEManage.SelectedNode.NodeID);
                    InitTreeMenu();
                }
                else
                {
                    ShowNotify("存在下级菜单或是根节点,不允许删除!", MessageBoxIcon.Warning);
                }
            }
            else
            {
                ShowNotify("请选择删除项!", MessageBoxIcon.Warning);
            }
        }
        #region 获取按钮权限
        /// 
        /// 获取按钮权限
        /// 
        /// 
        /// 
        private void GetButtonPower()
        {
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.HSSEManageMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnAdd))
                {
                    this.btnNew.Hidden = false;
                    this.btnNewItem.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnModify))
                {
                    this.btnEdit.Hidden = false;
                    this.btnEditItem.Hidden = false;
                    this.btnMenuEdit.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnDelete))
                {
                    this.btnDelete.Hidden = false;
                    this.btnDeleteItem.Hidden = false;
                    this.btnMenuDelete.Hidden = false;
                }
            }
        }
        #endregion
        protected void Grid1_FilterChange(object sender, EventArgs e)
        {
            BindGrid();
        }
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            Grid1.PageIndex = e.NewPageIndex;
            BindGrid();
        }
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 编辑明细按钮
        /// 
        /// 
        /// 
        protected void btnEditItem_Click(object sender, EventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 右键编辑事件
        /// 
        /// 
        /// 
        protected void btnMenuEdit_Click(object sender, EventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 编辑数据方法
        /// 
        private void EditData()
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                return;
            }
            string hSSEManageItemId = Grid1.SelectedRowID;
            PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("HSSEManageItemEdit.aspx?HSSEManageItemId={0}", hSSEManageItemId, "编辑 - ")));
        }
        /// 
        /// Grid1排序
        /// 
        /// 
        /// 
        protected void Grid1_Sort(object sender, GridSortEventArgs e)
        {
            Grid1.SortDirection = e.SortDirection;
            Grid1.SortField = e.SortField;
            BindGrid();
        }
        /// 
        /// 分页下拉选择事件
        /// 
        /// 
        /// 
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            BindGrid();
        }
        /// 
        /// 增加明细
        /// 
        /// 
        /// 
        protected void btnNewItem_Click(object sender, EventArgs e)
        {
            if (this.trHSSEManage.SelectedNode != null && !string.IsNullOrEmpty(this.trHSSEManage.SelectedNode.NodeID) && this.trHSSEManage.SelectedNode.NodeID != "0")
            {
                PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("HSSEManageItemEdit.aspx?HSSEManageId={0}", this.trHSSEManage.SelectedNode.NodeID, "编辑 - ")));
            }
            else
            {
                ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
            }
        }
        /// 
        /// 删除明细按钮
        /// 
        /// 
        /// 
        protected void btnDeleteItem_Click(object sender, EventArgs e)
        {
            this.DeleteData();
        }
        /// 
        /// 右键删除事件
        /// 
        /// 
        /// 
        protected void btnMenuDelete_Click(object sender, EventArgs e)
        {
            this.DeleteData();
        }
        /// 
        /// 删除方法
        /// 
        private void DeleteData()
        {
            if (Grid1.SelectedRowIndexArray.Length > 0)
            {
                foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                {
                    string rowID = Grid1.DataKeys[rowIndex][0].ToString();
                    var getV = BLL.HSSEManageItemService.GetHSSEManageItemById(rowID);
                    if (getV != null)
                    {
                        BLL.LogService.AddSys_Log(this.CurrUser, getV.Names, getV.HSSEManageItemId, BLL.Const.HSSEManageMenuId, BLL.Const.BtnDelete);
                        BLL.HSSEManageItemService.DeleteHSSEManageItem(rowID);
                    }
                }
                BindGrid();
                ShowNotify("删除数据成功!");
            }
        }
        /// 
        /// 关闭窗口
        /// 
        /// 
        /// 
        protected void Window2_Close(object sender, WindowCloseEventArgs e)
        {
            BindGrid();
        }
        /// 
        /// 加载Grid
        /// 
        private void BindGrid()
        {
            string strSql = "select * from HSSESystem_HSSEManageItem where HSSEManageId=@HSSEManageId order by SortIndex";
            SqlParameter[] parameter = new SqlParameter[]
                    {
                        new SqlParameter("@HSSEManageId",this.trHSSEManage.SelectedNode.NodeID)
                    };
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            Grid1.RecordCount = tb.Rows.Count;
            //tb = GetFilteredTable(Grid1.FilteredData, tb);
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        /// 
        /// Tree点击事件
        /// 
        /// 
        /// 
        protected void trHSSEManage_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            BindGrid();
        }
        #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 = 500;
            this.BindGrid();
            Response.Write(GetGridTableHtml(Grid1));
            Response.End();
        }
        /// 
        /// 导出方法
        /// 
        /// 
        /// 
        private string GetGridTableHtml(Grid grid)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("");
            sb.Append("
");
            sb.Append("");
            foreach (GridColumn column in grid.Columns)
            {
                sb.AppendFormat("| {0}", column.HeaderText);
            }
            sb.Append(" | 
");
            foreach (GridRow row in grid.Rows)
            {
                sb.Append("");
                foreach (GridColumn column in grid.Columns)
                {
                    string html = row.Values[column.ColumnIndex].ToString();
                    if (column.ColumnID == "tfNumber")
                    {
                        html = (row.FindControl("lblNumber") as AspNet.Label).Text;
                    }
                    sb.AppendFormat("| {0}", html);
                }
                sb.Append(" | 
");
            }
            sb.Append("
");
            return sb.ToString();
        }
        #endregion        
    }
}