using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.SqlClient;
using System.Data;
using BLL;

namespace FineUIPro.Web.common.ProjectSet
{
    public partial class ProjectWelder : PageBase
    {
        #region 加载
        /// <summary>
        /// 加载页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.drpProjectId.DataTextField = "ProjectCode";
                this.drpProjectId.DataValueField = "ProjectId";
                this.drpProjectId.DataSource = BLL.Base_ProjectService.GetProjectListByUserIdAndState(this.CurrUser.UserId, BLL.Const._False, CurrUser.LoginProjectArea);
                this.drpProjectId.DataBind();
                Funs.FineUIPleaseSelect(this.drpProjectId, Resources.Lan.PleaseSelect);

                InitTreeMenu();//加载树
                ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
            }
        }

        /// <summary>
        /// 加载树
        /// </summary>
        private void InitTreeMenu()
        {
            this.tvProject.Nodes.Clear();
            List<Model.Base_Project> projectLists = BLL.Base_ProjectService.GetProjectListByUserIdAndState(this.CurrUser.UserId, Const._False, CurrUser.LoginProjectArea);
            if (this.drpProjectId.SelectedValue != BLL.Const._Null)
            {
                projectLists = projectLists.Where(e => e.ProjectId == this.drpProjectId.SelectedValue).ToList();
            }
            if (projectLists.Count() > 0)
            {
                TreeNode tn = null;
                foreach (var q in projectLists)
                {
                    tn = new TreeNode();
                    tn.Text = "[" + q.ProjectCode + "]" + q.ProjectName;
                    tn.NodeID = q.ProjectId;
                    tn.EnableClickEvent = true;
                    this.tvProject.Nodes.Add(tn);
                }

            }
        }

        /// <summary>
        /// 选择项目
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void drpProjectId_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.InitTreeMenu();
        }
        #endregion

        #region 点击TreeView
        /// <summary>
        /// 点击TreeView
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void tvProject_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            if (this.tvProject.SelectedNodeID != "0" && this.tvProject.SelectedNode != null)
            {
                BindGrid();
            }
        }
        #endregion

        #region 绑定数据
        /// <summary>
        /// 绑定数据
        /// </summary>
        private void BindGrid()
        {
            string strSql = "SELECT ProjectWelder.ProjectWelderId,ProjectWelder.WelderId,Unit.UnitName,ProjectWelder.ProjectId,ProjectWelder.TeamGroupId,Welder.WelderCode,Welder.WelderName,TeamGroup.TeamGroupCode,TeamGroup.TeamGroupName "
                + @" FROM Welder_ProjectWelder AS ProjectWelder"
                + @" LEFT JOIN Welder_Welder AS Welder ON Welder.WelderId=ProjectWelder.WelderId "
                + @" LEFT JOIN Welder_TeamGroup AS TeamGroup ON TeamGroup.TeamGroupId=ProjectWelder.TeamGroupId"
                + @" LEFT JOIN Base_Unit AS Unit ON Unit.UnitId=ProjectWelder.UnitId"
                + @" WHERE ProjectWelder.ProjectId=@ProjectId ";
            SqlParameter[] parameter = new SqlParameter[]       
                    {
                        new SqlParameter("@ProjectId",this.tvProject.SelectedNodeID)
                    };

            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);

            // 2.获取当前分页数据
            //var table = this.GetPagedDataTable(Grid1, tb1);
            Grid1.RecordCount = tb.Rows.Count;
            //tb = GetFilteredTable(Grid1.FilteredData, tb);
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        #endregion

        #region 过滤表头
        /// <summary>
        /// 过滤表头
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Grid1_FilterChange(object sender, EventArgs e)
        {
            BindGrid();
        }
        #endregion

        #region 分页
        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            Grid1.PageIndex = e.NewPageIndex;
            BindGrid();
        }

        /// <summary>
        /// 分页显示条数下拉框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            BindGrid();
        }
        #endregion

        #region 排序
        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
        {
            Grid1.SortDirection = e.SortDirection;
            Grid1.SortField = e.SortField;
            BindGrid();
        }
        #endregion

        #region 关闭窗口
        /// <summary>
        /// 关闭窗口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Window1_Close(object sender, EventArgs e)
        {
            BindGrid();
        }
        #endregion

        #region 选择焊工
        /// <summary>
        /// 选择焊工
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSelectWelder_Click(object sender, EventArgs e)
        {
            if (tvProject.SelectedNode != null)
            {
                PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("SelectWelder.aspx?projectId={0}", tvProject.SelectedNodeID, "编辑 - ")));
            }
            else
            {
                Alert.ShowInTop(Resources.Lan.PleaseSelectProject, MessageBoxIcon.Warning);
            }
        }
        #endregion

        #region  删除数据
        /// <summary>
        /// 删除按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            this.DeleteData();
        }

        /// <summary>
        /// 右击删除事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnMenuDelete_Click(object sender, EventArgs e)
        {
            this.DeleteData();
        }

        /// <summary>
        /// 删除数据
        /// </summary>
        private void DeleteData()
        {
            if (GetButtonPower(BLL.Const.BtnDelete))
            {
                if (Grid1.SelectedRowIndexArray.Length > 0)
                {
                    foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                    {
                        string projectWelderId = Grid1.DataKeys[rowIndex][0].ToString();
                        BLL.Welder_ProjectWelderService.DeleteProjectWelderById(projectWelderId);
                    }
                    BindGrid();
                    //BLL.Sys_LogService.AddLog(BLL.Const.System_1, this.CurrUser.LoginProjectId, this.CurrUser.UserId, Resources.Lan.DeleteProjectWelder);
                    ShowNotify(Resources.Lan.DeletedSuccessfully,MessageBoxIcon.Success);
                }
            }
            else
            {
                ShowNotify(Resources.Lan.NoPrivilegePrompt,MessageBoxIcon.Warning);
            }
        }
        #endregion

        #region 获取按钮权限
        /// <summary>
        /// 获取按钮权限
        /// </summary>
        /// <param name="button"></param>
        /// <returns></returns>
        private bool GetButtonPower(string button)
        {
            return BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.HJGL_ProjectWelderMenuId, button);
        }
        #endregion       
    }
}