예제 #1
0
        public IList <RunningTotal> RunningTotal(decimal initialTotal, DateTime start, DateTime end)
        {
            var basicTransactions = _basicTransactionService
                                    .Between(start, end)
                                    .Select(t => new RunningTotal(t));

            var recurringTransactions = _recurringTransactionService
                                        .Between(start, end)
                                        .Select(t => new RunningTotal(t));

            var basicIncomes = _basicIncomeService
                               .Between(start, end)
                               .Select(i => new RunningTotal(i));

            var recurringIncomes = _recurringIncomeService
                                   .Between(start, end)
                                   .Select(i => new RunningTotal(i));

            var runningTotals = basicTransactions
                                .Concat(recurringTransactions)
                                .Concat(basicIncomes)
                                .Concat(recurringIncomes)
                                .OrderBy(rt => rt.Date)
                                .ToList();

            foreach (var rt in runningTotals)
            {
                initialTotal = rt.AdjustTotal(initialTotal);
            }

            return(runningTotals);
        }
예제 #2
0
        public IActionResult List([FromBody] DateRangeDto listParameters)
        {
            try
            {
                if (listParameters == null || !ModelState.IsValid)
                {
                    return(BadRequest("Invalid State"));
                }

                var basic     = _basicIncomeService.Between(listParameters.Start, listParameters.End);
                var recurring = _recurringIncomeService.Between(listParameters.Start, listParameters.End);

                return(Ok(new IncomeListDto
                {
                    Incomes = basic
                              .Concat(recurring)
                              .OrderByDescending(i => i.Date)
                              .Select(t => new IncomeDto(t))
                              .ToList()
                }));
            }
            catch (Exception)
            {
                return(BadRequest("Error while listing incomes"));
            }
        }