public async Task <IActionResult> Index(TransactionListCriteriaModel criteria, int pageIndex = 0, int pageSize = 20)
        {
            var transactions = await _transactionService.ListAsync(pageIndex : pageIndex, pageSize : pageSize,
                                                                   userId : criteria.UserId,
                                                                   transactionType : (TransactionType?)criteria.TransactionType,
                                                                   status : (TransactionStatus?)criteria.Status,
                                                                   dateFrom : criteria.DateFrom,
                                                                   dateTo : criteria.DateTo
                                                                   );

            var pagedModel = _mapper.Map <PagedResultModel <TransactionListItemModel> >(transactions);

            var model = new TransactionListModel()
            {
                Criteria           = (criteria.UserId.HasValue || criteria.TransactionType.HasValue || criteria.Status.HasValue || criteria.DateFrom.HasValue || criteria.DateTo.HasValue) ? criteria : null,
                TotalAmount        = pagedModel.Items.Any() ? pagedModel.Items.Sum(x => x.Amount) : (decimal?)null,
                TotalUserAmount    = pagedModel.Items.Any() ? pagedModel.Items.Sum(x => x.UserAmount) : (decimal?)null,
                TotalCompanyAmount = pagedModel.Items.Any() ? pagedModel.Items.Sum(x => x.CompanyAmount) : (decimal?)null,
                Transactions       = pagedModel,
                Users = _mapper.Map <IEnumerable <SelectListItem> >(await _userRepository.ListAsync(new UserFilterSpecification(onlyActive: true)))
            };

            return(View(model));
        }
 public IActionResult Index(TransactionListCriteriaModel criteria)
 {
     return(RedirectToAction(nameof(Index), criteria));
 }