public async Task <AllCasesOutputModel> InputToOutputModelAsync(CasesIndexInputModel inputModel, string userId = null) { if (inputModel.PageNumber < 1) { inputModel.PageNumber = 1; } string[] possibleOrders = new[] { "CreatedOn-desc", "CreatedOn-asc", "Status-desc", "Status-asc", "Priority-desc", "Priority-asc", }; if (!possibleOrders.Contains(inputModel.OrderBy)) { inputModel.OrderBy = possibleOrders.First(); } const int casesPerPage = 10; int skip = (inputModel.PageNumber - 1) * casesPerPage; if (inputModel.SelectedStatuses == null) { inputModel.SelectedStatuses = await casesService.GetAllCaseStatusesIdsAsync(); } if (inputModel.SelectedPriorities == null) { inputModel.SelectedPriorities = await casesService.GetAllCasePrioritiesIdsAsync(); } AllCasesOutputModel outputModel = await casesService .GetCasesAsync(skip, casesPerPage, inputModel.OrderBy, inputModel.SelectedStatuses, inputModel.SelectedPriorities, userId); outputModel.OrderedBy = inputModel.OrderBy; outputModel.SelectedStatuses = inputModel.SelectedStatuses; outputModel.SelectedPriorities = inputModel.SelectedPriorities; outputModel.LastPage = (int)Math.Ceiling((double)outputModel.AllCases / casesPerPage); return(outputModel); }
public async Task <IActionResult> Index(CasesIndexInputModel inputModel) { AllCasesOutputModel outputModel = await casesTableInputToOutputModelService.InputToOutputModelAsync(inputModel); if (outputModel.LastPage == 0) { return(View(outputModel)); } if (inputModel.PageNumber > outputModel.LastPage) { return(RedirectToAction("Index", new { page = outputModel.LastPage })); } outputModel.CurrentPage = inputModel.PageNumber; outputModel.Announcements = await announcementsService.GetAnnouncementsAsync(); return(View(outputModel)); }
public async Task <IActionResult> OnGetAsync(CasesIndexInputModel inputModel) { string userId = userManager.GetUserId(User); OutputModel = await casesTableInputToOutputModelService.InputToOutputModelAsync(inputModel, userId); // If there are no results and need for paging just return model with empty Cases collection and don't do any paging logic if (OutputModel.LastPage == 0) { return(Page()); } if (inputModel.PageNumber > OutputModel.LastPage) { return(RedirectToPage("MyCases", new { page = OutputModel.LastPage })); } OutputModel.CurrentPage = inputModel.PageNumber; return(Page()); }