Statistiques
| Branche: | Révision:

root / GES_PAC / ViewModel / CreateSetViewModel.cs @ 9601eaf0

Historique | Voir | Annoter | Télécharger (3,345 ko)

1 09d4a0de lbihannic
using GES_PAC.Model;
2
using GES_PAC.View;
3
using System.Windows.Input;
4
5
namespace GES_PAC.ViewModel
6
{
7
    public class CreateSetViewModel : BaseViewModel
8
    {
9
10
        #region Attributs
11
        private DateTime _dateTimeMAJ = DateTime.Now;
12
        private double? _temperature;
13
        private double? _humidite;
14
        private double? _pression;
15
        private bool _isFormValid;
16
        #endregion
17
18
        #region Commandes
19
        public ICommand CreateSetCommand { get; }
20
        #endregion
21
22
        #region Propriétés
23
24
        public DateTime DateTimeMAJ
25
        {
26
            get => _dateTimeMAJ;
27
        }
28
29
        public TimeSpan TimeMAJ
30
        {
31
            get => _dateTimeMAJ.TimeOfDay;
32
            set
33
            {
34
                _dateTimeMAJ = _dateTimeMAJ.Date + value;
35
                OnPropertyChanged();
36
                ValidateForm();
37
            }
38
        }
39
40
        public double? Temperature
41
        {
42
            get => _temperature;
43
            set
44
            {
45
                _temperature = value;
46
                OnPropertyChanged();
47
                ValidateForm();
48
            }
49
        }
50
51
        public double? Pression
52
        {
53
            get => _pression;
54
            set
55
            {
56
                _pression = value;
57
                OnPropertyChanged();
58
                ValidateForm();
59
            }
60
        }
61
62
        public double? Humidite
63
        {
64
            get => _humidite;
65
            set
66
            {
67
                _humidite = value;
68
                OnPropertyChanged();
69
                ValidateForm();
70
            }
71
        }
72
73
        public bool IsFormValid
74
        {
75
            get => _isFormValid;
76
            set
77
            {
78
                _isFormValid = value;
79
                OnPropertyChanged();
80
            }
81
        }
82
83
        public bool DateMAJError { get; private set; } = true;
84
        public bool TemperatureError { get; private set; } = true;
85
        public bool HumiditeError { get; private set; } = true;
86
        public bool PressionError { get; private set; } = true;
87
        #endregion
88
89
        #region Constructeurs
90
        public CreateSetViewModel()
91
        {
92
            CreateSetCommand = new Command(async () => await CreateSet());
93
        }
94
        #endregion
95
96
        #region Méthodes
97
98
        private async Task CreateSet()
99
        {
100 1019554c lbihannic
            if (IsBusy) return;
101 09d4a0de lbihannic
            IsBusy = true;
102
            var date = DateTime.Now;
103
            var journeeActuelle = JourneeViewModel.Instance.GetCurrentDay();
104
            var newSet = new Serie(date, DateTimeMAJ, Temperature ?? 0, Humidite ?? 0, Pression ?? 0);
105 12ddf7ef lbihannic
            journeeActuelle.AddSet(newSet);
106 09d4a0de lbihannic
107 42456640 lbihannic
            await Shell.Current.Navigation.PopToRootAsync();
108 09d4a0de lbihannic
            IsBusy = false;
109
        }
110
111
        private void ValidateForm()
112
        {
113 9fd69a0e lbihannic
            DateMAJError = DateTimeMAJ > DateTime.Now.AddHours(-1);
114 09d4a0de lbihannic
            TemperatureError = Temperature == null;
115
            HumiditeError = Humidite == null;
116
            PressionError = Pression == null;
117
118
            OnPropertyChanged(nameof(DateMAJError));
119
            OnPropertyChanged(nameof(TemperatureError));
120
            OnPropertyChanged(nameof(HumiditeError));
121
            OnPropertyChanged(nameof(PressionError));
122
123
            IsFormValid = !DateMAJError && !TemperatureError && !HumiditeError && !PressionError;
124
125
            (CreateSetCommand as Command)?.ChangeCanExecute();
126
        }
127
        #endregion
128
    }
129
}