Beispiel #1
0
 public void SetSource(ITransactionFilteredSource filteredSource)
 {
     _filteredSource      = filteredSource;
     Account              = filteredSource.Account;
     Category             = filteredSource.Category;
     IncludeSubCategories = filteredSource.IncludeSubCategories;
     StartDate            = filteredSource.DataStart;
     EndDate              = filteredSource.DataEnd;
 }
Beispiel #2
0
 public CategoryTransactionsReportViewModel(IAccountStorage accountStorage, ICategoryStorage categoryStorage, ITransactionStorage transactionStorage)
 {
     _accountStorage     = accountStorage ?? throw new ArgumentNullException(nameof(accountStorage));
     _categoryStorage    = categoryStorage ?? throw new ArgumentNullException(nameof(categoryStorage));;
     _transactionStorage = transactionStorage ?? throw new ArgumentNullException(nameof(transactionStorage));
     _filteredSource     = new TransactionFilteredSource(DateTime.Now, DateTime.Now);
     Accounts            = new ObservableCollection <IAccount>(_accountStorage.GetAllAccounts());
     Categories          = new ObservableCollection <ICategory>(_categoryStorage.MakeFlatCategoryTree());
     StartDate           = DateTimeOffset.Now;
     EndDate             = StartDate;
 }
Beispiel #3
0
        public Dictionary <CategoryAccountPair, ReportOutputValues> Execute(ITransactionFilteredSource transactionFilteredSource)
        {
            var sum = RetrieveDataFromStorage(transactionFilteredSource).ToArray();

            var activeAccounts = sum.GroupBy(x => x.Account).Select(g => (g.Key));

            var flatCategory = _categoryStorage.MakeFlatCategoryTree().ToArray();

            var totalCategoryList = FillTotalCategoryList(flatCategory, activeAccounts);

            CalculateSumForCategories(sum, flatCategory, totalCategoryList);

            RemoveLinesWithZeroSum(totalCategoryList);

            return(totalCategoryList);
        }
Beispiel #4
0
        private IEnumerable <SumByCategories> RetrieveDataFromStorage(
            ITransactionFilteredSource transactionFilteredSource)
        {
            var allTransactions = transactionFilteredSource.GetTransactions(_transactionStorage).ToArray();//_transactionStorage.GetAllTransactions();

            var totalSum = allTransactions.Sum(x => x.Total);

            var sumByCategories = allTransactions.GroupBy(x => new Tuple <IAccount, ICategory>(x.Account, x.Category));

            var sum = sumByCategories.Select(g => new SumByCategories
            {
                Account    = g.Key.Item1,
                Category   = g.Key.Item2,
                Total      = g.Sum(x => x.Total),
                Percentage = GetPercentage(g.Sum(x => x.Total), totalSum),
            });

            return(sum);
        }
Beispiel #5
0
 public IEnumerable <ITransaction> Execute(ITransactionFilteredSource transactionFilteredSource)
 {
     return(transactionFilteredSource.GetTransactions(_transactionStorage));
 }