public async Task <IActionResult> AuthorizationCodes(int page = 1)
        {
            var filter = new BaseFilter(page);

            var authorizationCodeList = await _authorizationCodeService.GetPaginatedListAsync(filter);

            PaginateViewModel paginateModel = new PaginateViewModel()
            {
                ItemCount    = authorizationCodeList.Count,
                CurrentPage  = page,
                ItemsPerPage = filter.Take.Value
            };

            if (paginateModel.PastMaxPage)
            {
                return(RedirectToRoute(
                           new
                {
                    page = paginateModel.LastPage ?? 1
                }));
            }

            var viewModel = new AuthorizationCodeListViewModel
            {
                AuthorizationCodes = authorizationCodeList.Data,
                PaginateModel      = paginateModel,
                RoleList           = new SelectList(await _roleService.GetAllAsync(), "Id", "Name")
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> EditCode(AuthorizationCodeListViewModel model)
        {
            if (model == null)
            {
                ShowAlertDanger("Unable to edit empty code.");
                return(RedirectToAction(nameof(Index)));
            }

            try
            {
                model.AuthorizationCode.Code        = model.AuthorizationCode.Code.Trim();
                model.AuthorizationCode.Description = model.AuthorizationCode.Description?.Trim();
                await _authorizationCodeService.UpdateAsync(model.AuthorizationCode);

                ShowAlertSuccess($"Authorization Code \"{model.AuthorizationCode.Code}\" updated!");
            }
            catch (GraException gex)
            {
                ShowAlertDanger("Unable to edit Authorization Code: ", gex);
            }

            return(RedirectToAction(nameof(AuthorizationCodes), new
            {
                page = model.PaginateModel.CurrentPage
            }));
        }
        public async Task <IActionResult> DeleteCode(AuthorizationCodeListViewModel model)
        {
            try
            {
                await _authorizationCodeService.RemoveAsync(model.AuthorizationCode.Id);

                ShowAlertSuccess($"Authorization Code \"{model.AuthorizationCode.Code}\" removed!");
            }
            catch (GraException gex)
            {
                ShowAlertDanger("Unable to remove Authorization Code: ", gex);
            }

            return(RedirectToAction(nameof(AuthorizationCodes), new
            {
                page = model.PaginateModel.CurrentPage
            }));
        }
        public async Task <IActionResult> AddCode(AuthorizationCodeListViewModel model)
        {
            try
            {
                model.AuthorizationCode.Code.Trim();
                model.AuthorizationCode.Description?.Trim();
                await _authorizationCodeService.AddAsync(model.AuthorizationCode);

                ShowAlertSuccess($"Added Authorization Code \"{model.AuthorizationCode.Code}\"!");
            }
            catch (GraException gex)
            {
                ShowAlertDanger("Unable to add Authorization Code: ", gex);
            }
            return(RedirectToAction(nameof(AuthorizationCodes), new
            {
                page = model.PaginateModel.CurrentPage
            }));
        }