Statistiques
| Branche: | Révision:

root / GES_PAC / ViewModel / CreateSetViewModel.cs @ 3fef487c

Historique | Voir | Annoter | Télécharger (3,665 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 3fef487c lbihannic
                var today = DateTime.Today;
34
                var now = DateTime.Now;
35
                var proposedTime = today + value;
36
37
                if (proposedTime > now.AddHours(6))
38
                    _dateTimeMAJ = today.AddDays(-1) + value;
39
                else
40
                    _dateTimeMAJ = today + value;
41
42 09d4a0de lbihannic
                OnPropertyChanged();
43
                ValidateForm();
44
            }
45
        }
46
47 3fef487c lbihannic
48 09d4a0de lbihannic
        public double? Temperature
49
        {
50
            get => _temperature;
51
            set
52
            {
53
                _temperature = value;
54
                OnPropertyChanged();
55
                ValidateForm();
56
            }
57
        }
58
59
        public double? Pression
60
        {
61
            get => _pression;
62
            set
63
            {
64
                _pression = value;
65
                OnPropertyChanged();
66
                ValidateForm();
67
            }
68
        }
69
70
        public double? Humidite
71
        {
72
            get => _humidite;
73
            set
74
            {
75
                _humidite = value;
76
                OnPropertyChanged();
77
                ValidateForm();
78
            }
79
        }
80
81
        public bool IsFormValid
82
        {
83
            get => _isFormValid;
84
            set
85
            {
86
                _isFormValid = value;
87
                OnPropertyChanged();
88
            }
89
        }
90
91
        public bool DateMAJError { get; private set; } = true;
92
        public bool TemperatureError { get; private set; } = true;
93
        public bool HumiditeError { get; private set; } = true;
94
        public bool PressionError { get; private set; } = true;
95
        #endregion
96
97
        #region Constructeurs
98
        public CreateSetViewModel()
99
        {
100
            CreateSetCommand = new Command(async () => await CreateSet());
101
        }
102
        #endregion
103
104
        #region Méthodes
105
106
        private async Task CreateSet()
107
        {
108 1019554c lbihannic
            if (IsBusy) return;
109 09d4a0de lbihannic
            IsBusy = true;
110
            var date = DateTime.Now;
111
            var journeeActuelle = JourneeViewModel.Instance.GetCurrentDay();
112
            var newSet = new Serie(date, DateTimeMAJ, Temperature ?? 0, Humidite ?? 0, Pression ?? 0);
113 12ddf7ef lbihannic
            journeeActuelle.AddSet(newSet);
114 09d4a0de lbihannic
115 6f451cc1 lbihannic
            App.Db.Serie.Add(newSet);
116
            await App.Db.SaveChangesAsync();
117
118 42456640 lbihannic
            await Shell.Current.Navigation.PopToRootAsync();
119 09d4a0de lbihannic
            IsBusy = false;
120
        }
121
122
        private void ValidateForm()
123
        {
124 9fd69a0e lbihannic
            DateMAJError = DateTimeMAJ > DateTime.Now.AddHours(-1);
125 09d4a0de lbihannic
            TemperatureError = Temperature == null;
126
            HumiditeError = Humidite == null;
127
            PressionError = Pression == null;
128
129
            OnPropertyChanged(nameof(DateMAJError));
130
            OnPropertyChanged(nameof(TemperatureError));
131
            OnPropertyChanged(nameof(HumiditeError));
132
            OnPropertyChanged(nameof(PressionError));
133
134
            IsFormValid = !DateMAJError && !TemperatureError && !HumiditeError && !PressionError;
135
136
            (CreateSetCommand as Command)?.ChangeCanExecute();
137
        }
138
        #endregion
139
    }
140
}