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));
        }
Example #3
0
        //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));
        }