Exemple #1
0
        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);
        }
Exemple #2
0
        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());
        }