コード例 #1
0
        public ActionResult Statements(int accountId)
        {
            var statementViewModels = new List <StatementOverviewViewModel>();

            var transactions = GetTransactions(accountId);
            var transfers    = GetTransfers(accountId);

            var allStatements = transactions.Concat(transfers)
                                .OrderByDescending(x => x.Date)
                                .GroupBy(x => x.Year & x.Month);

            foreach (var statementCollection in allStatements)
            {
                var @in   = statementCollection.Where(x => x.Amount > 0).Sum(x => x.Amount);
                var @out  = statementCollection.Where(x => x.Amount < 0).Sum(x => x.Amount);
                var sum   = @in + @out;
                var year  = statementCollection.First().Year;
                var month = statementCollection.First().Month;
                var date  = statementCollection.First().Date;

                var statementOverviewViewModel = new StatementOverviewViewModel()
                {
                    In            = @in,
                    Out           = @out,
                    Amount        = sum,
                    StatementDate = DateService.GetMonthYearDate(year, month),
                    Date          = date,
                    AccountId     = accountId
                };

                statementViewModels.Add(statementOverviewViewModel);
            }

            var account   = accountRepository.Find(accountId);
            var viewModel = new StatementsViewModel
            {
                AccountName = account.Name,
                Statements  = statementViewModels,
                MoneyIn     = transactions.Concat(transfers).Sum(x => x.Amount > 0 ? x.Amount : 0),
                MoneyOut    = transactions.Concat(transfers).Sum(x => x.Amount < 0 ? x.Amount : 0)
            };

            return(View(viewModel));
        }
コード例 #2
0
        public async Task <IActionResult> Index(StatementsViewModel model, int?page = 1)
        {
            ViewBag.Accounts = await this.GetAccountsForViewBag();

            const int pageSize = 4;

            if (model.id != 0)
            {
                HttpContext.Session.SetInt32("id", model.id);
            }

            if (model.id == 0 && HttpContext.Session.GetInt32("id").HasValue)
            {
                model.id = HttpContext.Session.GetInt32("id").Value;
            }

            if (HttpContext.Session.GetInt32("id").HasValue)
            {
                var id        = HttpContext.Session.GetInt32("id").Value;
                var pagedList = await _transRepo.GetTransactionPage(id, page, pageSize);

                model.Transactions = (IPagedList <Transaction>)pagedList;
            }
            else if (ViewBag.Accounts[0] != null)
            {
                var pagedList = await _transRepo.GetTransactionPage(ViewBag.Accounts[0].AccountNumber, page, pageSize);

                model.Transactions = (IPagedList <Transaction>)pagedList;
            }
            else
            {
                var pagedList = await _transRepo.GetTransactionPage(0, page, pageSize);

                model.Transactions = (IPagedList <Transaction>)pagedList;
            }

            return(View(model));
        }