Statistiques
| Branche: | Révision:

root / GES_PAC / ViewModel / CreateSetViewModel.cs @ 9fd69a0e

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

1
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
            if (IsBusy) return;
101
            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
            journeeActuelle.AddSerie(newSet);
106

    
107
            await Shell.Current.GoToAsync(nameof(ChambersView));
108
            IsBusy = false;
109
        }
110

    
111
        private void ValidateForm()
112
        {
113
            DateMAJError = DateTimeMAJ > DateTime.Now.AddHours(-1);
114
            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
}