using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace FineUIPro.Web.common.SysManage
{
    public partial class UpdatePassword : PageBase
    {
        #region 加载
        protected void Page_Load(object sender, EventArgs e)
        {
            // 表头过滤
            FilterDataRowItem = FilterDataRowItemImplement;
            if (!IsPostBack)
            {
                if (this.CurrUser.Account != BLL.Const.Gly)
                {
                    this.txtAccount.Hidden = true;
                }
                ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
                // 绑定表格
                BindGrid();
            }
        }
        
        /// 
        /// 绑定数据
        /// 
        private void BindGrid()
        {
            string strSql = "SELECT u.UserId,u.Account,u.UserCode,u.UserName,u.RoleId,r.RoleName,u.DepartId,dep.DepartName,(CASE WHEN u.IsPost IS NOT NULL THEN 'On duty' ELSE 'Not on duty' END) AS IsPost "
                          + @" FROM Sys_User u"
                          + @" LEFT JOIN dbo.Sys_Role AS r ON r.RoleId = u.RoleId"
                          + @" LEFT JOIN dbo.Base_Depart AS dep ON dep.DepartId = u.DepartId where 1=1 ";
            //string strWhere = " where Account = @Account";
            //if (this.CurrUser.Account != BLL.Const.Gly)
            //{
            //    strSql += strWhere;
            //}
            //SqlParameter[] parameter = new SqlParameter[]       
            //{
            //    new SqlParameter("@Account",this.CurrUser.Account),
            //};
            List listStr = new List();
            if (this.CurrUser.Account != BLL.Const.Gly)
            {
                //strSql += strWhere;
                strSql += " AND u.Account = @Account";
                listStr.Add(new SqlParameter("@Account", this.CurrUser.Account));
            }
            else
            {
                if (!string.IsNullOrEmpty(this.txtAccount.Text.Trim()))
                {
                    strSql += " AND u.Account LIKE @Account";
                    listStr.Add(new SqlParameter("@Account", "%" + this.txtAccount.Text.Trim() + "%"));
                }
            }
            SqlParameter[] parameter = listStr.ToArray();
            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 过滤表头
        /// 
        /// 过滤表头
        /// 
        /// 
        /// 
        protected void Grid1_FilterChange(object sender, EventArgs e)
        {
            BindGrid();
        }
        /// 
        /// 根据表头信息过滤列表数据
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        private bool FilterDataRowItemImplement(object sourceObj, string fillteredOperator, object fillteredObj, string column)
        {
            bool valid = false;
            if (column == "UserName")
            {
                string sourceValue = sourceObj.ToString();
                string fillteredValue = fillteredObj.ToString();
                if (fillteredOperator == "equal" && sourceValue == fillteredValue)
                {
                    valid = true;
                }
                else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
                {
                    valid = true;
                }
            }
            if (column == "UnitName")
            {
                string sourceValue = sourceObj.ToString();
                string fillteredValue = fillteredObj.ToString();
                if (fillteredOperator == "equal" && sourceValue == fillteredValue)
                {
                    valid = true;
                }
                else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
                {
                    valid = true;
                }
            }
            if (column == "IsPost")
            {
                string sourceValue = sourceObj.ToString();
                string fillteredValue = fillteredObj.ToString();
                if (fillteredOperator == "equal" && sourceValue == fillteredValue)
                {
                    valid = true;
                }
            }
            return valid;
        }
        #endregion
        #region 分页、排序
        /// 
        /// 分页
        /// 
        /// 
        /// 
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            Grid1.PageIndex = e.NewPageIndex;
            BindGrid();
        }
        /// 
        /// 分页显示条数下拉框
        /// 
        /// 
        /// 
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            BindGrid();
        }
        /// 
        /// 排序
        /// 
        /// 
        /// 
        protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
        {
            Grid1.SortDirection = e.SortDirection;
            Grid1.SortField = e.SortField;
            BindGrid();
        }
        #endregion
        #region 关闭弹出窗口
        /// 
        /// 关闭窗口
        /// 
        /// 
        /// 
        protected void Window1_Close(object sender, EventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region  重置密码
        /// 
        /// 批量删除数据
        /// 
        /// 
        /// 
        protected void btnRefresh_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length > 0)
            {
                foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                {
                    string rowID = Grid1.DataKeys[rowIndex][0].ToString();
                    var user = BLL.Sys_UserService.GetUsersByUserId(rowID);
                    if (user != null)
                    {
                        string password = BLL.Sys_UserService.GetEncryptionPassword(user.Account);
                        if (user.UserId == BLL.Const.GlyId)
                        {
                            password = Sys_UserService.EncryptionPassword(BLL.Const.glyPassWord);
                        }
                        BLL.Sys_UserService.UpdatePassword(rowID, password);
                    }
                }
                BindGrid();
                BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Reset Password");
                ShowNotify("The password has been reset to the original password!",MessageBoxIcon.Success);
            }
            else
            {
                ShowNotify("Please select at least one line!");
            }
        }
        /// 
        /// 右键重置密码
        /// 
        /// 
        /// 
        protected void btnMenuRefresh_Click(object sender, EventArgs e)
        {
            this.btnRefresh_Click(null,null);
        }
        #endregion
        #region 编辑
        /// 
        /// 编辑
        /// 
        /// 
        /// 
        protected void btnEdit_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInParent("Please select at least one line!");
                return;
            }
            string Id = Grid1.SelectedRowID;
            PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("UpdatePasswordEdit.aspx?userId={0}", Id, "编辑 - ")));
        }
        /// 
        /// Grid行双击事件
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            btnEdit_Click(null, null);
        }
        /// 
        /// 右键编辑事件
        /// 
        /// 
        /// 
        protected void btnMenuEdit_Click(object sender, EventArgs e)
        {
            btnEdit_Click(null, null);
        }
        #endregion
        #region 查询
        /// 
        /// 查询
        /// 
        /// 
        /// 
        protected void Text_TextChanged(object sender, EventArgs e)
        {
            BindGrid();
        }
        #endregion
    }
}