using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.HSSE.InformationProject
{
    public partial class ProjectFolder : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
                this.ProjectFolderDataBind();//加载树
                this.GetButtonPower();
            }
        }
        /// 
        /// 绑定明细列表数据
        /// 
        private void BindGrid()
        {
            this.Grid1.DataSource = null;
            this.Grid1.DataBind();
            if (!string.IsNullOrEmpty(this.tvProjectFolder.SelectedNodeID))
            {
                string strSql = @"SELECT Item.ProjectFolderItemId,Item.ProjectFolderId,CodeRecords.Code,Item.Title,Item.FileContent,Item.CompileMan,UserName AS CompileManName,Item.CompileDate,Item.AttachUrl"
                              + @" FROM dbo.InformationProject_ProjectFolderItem AS Item"
                              + @" LEFT JOIN Sys_CodeRecords AS CodeRecords ON Item.ProjectFolderItemId=CodeRecords.DataId"
                              + @" LEFT JOIN Sys_User ON CompileMan=UserId WHERE ProjectFolderId=@ProjectFolderId";
                SqlParameter[] parameter = new SqlParameter[]
                    {
                        new SqlParameter("@ProjectFolderId",this.tvProjectFolder.SelectedNodeID)
                    };
                DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
                this.Grid1.RecordCount = tb.Rows.Count;
                var table = this.GetPagedDataTable(this.Grid1, tb);
                this.Grid1.DataSource = table;
                this.Grid1.DataBind();
            }
        }
        #region 绑定树节点
        /// 
        /// 绑定树节点
        /// 
        private void ProjectFolderDataBind()
        {
            this.tvProjectFolder.Nodes.Clear();
            this.tvProjectFolder.SelectedNodeID = string.Empty;
            TreeNode rootNode = new TreeNode();//定义根节点
            var project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
            if (project != null)
            {
                rootNode.Text = "[" + project.ProjectName + "]文件夹";
            }
            else
            {
                rootNode.Text = "项目文件夹";
            }
            rootNode.Expanded = true;
            rootNode.NodeID = "0";
            this.tvProjectFolder.Nodes.Add(rootNode);
            var ProjectFolderList = BLL.ProjectFolderService.GetProjectFolderListByProjectId(this.CurrUser.LoginProjectId);
            if (ProjectFolderList.Count() > 0)
            {
                this.GetNodes(ProjectFolderList, rootNode);
            }
        }
        #region  遍历节点方法
        /// 
        /// 遍历节点方法
        /// 
        /// 节点集合
        /// 父节点
        private void GetNodes(List projectFolderList, TreeNode node)
        {
            var ProjectFolders = projectFolderList.Where(x => x.SupProjectFolderId == node.NodeID);
            foreach (var item in ProjectFolders)
            {
                TreeNode newNode = new TreeNode
                {
                    Text = "[" + item.Code + "]" + item.Title,
                    NodeID = item.ProjectFolderId
                };
                if (item.IsEndLever == true)
                {
                    newNode.EnableClickEvent = true;
                }
                node.Nodes.Add(newNode);
                if (!item.IsEndLever.HasValue || item.IsEndLever == false)
                {
                    GetNodes(projectFolderList, newNode);
                }
            }
        }
        #endregion
        #endregion
        #region 点击TreeView
        /// 
        /// 点击TreeView
        /// 
        /// 
        /// 
        protected void tvProjectFolder_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            this.BindGrid();
        }
        #endregion
        #region gv排序翻页
        #region 页索引改变事件
        /// 
        /// 页索引改变事件
        /// 
        /// 
        /// 
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region 排序
        /// 
        /// 排序
        /// 
        /// 
        /// 
        protected void Grid1_Sort(object sender, GridSortEventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region 分页选择下拉改变事件
        /// 
        /// 分页选择下拉改变事件
        /// 
        /// 
        /// 
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Grid1.PageSize = Convert.ToInt32(this.ddlPageSize.SelectedValue);
            BindGrid();
        }
        #endregion
        #endregion
        #region 右键增加、修改、删除项目文件夹方法
        /// 
        /// 增加
        /// 
        /// 
        /// 
        protected void btnMenuNew_Click(object sender, EventArgs e)
        {
            if (this.tvProjectFolder.SelectedNode != null)
            {
                var ProjectFolder = BLL.ProjectFolderService.GetProjectFolderByID(this.tvProjectFolder.SelectedNodeID);
                if (ProjectFolder != null && ProjectFolder.IsEndLever == true)
                {
                    Alert.ShowInTop("选择的项已是末级!", MessageBoxIcon.Warning);
                    return;
                }
                else
                {
                    PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("ProjectFolderEdit.aspx?SupProjectFolderId={0}", this.tvProjectFolder.SelectedNodeID, "新增 - ")));
                }
            }
            else
            {
                ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
                return;
            }
        }
        /// 
        /// 右键修改事件
        /// 
        /// 
        /// 
        protected void btnMenuModify_Click(object sender, EventArgs e)
        {
            if (this.tvProjectFolder.SelectedNode != null && this.tvProjectFolder.SelectedNodeID != "0")
            {
                var ProjectFolder = BLL.ProjectFolderService.GetProjectFolderByID(this.tvProjectFolder.SelectedNodeID);
                if (ProjectFolder != null)
                {
                    PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("ProjectFolderEdit.aspx?ProjectFolderId={0}", ProjectFolder.ProjectFolderId, "编辑 - ")));
                }
            }
            else
            {
                ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
                return;
            }
        }
        /// 
        /// 右键删除事件
        /// 
        /// 
        /// 
        protected void btnMenuDel_Click(object sender, EventArgs e)
        {
            if (this.tvProjectFolder.SelectedNode != null)
            {
                var ProjectFolder = BLL.ProjectFolderService.GetProjectFolderByID(this.tvProjectFolder.SelectedNodeID);
                if (ProjectFolder != null && BLL.ProjectFolderService.IsDeleteProjectFolder(ProjectFolder.ProjectFolderId))
                {
                    BLL.LogService.AddSys_Log(this.CurrUser, ProjectFolder.Code, ProjectFolder.ProjectFolderId, BLL.Const.ProjectFolderMenuId, BLL.Const.BtnDelete);
                    BLL.ProjectFolderService.DeleteProjectFolderByID(ProjectFolder.ProjectFolderId);
                    this.ProjectFolderDataBind();
                    Alert.ShowInTop("删除成功!");
                }
                else
                {
                    Alert.ShowInTop("存在下级菜单或已增加明细,不允许删除!", MessageBoxIcon.Warning);
                    return;
                }
            }
            else
            {
                ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
                return;
            }
        }
        #endregion
        #region 增加、修改、删除项目文件夹明细事件
        /// 
        /// 增加明细
        /// 
        /// 
        /// 
        protected void btnNewDetail_Click(object sender, EventArgs e)
        {
            if (tvProjectFolder.SelectedNode != null)
            {
                var ProjectFolder = BLL.ProjectFolderService.GetProjectFolderByID(this.tvProjectFolder.SelectedNodeID);
                if (ProjectFolder != null && ProjectFolder.IsEndLever == true)
                {
                    PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectFolderItemEdit.aspx?ProjectFolderId={0}", tvProjectFolder.SelectedNodeID, "新增 - ")));
                }
                else
                {
                    Alert.ShowInTop("请选择最后一级节点添加!", MessageBoxIcon.Warning);
                    return;
                }
            }
            else
            {
                Alert.ShowInTop("请选择项目文件夹!", MessageBoxIcon.Warning);
            }
        }
        /// 
        /// 编辑
        /// 
        /// 
        /// 
        protected void btnMenuModifyDetail_Click(object sender, EventArgs e)
        {
            EditData();
        }
        /// 
        /// 编辑数据方法
        /// 
        private void EditData()
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInParent("请至少选择一条记录!");
                return;
            }
            if (this.btnMenuModifyDetail.Hidden)
            {
                PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectFolderItemView.aspx?ProjectFolderItemId={0}", Grid1.SelectedRowID, "修改 - ")));
            }
            else
            {
                PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectFolderItemEdit.aspx?ProjectFolderItemId={0}", Grid1.SelectedRowID, "修改 - ")));
            }
        }
        /// 
        /// 双击修改
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            EditData();
        }
        /// 
        /// 删除明细方法
        /// 
        /// 
        /// 
        protected void btnMenuDelDetail_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length > 0)
            {
                foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                {
                    var item = BLL.ProjectFolderItemService.GetProjectFolderItemByID(Grid1.DataKeys[rowIndex][0].ToString());
                    if (item != null)
                    {
                        BLL.LogService.AddSys_Log(this.CurrUser, item.Code, item.ProjectFolderItemId, BLL.Const.ProjectFolderMenuId, BLL.Const.BtnDelete);
                        BLL.ProjectFolderItemService.DeleteProjectFolderItemByID(item.ProjectFolderItemId);
                    }
                }
                this.BindGrid();
                ShowNotify("删除数据成功!", MessageBoxIcon.Success);
            }
        }
        #endregion
        #region 关闭弹出窗口
        /// 
        /// 关闭弹出窗口
        /// 
        /// 
        /// 
        protected void Window1_Close(object sender, WindowCloseEventArgs e)
        {
            BindGrid();
        }
        protected void Window2_Close(object sender, WindowCloseEventArgs e)
        {
            ProjectFolderDataBind();
        }
        #endregion      
        #region 获取按钮权限
        /// 
        /// 获取按钮权限
        /// 
        /// 
        /// 
        private void GetButtonPower()
        {
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.ProjectFolderMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnAdd))
                {
                    this.btnNewDetail.Hidden = false;
                    this.btnMenuNew.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnModify))
                {
                    this.btnMenuModify.Hidden = false;
                    this.btnMenuModifyDetail.Hidden = false;
                }
                if (buttonList.Contains(BLL.Const.BtnDelete))
                {
                    this.btnMenuDel.Hidden = false;
                    this.btnMenuDelDetail.Hidden = false;
                }
            }
        }
        #endregion
    }
}