using BLL;
using FineUIPro.Web.DataShow;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.ZHGL.SubPackManage
{
    public partial class BaseSubPackPersonnel : PageBase
    {
        /// 
        /// tree中的选择单位
        /// 
        public string ToolUnitId
        {
            get
            {
                return (string)ViewState["ToolUnitId"];
            }
            set
            {
                ViewState["ToolUnitId"] = value;
            }
        }
        /// 
        /// tree中的选择队伍
        /// 
        public string ToolBranchTeamListId
        {
            get
            {
                return (string)ViewState["ToolBranchTeamListId"];
            }
            set
            {
                ViewState["ToolBranchTeamListId"] = value;
            }
        }
        /// 
        /// tree中的选择班组
        /// 
        public string ToolTeamId
        {
            get
            {
                return (string)ViewState["ToolTeamId"];
            }
            set
            {
                ViewState["ToolTeamId"] = value;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            // 表头过滤
            //FilterDataRowItem = FilterDataRowItemImplement;
            if (!IsPostBack)
            {
                Funs.DropDownPageSize(this.ddlPageSize);
                this.InitTreeMenu();
                BindGrid();
            }
        }
        /// 
        /// 过滤表头
        /// 
        /// 
        /// 
        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_Sort(object sender, GridSortEventArgs e)
        {
            BindGrid();
        }
        /// 
        /// 绑定数据
        /// 
        public void BindGrid()
        {
            DataTable tb = SubPackPersonnelData();
            Grid1.RecordCount = tb.Rows.Count;
            tb = GetFilteredTable(Grid1.FilteredData, tb);
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        /// 
        /// 分页显示条数下拉框
        /// 
        /// 
        /// 
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            BindGrid();
        }
        /// 
        /// 查询按钮事件
        /// 
        /// 
        /// 
        protected void btnQuery_Click(object sender, EventArgs e)
        {
            BindGrid();
        }
        protected void btnRset_Click(object sender, EventArgs e)
        {
            txtPersonName.Text =txtIdentityCard.Text = string.Empty;
            BindGrid();
        }
        /// 
        /// 数据查询
        /// 
        /// 
        protected DataTable SubPackPersonnelData()
        {
            string selectNode = this.tvProjectAndUnit.SelectedNodeID;
            //劳务班组
            string branchTeamListTeamId = string.Empty;
            string strSql = @"select a.SubPackPersonnelID,a.UnitId,a.PersonName,a.IdentityCard,a.Remark  "
                              + @",b.UnitName,c.BranchTeamListName,d.BranchTeamListTeamName,e.LaborTeamName  "
                              + @" from Base_SubPackPersonnel a  "
                              + @" left join Base_Unit b(NOLOCK) on a.UnitId=b.UnitId  "
                              + @" left join Base_BranchTeamList c(NOLOCK) on a.BranchTeamListId=c.BranchTeamListId  "
                              + @" left join Base_BranchTeamListTeam d(NOLOCK) on a.BranchTeamListTeamId=d.BranchTeamListTeamId  "
                              + @" left join Base_LaborTeam e(NOLOCK) on a.LaborTeamId=e.LaborTeamId  "
                              + @" Where 1=1 ";
            List listStr = new List();
            //以叶子结点条件,其它父级节点不要查询
            if (!string.IsNullOrWhiteSpace(selectNode))
            {
                string[] nodeArr = selectNode.Split('|');
                if (nodeArr.Length == 4)
                {
                    branchTeamListTeamId = nodeArr[0];
                    strSql += " AND d.BranchTeamListTeamId =@BranchTeamListTeamId ";
                    listStr.Add(new SqlParameter("@BranchTeamListTeamId", branchTeamListTeamId));
                }
                else
                {
                    strSql += " AND 1<>1 ";
                }
            }
            else {
                strSql += " AND 1<>1 ";
            }
            if (!string.IsNullOrWhiteSpace(txtPersonName.Text.Trim()))
            {
                strSql += " AND a.PersonName like '%'+ @personName + '%' ";
                listStr.Add(new SqlParameter("@personName", txtPersonName.Text.Trim()));
            }
            if (!string.IsNullOrWhiteSpace(txtIdentityCard.Text.Trim()))
            {
                strSql += " AND a.IdentityCard like '%'+ @IdentityCard + '%' ";
                listStr.Add(new SqlParameter("@IdentityCard", txtIdentityCard.Text.Trim()));
            }
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            return tb;
        }
        #region 点击TreeView
        /// 
        /// 点击TreeView
        /// 
        /// 
        /// 
        protected void tvProjectAndUnit_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            BindGrid();
        }
        #endregion
        /// 
        /// 加载树
        /// 
        private void InitTreeMenu()
        {
            this.tvProjectAndUnit.Nodes.Clear();
            var unit = (from x in BLL.Funs.DB.Base_Unit
                        join y in BLL.Funs.DB.Base_BranchTeamList on x.UnitId equals y.UnitId
                        group x by new { x.UnitId, x.UnitName } into g
                        select new
                        {
                            UnitName = g.Key.UnitName,
                            UnitId = g.Key.UnitId,
                        }).ToList();
            foreach (var item in unit)
            {
                TreeNode rootNode = new TreeNode();
                rootNode = new TreeNode
                {
                    Text = item.UnitName,
                    NodeID = item.UnitId,
                    ToolTip = "所属分包商",
                    CommandName = "unit"
                };
                rootNode.EnableClickEvent = true;
                this.tvProjectAndUnit.Nodes.Add(rootNode);
            }
        }
        protected void tvProjectAndUnit_NodeLazyLoad(object sender, TreeNodeEventArgs e)
        {
            DynamicAppendNode(e.Node);
        }
        private void DynamicAppendNode(TreeNode parentNode)
        {
            // 防止浏览器端多次快速点击
            parentNode.Nodes.Clear();
            TreeNode node = null;
            switch (parentNode.CommandName)
            {
                case "unit":
                    GetBranchTeamList(parentNode.Nodes, parentNode);
                    break;
                case "branchTeamList":
                    GetLaborTeam(parentNode.Nodes, parentNode);
                    break;
                case "laborTeam":
                    GetBranchTeamListTeam(parentNode.Nodes, parentNode);
                    break;
            }
            if (parentNode.Nodes.Count > 0)
                parentNode.Leaf = false;
            else
                parentNode.Leaf = true;
        }
        /// 
        /// 加载劳务公司
        /// 
        /// 
        /// 
        private void GetBranchTeamList(TreeNodeCollection nodes, TreeNode parentNode)
        {
            var branchTeamList = (from x in BLL.Funs.DB.Base_BranchTeamList
                                  where x.UnitId == parentNode.NodeID
                                  select new
                                  {
                                      BranchTeamListId = x.BranchTeamListId,
                                      BranchTeamListName = x.BranchTeamListName,
                                  }).Distinct().ToList();
            TreeNode newNode = null;
            foreach (var itme in branchTeamList)
            {
                newNode = new TreeNode
                {
                    Text = itme.BranchTeamListName,
                    NodeID = itme.BranchTeamListId + "|" + parentNode.NodeID,
                    ToolTip = "劳务公司",
                    CommandName = "branchTeamList"
                };
                newNode.EnableClickEvent = true;
                nodes.Add(newNode);
            }
        }
        /// 
        /// 加载劳务队伍
        /// 
        /// 
        /// 
        private void GetLaborTeam(TreeNodeCollection nodes, TreeNode parentNode)
        {
            string id = parentNode.NodeID.Split('|')[0];
            var branchTeamList = (from x in BLL.Funs.DB.Base_LaborTeam
                                  where x.BranchTeamListId == id
                                  select new
                                  {
                                      LaborTeamId = x.LaborTeamId,
                                      LaborTeamName = x.LaborTeamName,
                                  }).Distinct().ToList();
            TreeNode newNode = null;
            foreach (var itme in branchTeamList)
            {
                newNode = new TreeNode
                {
                    Text = itme.LaborTeamName,
                    NodeID = itme.LaborTeamId + "|" + parentNode.NodeID,
                    ToolTip = "劳务队伍",
                    CommandName = "laborTeam"
                };
                newNode.EnableClickEvent = true;
                nodes.Add(newNode);
            }
        }
        /// 
        /// 加载劳务队伍
        /// 
        /// 
        /// 
        private void GetBranchTeamListTeam(TreeNodeCollection nodes, TreeNode parentNode)
        {
            string id = parentNode.NodeID.Split('|')[0];
            var branchTeamList = (from x in BLL.Funs.DB.Base_BranchTeamListTeam
                                  where x.LaborTeamId == id
                                  select new
                                  {
                                      BranchTeamListTeamId = x.BranchTeamListTeamId,
                                      BranchTeamListTeamName = x.BranchTeamListTeamName,
                                  }).Distinct().ToList();
            TreeNode newNode = null;
            foreach (var itme in branchTeamList)
            {
                newNode = new TreeNode
                {
                    Text = itme.BranchTeamListTeamName,
                    NodeID = itme.BranchTeamListTeamId + "|" + parentNode.NodeID,
                    ToolTip = "劳务班组",
                    CommandName = "branchTeamListTeam",
                    Leaf = true
                };
                newNode.EnableClickEvent = true;
                nodes.Add(newNode);
            }
        }
        protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
        {
            if (e.CommandName == "ActionProject" )
            {
                if (Grid1.SelectedRowIndexArray.Length == 0)
                {
                    Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                    return;
                }
                string id = Grid1.SelectedRowID.Split(',')[0];
              
                PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SubPackPersonnelProject.aspx?SubPackPersonnelID={0}", id)));
            }
        }
        /// 
        /// Grid行双击事件
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                return;
            }
            string id = Grid1.SelectedRowID.Split(',')[0];
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SubPackPersonnelProject.aspx?SubPackPersonnelID={0}", id)));
        }
    }
}