예제 #1
0
        /// <summary>
        /// Creates a chart where the result of the calculation is displayed
        /// </summary>
        /// <param name="averageIncomes">Average of income per month</param>
        /// <param name="averageExpenses">Average of expense per month</param>
        public void CreateCalculationReport(decimal averageIncomes, decimal averageExpenses)
        {
            decimal balance;
            decimal calcBalance;

            // first clear the series
            LineChart.Series           = new List <Series>();
            LineChart.SeriesCollection = new SeriesCollection();

            // get the actual balance as the startin amount
            using (var db = new DataModel())
            {
                balance = db.AccountBalance
                          .First(ab => ab.AccountID == MainViewModel.CurrentAccount.AccountID)
                          .Balance
                          .GetValueOrDefault();
            }

            calcBalance = balance;

            // set the start date to the first day of the month
            var startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(1);

            Console.WriteLine("Report:\nStart date: {0}", startDate);

            // get the average expense of the calculated data
            decimal averageCalcExpenses = CalculationResult.Sum(cr => cr.Limit);

            Console.WriteLine("Average income: {0}\nAverage expense: {1}\nCalculated expense: {2}", averageIncomes, averageExpenses, averageCalcExpenses);

            ChartValues <double> normalBalance     = new ChartValues <double>();
            ChartValues <double> calculatedBalance = new ChartValues <double>();
            List <string>        labels            = new List <string>();

            for (var i = startDate; i <= CalculationFilter.DueDate; i = i.AddMonths(1))
            {
                labels.Add(i.ToString("yyyy MMMM"));
                normalBalance.Add((double)balance);
                calculatedBalance.Add((double)calcBalance);
                balance     += averageIncomes - averageExpenses;
                calcBalance += averageIncomes - averageCalcExpenses;
            }

            LineChart.Labels = labels.ToArray();

            LineChart.Series.Add(new LineSeries
            {
                Title  = "Egyenleg alakulása",
                Values = normalBalance
            });
            LineChart.Series.Add(new LineSeries
            {
                Title  = "Egyenleg alakulása kalkulációval",
                Values = calculatedBalance
            });

            LineChart.SeriesCollection.AddRange(LineChart.Series);
        }