public async Task <IActionResult> GetEmployeeDepartments([FromQuery] EmployeeDepartmentParametersDto employeeDepartmentParametersDto) { var EmployeeDepartmentsFromRepo = await _EmployeeDepartmentRepository.GetEmployeeDepartmentsAsync(employeeDepartmentParametersDto); var paginationMetadata = new { totalCount = EmployeeDepartmentsFromRepo.MetaData.TotalCount, pageSize = EmployeeDepartmentsFromRepo.MetaData.PageSize, currentPageSize = EmployeeDepartmentsFromRepo.MetaData.CurrentPageSize, currentStartIndex = EmployeeDepartmentsFromRepo.MetaData.CurrentStartIndex, currentEndIndex = EmployeeDepartmentsFromRepo.MetaData.CurrentEndIndex, pageNumber = EmployeeDepartmentsFromRepo.MetaData.PageNumber, totalPages = EmployeeDepartmentsFromRepo.MetaData.TotalPages, hasPrevious = EmployeeDepartmentsFromRepo.MetaData.HasPrevious, hasNext = EmployeeDepartmentsFromRepo.MetaData.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var EmployeeDepartmentsDto = _mapper.Map <IEnumerable <EmployeeDepartmentDto> >(EmployeeDepartmentsFromRepo); var response = new Response <IEnumerable <EmployeeDepartmentDto> >(EmployeeDepartmentsDto); return(Ok(response)); }
public async Task <IActionResult> Index(int page = 1, int pageSize = 10, string filters = "", string sortOrder = "") { ViewBag.pageSize = pageSize; ViewBag.filter = filters; ViewData["IdSortParm"] = sortOrder == "Id" ? "-Id" : "Id"; ViewData["NameSortParm"] = sortOrder == "Name" ? "-Name" : "Name"; EmployeeDepartmentParametersDto employeeDepartmentParameters = new EmployeeDepartmentParametersDto() { PageNumber = page, PageSize = pageSize, SortOrder = sortOrder, Filters = filters }; var pagingResponse = await _employeeDeparment.GetEmployeeDepartmentsAsync(employeeDepartmentParameters); return(View(pagingResponse)); }
//public async Task<IEnumerable<DepartamentoEmpleadoDto>> GetDepartamentoEmpleadosAsync(int pageNumber, int pageSize) public async Task <PagingResponse <EmployeeDepartmentDto> > GetEmployeeDepartmentsAsync(EmployeeDepartmentParametersDto employeeDepartmentParameters) { var queryStringParam = new Dictionary <string, string> { ["pageNumber"] = employeeDepartmentParameters.PageNumber.ToString(), ["pageSize"] = employeeDepartmentParameters.PageSize.ToString(), ["sortOrder"] = employeeDepartmentParameters.SortOrder.ToString(), ["filters"] = String.IsNullOrEmpty(employeeDepartmentParameters.Filters) ? "" : $"Name @=* {employeeDepartmentParameters.Filters}" }; using (var httpClient = new HttpClient()) { using (var response = await httpClient.GetAsync(QueryHelpers.AddQueryString(uri.ToString(), queryStringParam))) { if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); var pagingResponse = new PagingResponse <EmployeeDepartmentDto> { Items = JsonConvert.DeserializeObject <PageListEmployeeDepartment>(content).EmployeeDepartments, Metadata = JsonConvert.DeserializeObject <MetaData>(response.Headers.GetValues("x-pagination").First()) }; pagingResponse.Filters = employeeDepartmentParameters.Filters; pagingResponse.SortOrder = employeeDepartmentParameters.SortOrder; return(pagingResponse); } return(null); } } }
public async Task <PagedList <EmployeeDepartment> > GetEmployeeDepartmentsAsync(EmployeeDepartmentParametersDto employeeDepartmentParameters) { if (employeeDepartmentParameters == null) { throw new ArgumentNullException(nameof(employeeDepartmentParameters)); } // TODO: AsNoTracking() should increase performance, but will break the sort tests. need to investigate var collection = _context.EmployeeDepartments as IQueryable <EmployeeDepartment>; var sieveModel = new SieveModel { Sorts = employeeDepartmentParameters.SortOrder ?? "Id", Filters = employeeDepartmentParameters.Filters }; collection = _sieveProcessor.Apply(sieveModel, collection); return(await PagedList <EmployeeDepartment> .CreateAsync(collection, employeeDepartmentParameters.PageNumber, employeeDepartmentParameters.PageSize)); }