/// <summary>
        /// 分页绑定数据
        /// </summary>
        /// <param name="currentPage">要显示的当前页码数</param>
        private void BindPagedEmployees(int pageIndex)
        {
            string             employeeName = txtEmployeeName.Text;
            string             userName     = txtUserName.Text;
            EmployeeStatusType status       = (EmployeeStatusType)Convert.ToInt32(rblStatus.SelectedValue);
            int             totalResults;   // 返回的员工总行数
            List <Employee> results = BLLStaff.SearchPagedEmployees(employeeName, userName, status,
                                                                    pageSize, pageIndex, out totalResults);
            int totalPages = totalResults / pageSize + (totalResults % pageSize == 0 ? 0 : 1); // 计算总分页数

            if (totalPages == 0)                                                               // 如果没有返回记录
            {
                divNoResults.Visible = true;
                divResults.Visible   = false;
            }
            else
            {
                divNoResults.Visible = false;
                divResults.Visible   = true;

                lblTotalResults.Text = totalResults.ToString();     // 显示总行数
                lblTotalPages.Text   = totalPages.ToString();       // 显示总分页数
                lblCurrentPage.Text  = pageIndex.ToString();        // 显示当前页码数
            }

            repEmployees.DataSource = results;
            repEmployees.DataBind();
        }
        /// <summary>
        /// 获得所有指定状态的员工信息列表
        /// </summary>
        /// <param name="employeeStatusType">员工状态</param>
        /// <returns>满足条件的员工集合;如果没有满足条件的结果,则集合中元素个数为0</returns>
        public static List <Employee> SelectEmployeesByStatus(EmployeeStatusType employeeStatusType)
        {
            List <Employee> list = new List <Employee>();

            using (SqlConnection conn = new SqlConnection(DBUtil.ConnectionString))
            {
                SqlCommand cmd = new SqlCommand(SELECT_EMPLOYEES_BY_STATUS, conn);
                cmd.Parameters.AddWithValue("@Status", (int)employeeStatusType);
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    Employee employee = new Employee();
                    employee.EmployeeID   = Convert.ToInt32(dr["EmployeeID"]);
                    employee.EmployeeName = dr["EmployeeName"].ToString();
                    employee.UserName     = dr["UserName"].ToString();
                    employee.Phone        = dr["Phone"].ToString();
                    employee.Email        = dr["Email"].ToString();
                    employee.Status       = (EmployeeStatusType)Convert.ToInt32(dr["Status"]);
                    Department department = new Department();
                    department.DepartmentID   = Convert.ToInt32(dr["DepartmentID"]);
                    department.DepartmentName = dr["DepartmentName"].ToString();
                    list.Add(employee);
                }
            }
            return(list);
        }
Beispiel #3
0
        public static string EnumToString(this EmployeeStatusType type)
        {
            switch (type)
            {
            case EmployeeStatusType.Active: return("ACTIVE");

            case EmployeeStatusType.Inactive: return("INACTIVE");

            default: throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #4
0
        public bool ChangeStatus(string employeeID, EmployeeStatusType status)
        {
            if (!_emplDict.ContainsKey(employeeID))
            {
                return(false);
            }

            if (!_emplDict.TryGetValue(employeeID, out var changeEmployeeModel))
            {
                return(false);
            }

            if (changeEmployeeModel.Status == status)
            {
                return(true);
            }

            EmployeeModel newEmployeeModel = new EmployeeModel
            {
                ID     = changeEmployeeModel.ID,
                Status = status
            };

            if (!_emplDict.TryUpdate(employeeID, newEmployeeModel, changeEmployeeModel))
            {
                return(false);
            }

            if (changeEmployeeModel.Status == EmployeeStatusType.Work && status == EmployeeStatusType.Free)
            {
                Interlocked.Increment(ref _countFreeEmployees);
            }
            if (changeEmployeeModel.Status == EmployeeStatusType.Free && status == EmployeeStatusType.Work)
            {
                Interlocked.Decrement(ref _countFreeEmployees);
            }

            using (EmployeeContext employeeContext = new EmployeeContext())
            {
                var emplDTO = Mapper.Map <EmployeeDTO>(newEmployeeModel);
                employeeContext.Employees.AddOrUpdate(emplDTO);
                employeeContext.SaveChangesAsync();
            }

            return(true);
        }
        /// <summary>
        /// 根据条件综合搜索,并分页返回员工信息列表
        /// </summary>
        /// <param name="employeeName">员工姓名查询条件。如果为null,则不针对此项筛选</param>
        /// <param name="userName">员工(账号)登录名查询条件,如果为null,则不针对此项筛选</param>
        /// <param name="status">状态查询条件</param>
        /// <param name="pageSize">分页查询中,每页包含的最大行数</param>
        /// <param name="pageIndex">分页查询中,带查询的页数编号。编号从1开始。</param>
        /// <param name="totalResults">输出参数,返回满足条件的总记录数</param>
        /// <returns>满足查询条件,并且位于当前页中的员工集合;如果没有满足条件的结果,则集合中元素个数为0</returns>
        public static List <Employee> SearchEmployeePaged(string employeeName, string userName, EmployeeStatusType status, int pageSize, int pageIndex, out int totalResults)
        {
            string sql = SEARCH_EMPLOYEE_PAGED;
            List <SqlParameter> parameters = new List <SqlParameter>();

            if (employeeName != null)
            {
                sql += " AND EmployeeName LIKE @EmployeeName";
                parameters.Add(new SqlParameter("@EmployeeName", employeeName));
            }
            if (userName != null)
            {
                sql += " AND UserName LIKE @UserName";
                parameters.Add(new SqlParameter("@UserName", userName));
            }
            sql += " AND Status=@Status";
            parameters.Add(new SqlParameter("@Status", (int)status));

            sql += " SELECT @TotalResults=@@ROWCOUNT";                  // 获得总行数
            SqlParameter paramTotal = new SqlParameter("@TotalResults", SqlDbType.Int);

            paramTotal.Direction = ParameterDirection.Output;
            parameters.Add(paramTotal);

            // 获取本页内的数据
            sql += " SELECT * FROM @tmp";
            sql += " WHERE RowID>" + pageSize * (pageIndex - 1);
            sql += " AND RowID<=" + pageSize * pageIndex;

            List <Employee> list = new List <Employee>();

            using (SqlConnection conn = new SqlConnection(DBUtil.ConnectionString))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.AddRange(parameters.ToArray());
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    Employee employee = new Employee();
                    employee.EmployeeID   = Convert.ToInt32(dr["EmployeeID"]);
                    employee.EmployeeName = dr["EmployeeName"].ToString();
                    employee.UserName     = dr["UserName"].ToString();
                    employee.Phone        = dr["Phone"].ToString();
                    employee.Email        = dr["Email"].ToString();
                    employee.Status       = (EmployeeStatusType)Convert.ToInt32(dr["Status"]);
                    Department department = new Department();
                    department.DepartmentID    = Convert.ToInt32(dr["DepartmentID"]);
                    department.DepartmentName  = dr["DepartmentName"].ToString();
                    employee.RelatedDepartment = department;
                    list.Add(employee);
                }
                dr.Close();
                totalResults = Convert.ToInt32(paramTotal.Value);
            }
            return(list);
        }
Beispiel #6
0
 /// <summary>
 /// 根据条件综合搜索,并分页返回员工信息列表
 /// </summary>
 /// <param name="employeeName">员工姓名查询条件。如果为Empty,则不针对此项筛选</param>
 /// <param name="userName">员工(账号)登录名查询条件,如果为Empty,则不针对此项筛选</param>
 /// <param name="status">状态查询条件</param>
 /// <param name="pageSize">分页查询中,每页包含的最大行数</param>
 /// <param name="pageIndex">分页查询中,带查询的页数编号。编号从1开始。</param>
 /// <param name="totalResults">输出参数,返回满足条件的总记录数</param>
 /// <returns>满足查询条件,并且位于当前页中的员工集合;如果没有满足条件的结果,则集合中元素个数为0</returns>
 public static List <Employee> SearchPagedEmployees(string employeeName, string userName, EmployeeStatusType status,
                                                    int pageSize, int pageIndex, out int totalResults)
 {
     employeeName = string.IsNullOrWhiteSpace(employeeName) ? null : "%" + employeeName + "%";
     userName     = string.IsNullOrWhiteSpace(userName) ? null : "%" + userName + "%";
     return(DALEmployee.SearchEmployeePaged(employeeName, userName, status, pageSize, pageIndex, out totalResults));
 }