public void SetSource(ITransactionFilteredSource filteredSource) { _filteredSource = filteredSource; Account = filteredSource.Account; Category = filteredSource.Category; IncludeSubCategories = filteredSource.IncludeSubCategories; StartDate = filteredSource.DataStart; EndDate = filteredSource.DataEnd; }
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; }
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); }
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); }
public IEnumerable <ITransaction> Execute(ITransactionFilteredSource transactionFilteredSource) { return(transactionFilteredSource.GetTransactions(_transactionStorage)); }