Statistiques
| Branche: | Révision:

root / GES_PAC / ViewModel / CreateSetViewModel.cs @ 6f451cc1

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

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