private IEnumerable <TransactionChartViewModel> GetTransactionsChart()
        {
            var transactions = _transactionServices.GetTransactions();
            var groupedTransactionsByCategory = _transactionServices.GetGroupedTransactionsByCategory(transactions);
            var transactionsChartViewModel    = _mapper.MapToTransactionsChartViewModel(groupedTransactionsByCategory);

            return(transactionsChartViewModel);
        }
Esempio n. 2
0
        public async Task <ActionResult> Compare(List <CsvFileViewModel> csvFiles)
        {
            var compareTransactionList = new CompareViewModel();

            var selectedCsvFiles = csvFiles.Where(c => c.IsChecked).ToList();

            if (selectedCsvFiles == null)
            {
                ViewBag.Error = _localizer["EmptySelectedCsvFileError"];
                return(View(compareTransactionList));
            }

            if (selectedCsvFiles.Count < 2 || selectedCsvFiles.Count > 4)
            {
                ViewBag.Error = _localizer["BadNumberOfCsv"];
                return(View(compareTransactionList));
            }
            var transactionsToCompare = new List <TransactionsViewModel>();

            foreach (var selectedFile in selectedCsvFiles)
            {
                var filePath = GetFullFilePath(selectedFile.FileName);
                try
                {
                    var transactions        = _transactionServices.GetTransactions(filePath);
                    var groupedTransactions = _transactionServices.GetGroupedTransactionsByCategory(transactions);
                    if (groupedTransactions == null || !groupedTransactions.Any())
                    {
                        ViewBag.Error = _localizer["EmptyTransactionList"];
                        return(View(compareTransactionList));
                    }

                    var transactionViewModels = GetTransactionViewModels(groupedTransactions);

                    transactionViewModels = await AppendMissingCategoryTransactions(transactionViewModels);

                    var transactionsViewModelOrdered = transactionViewModels.OrderBy(t => t.Category.Name.ToString()).AsEnumerable();

                    transactionsViewModelOrdered = UnsignAmount(transactionsViewModelOrdered);

                    var transactionsViewModel = GetTransactionsViewModel(transactionsViewModelOrdered);

                    transactionsToCompare.Add(transactionsViewModel);
                }
                catch (Exception ex)
                {
                    ViewBag.Error = ex.Message;
                    return(View(compareTransactionList));
                }
            }
            compareTransactionList.TransactionsToCompare = OrderedTransactionsByDate(transactionsToCompare);
            CompareToAdjustTransactionColor(compareTransactionList);

            return(View(compareTransactionList));
        }
Esempio n. 3
0
        public void ShouldHaveListOfRegroupedTransactionByCategory()
        {
            // Arrange
            var faker   = new Faker();
            var csvPath = faker.Random.String2(2);

            _transactionServices.LoadTransactions(csvPath);
            const decimal expectedGroupedNAAmount = -2000;
            var           debitTransactions       = _transactionServices.GetDebitTransactions();

            // Act
            var transactions  = _transactionServices.GetGroupedTransactionsByCategory(debitTransactions);
            var NATransaction = transactions.FirstOrDefault(t => t.Category.Name.Equals("Courses"));

            // Assert
            Assert.Equal(expectedGroupedNAAmount, NATransaction.Amount);
        }