private void AddNonCategorisedStatistics(List <CategoryStatistic> categoryStatistics) { MainCategoriesStatistics leftOverTransactions = new MainCategoriesStatistics(); leftOverTransactions.MainCategory = new MainCategory() { Name = "Niet gecategoriseerd", ID = -1 }; leftOverTransactions.CategoryStatistics = categoryStatistics.Where(b => b.Category.MainCategoryID == null).ToList(); if (leftOverTransactions.CategoryStatistics.Count > 0) { leftOverTransactions.Income = leftOverTransactions.CategoryStatistics.Sum(b => b.Income); leftOverTransactions.Spendings = leftOverTransactions.CategoryStatistics.Sum(b => b.Spendings); leftOverTransactions.Balance = leftOverTransactions.CategoryStatistics.Sum(b => b.Balance); MainCategoryStatistics.Add(leftOverTransactions); if (leftOverTransactions.Spendings < 0) { var series = new PieSeries() { Title = leftOverTransactions.MainCategory.Name, LabelPoint = chartPoint => string.Format("{0:C} ({1:P})", chartPoint.Y, chartPoint.Participation), DataLabels = true, Foreground = new SolidColorBrush(Colors.Black), Tag = categoryStatistics, Values = new ChartValues <double>(new double[] { leftOverTransactions.Spendings }) }; MainCategorySeriesCollection.Add(series); } if (leftOverTransactions.Income > 0) { var series = new PieSeries() { Title = leftOverTransactions.MainCategory.Name, LabelPoint = chartPoint => string.Format("{0:C} ({1:P})", chartPoint.Y, chartPoint.Participation), DataLabels = true, Foreground = new SolidColorBrush(Colors.Black), Tag = leftOverTransactions, Values = new ChartValues <double>(new double[] { leftOverTransactions.Income }) }; MainCategoryIncomeSeriesCollection.Add(series); } } }
private void CreateMainCategoryStatistics(List <CategoryStatistic> categoryStatistics) { MainCategoryStatistics = new ObservableCollection <MainCategoriesStatistics>(); MainCategoryIncomeSeriesCollection = new SeriesCollection(); MainCategorySeriesCollection = new SeriesCollection(); AddNonCategorisedStatistics(categoryStatistics); var mainCategories = categoryStatistics.Where(b => b.Category.MainCategory != null).Select(b => b.Category.MainCategory).GroupBy(b => b.ID).Select(b => b.First()).ToList(); foreach (var mainCategory in mainCategories) { MainCategoriesStatistics statistics = new MainCategoriesStatistics(); statistics.MainCategory = mainCategory; statistics.CategoryStatistics = categoryStatistics.Where(b => b.Category.MainCategoryID == mainCategory.ID).ToList(); statistics.Income = statistics.CategoryStatistics.Sum(b => b.Income); statistics.Spendings = statistics.CategoryStatistics.Sum(b => b.Spendings); statistics.Balance = statistics.CategoryStatistics.Sum(b => b.Balance); MainCategoryStatistics.Add(statistics); var withColor = statistics.CategoryStatistics.Where(b => !string.IsNullOrWhiteSpace(b.Category.ColorAsText)); if (statistics.Spendings < 0) { var series = new PieSeries() { Title = statistics.MainCategory.Name, LabelPoint = chartPoint => string.Format("{0:C} ({1:P})", chartPoint.Y, chartPoint.Participation), DataLabels = true, Tag = categoryStatistics, Foreground = new SolidColorBrush(Colors.Black), Values = new ChartValues <double>(new double[] { statistics.Spendings }) }; if (withColor.Count() > 0) { series.Fill = series.Fill = TextToColorConverter.Instance.Convert(withColor.First().Category.ColorAsText, typeof(Brush), null, null) as Brush; } MainCategorySeriesCollection.Add(series); } if (statistics.Income > 0) { var series = new PieSeries() { Title = statistics.MainCategory.Name, LabelPoint = chartPoint => string.Format("{0:C} ({1:P})", chartPoint.Y, chartPoint.Participation), DataLabels = true, Tag = statistics, Foreground = new SolidColorBrush(Colors.Black), Values = new ChartValues <double>(new double[] { statistics.Income }) }; if (withColor.Count() > 0) { series.Fill = series.Fill = TextToColorConverter.Instance.Convert(withColor.First().Category.ColorAsText, typeof(Brush), null, null) as Brush; } MainCategoryIncomeSeriesCollection.Add(series); } } if (_lastSelectedCategorieStatistic != null) { var lastSelected = _lastSelectedCategorieStatistic; if (lastSelected.Category.MainCategoryID == null) { SelectedMainCategorieStatistic = MainCategoryStatistics.Where(b => b.MainCategory.ID == -1).FirstOrDefault(); } else { SelectedMainCategorieStatistic = MainCategoryStatistics.Where(b => b.MainCategory.ID == lastSelected.Category.MainCategoryID).FirstOrDefault();; } SelectedCategorieStatistic = SelectedMainCategorieStatistic.CategoryStatistics.Where(b => b.Category.ID == lastSelected.Category.ID).FirstOrDefault();; if (_lastSelectedTransaction != null) { foreach (var transaction in SelectedCategorieStatistic.Transactions) { if (transaction.ID == _lastSelectedTransaction.ID) { SelectedTransaction = transaction; break; } } } } else { SelectedMainCategorieStatistic = MainCategoryStatistics.FirstOrDefault(); } }