public async Task <PagedList <ManagersViewModel> > GetManagers(ManagersPagingParameters managersPagingParameters) { var list = await PagedList <ManagersViewModel> .ToPagedList( this.context.Managers.Where(m => m.Id >= managersPagingParameters.MinId).OrderBy(m => m.Id).ProjectTo <ManagersViewModel>(this.mapper.ConfigurationProvider), managersPagingParameters.PageNumber, managersPagingParameters.PageSize); return(list); }
public async Task TestGetManagersAsync() { var dbContext = DbContextMocker.GetContext(nameof(this.TestGetManagersAsync)); var managersRepository = new ManagersRepository(dbContext, AutoMapperConfiguration.ConfigureForWeb().CreateMapper()); var managersService = new ManagersService(managersRepository, null); var controller = new ManagersController(managersService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper()) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext(), }, }; var parameters = new ManagersPagingParameters() { PageNumber = 1, PageSize = 1, MinId = 0, }; var response = await controller.GetManagers(parameters); var value = response.Value; Assert.Single(value); controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext(), }; parameters = new ManagersPagingParameters() { PageNumber = 1, PageSize = 2, MinId = 0, }; response = await controller.GetManagers(parameters); value = response.Value; Assert.Equal(2, value.Count()); controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext(), }; parameters = new ManagersPagingParameters() { PageNumber = 1, PageSize = 2, MinId = 2, }; response = await controller.GetManagers(parameters); value = response.Value; Assert.Single(value); dbContext.Dispose(); }
public async Task <PagedList <ManagersViewModel> > GetManagers(ManagersPagingParameters managersPagingParameters) { try { return(await this.managersRepository.GetManagers(managersPagingParameters)); } catch (Exception ex) { this.logger.LogError("Error retrieving managers" + ex); throw; } }
public async Task <ActionResult <IEnumerable <ManagersViewModel> > > GetManagers([FromQuery] ManagersPagingParameters managersPagingParameters) { var managers = await this.managersService.GetManagers(managersPagingParameters); if (managers == null) { return(this.BadRequest()); } var metadata = new { managers.TotalCount, managers.PageSize, managers.CurrentPage, managers.TotalPages, managers.HasNext, managers.HasPrevious, }; this.Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); this.Response.Headers.Add("Access-Control-Expose-Headers", "X-Pagination"); return(managers); }