-
Notifications
You must be signed in to change notification settings - Fork 0
/
GraphProjection.xaml.cs
113 lines (94 loc) · 2.99 KB
/
GraphProjection.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using LiveCharts;
using LiveCharts.Wpf;
using System.ComponentModel;
using System.Linq;
using System.Windows;
namespace CryptoCurrencie
{
public partial class GraphProjection : Window, INotifyPropertyChanged
{
public MainWindow ParentMainWindow { get; set; }
public int NumberOfPeriods { get; set; }
public double ProfitPercentage { get; set; }
public String SelectedTimePeriod { get; set; }
public SeriesCollection SeriesCollectionProjection { get; set; }
public GraphProjection(int numberOfPeriods, double profitPercentage, string selectedTimePeriod, MainWindow parentMainWindow)
{
InitializeComponent();
NumberOfPeriods = numberOfPeriods;
ProfitPercentage = profitPercentage;
SelectedTimePeriod = selectedTimePeriod;
ParentMainWindow = parentMainWindow;
DataContext = this;
}
public void CalculateAndSetNewGraph(Portfolio userPortfolio)
{
System.Diagnostics.Debug.WriteLine("======> Main SelectedTimePeriod: " + ProfitPercentage);
SeriesCollectionProjection = new SeriesCollection
{
new ColumnSeries
{
Title = "Investments",
Values = new ChartValues<double>(),
DataLabels = true
},
new ColumnSeries
{
Title = "Profits",
Values = new ChartValues<double>(),
DataLabels = true
}
};
if (SelectedTimePeriod == "Years")
{
for (int i = 1; i <= NumberOfPeriods; i++)
{
double totalInvestment = userPortfolio.CalculateTotalInvestment;
// Calcul Profit
double totalProfits;
ChartValues<double> values = (ChartValues<double>)SeriesCollectionProjection[1].Values;
int lastIndex = values.Count - 1;
if (lastIndex >= 0)
{
totalProfits = values[lastIndex] * Math.Pow(1 + (ProfitPercentage / 100), i);
}
else
{
totalProfits = userPortfolio.CalculateTotalProfits;
}
// Ajouter les valeurs à la série
SeriesCollectionProjection[0].Values.Add(totalInvestment);
SeriesCollectionProjection[1].Values.Add(totalProfits);
}
}
else if (SelectedTimePeriod == "Months")
{
for (int i = 1; i <= NumberOfPeriods; i++)
{
double totalInvestment = userPortfolio.CalculateTotalInvestment;
// Calcul Profit
double totalProfits;
ChartValues<double> values = (ChartValues<double>)SeriesCollectionProjection[1].Values;
int lastIndex = values.Count - 1;
if (lastIndex >= 0)
{
totalProfits = (double)values[lastIndex] * Math.Pow(1 + ((ProfitPercentage / 100) / 12), i);
}
else
{
totalProfits = userPortfolio.CalculateTotalProfits;
}
// Ajouter les valeurs à la série
SeriesCollectionProjection[0].Values.Add(totalInvestment);
SeriesCollectionProjection[1].Values.Add(totalProfits);
}
}
OnPropertyChanged(nameof(SeriesCollectionProjection));
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}