/// <summary> /// To create employee list based on filters /// </summary> /// <param name="employeeList"></param> /// <param name="dataReader"></param> private void CreateEmployeeListBasedOnFilters(EmployeePagedModel employeeList, MySqlDataReader dataReader) { try { while (dataReader.Read()) { employeeList.Employees.Add(new DataObjects.Employee { OrganisationId = dataReader[0].ToString(), Employee_Id = int.Parse(dataReader[1].ToString()), Name = dataReader[2].ToString(), DOB = DateTime.Parse(dataReader[3].ToString()), Gender = dataReader[4].ToString(), Joining_Date = DateTime.Parse(dataReader[5].ToString()), Department = dataReader[6].ToString(), Email = dataReader[7].ToString(), Contact_Number = dataReader[8].ToString(), Status = dataReader[9].ToString() }); } employeeList.PageNumber = 10; if (dataReader.NextResult()) { while (dataReader.Read()) { employeeList.PageCount = int.Parse(dataReader[0].ToString()); } } } catch (Exception ex) { _Logger.Error(ex.ToString()); throw ex; } }
/// <summary> /// To get list according to parameters like page,filters,search etc. /// </summary> /// <param name="parameters"></param> /// <returns></returns> public EmployeePagedModel GetActiveListByPagination(EmployeeParameters parameters) { _Logger.Info("DataAccessOperations.GetActiveListByPagination() called."); EmployeePagedModel EmployeeList = new EmployeePagedModel(); try { using (MySqlConnection Connection = new MySqlConnection(_ConnectionString)) { Connection.Open(); MySqlCommand Command = new MySqlCommand("GetActiveEmployeesWithFilters", Connection); Command.CommandType = CommandType.StoredProcedure; Command.Parameters.AddWithValue("@orgId", parameters.OrganisationId ?? string.Empty); Command.Parameters.AddWithValue("@searchstring", parameters.SearchString ?? string.Empty); Command.Parameters.AddWithValue("@sortorder", parameters.SortOrder); Command.Parameters.AddWithValue("@departmentfilter", parameters.DepartmentFilter); Command.Parameters.AddWithValue("@genderfilter", parameters.GenderFilter); Command.Parameters.AddWithValue("@lowerlimit", parameters.LowerLimit); Command.Parameters.AddWithValue("@upperlimit", parameters.UpperLimit); MySqlDataReader DataReader = Command.ExecuteReader(); EmployeeList.Employees = new List <Employee>(); CreateEmployeeListBasedOnFilters(EmployeeList, DataReader); } } catch (Exception ex) { _Logger.Fatal(ex.ToString()); throw ex; } return(EmployeeList); }
/// <summary> /// Gets employee list as per all the filters,sortorder and searchstring /// </summary> /// <param name="model"></param> /// <param name="result"></param> private void ProcessEmployeeDataForMainGrid(EmployeePagedModel model, HttpResponseMessage result) { try { var ReadTask = result.Content.ReadAsAsync <EmployeePagedModel>(); ReadTask.Wait(); model.Employees = ReadTask.Result.Employees; model.PageNumber = ReadTask.Result.PageNumber; float PaginationNumber; if ((ReadTask.Result.PageCount % ReadTask.Result.PageNumber) == 0) { PaginationNumber = (ReadTask.Result.PageCount / ReadTask.Result.PageNumber); model.PageCount = int.Parse(Math.Ceiling(PaginationNumber).ToString()); } else { PaginationNumber = (ReadTask.Result.PageCount / ReadTask.Result.PageNumber) + 1; model.PageCount = int.Parse(Math.Ceiling(PaginationNumber).ToString()); } } catch (Exception ex) { _Logger.Fatal(ex.ToString()); throw ex; } }
/// <summary> /// Sets pagination parameters for the main grid /// </summary> /// <param name="page"></param> /// <param name="pageNumber"></param> /// <param name="lowerLimit"></param> /// <param name="model"></param> private void SetPaginationParameters(int?page, out int pageNumber, out int lowerLimit, out EmployeePagedModel model) { try { if (page == null) { pageNumber = 1; } else { pageNumber = page.Value; } lowerLimit = (pageNumber - 1) * 10; TempData["CurrentPage"] = pageNumber; model = new EmployeePagedModel { Employees = new List <Employee>(), PageCount = 0, PageNumber = 1 }; } catch (Exception ex) { _Logger.Fatal(ex.ToString()); throw ex; } }
/// <summary> /// API to GET all employees based on filters and Sort Order /// </summary> /// <param name="parameters"></param> /// <returns></returns> public IHttpActionResult PostAllActiveEmployees(EmployeeParameters parameters) { _Logger.Info("PostAllActiveEmployees API called."); try { EmployeePagedModel EmployeeList = new EmployeePagedModel(); EmployeeList = _BusinessOperations.GetActiveListByPagination(parameters); return(Ok(EmployeeList)); } catch (EmployeeManagementExceptions exception) { _Logger.Error(exception.ToString()); return(InternalServerError(exception)); } catch (Exception ex) { _Logger.Fatal(ex.ToString()); return(InternalServerError(ex)); } }
/// <summary> /// To get list according to parameters like page,filters,search etc. /// </summary> /// <param name="parameters"></param> /// <returns></returns> public EmployeePagedModel GetActiveListByPagination(EmployeeParameters parameters) { _Logger.Info("BusinessOperations.GetActiveListByPagination() called." + JsonConvert.SerializeObject(parameters)); try { if (parameters.SearchString == null) { } else if ((new Regex("^([&'-]+)$").IsMatch(parameters.SearchString))) { parameters.SearchString = null; } EmployeePagedModel EmployeeList = new EmployeePagedModel(); EmployeeList = _EmployeeOperations.GetActiveListByPagination(parameters); return(EmployeeList); } catch (Exception ex) { _Logger.Fatal(ex.ToString()); throw ex; } }