Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }