Statistiques
| Branche: | Révision:

root / GES_PAC / ViewModel / CreateDayViewModel.cs @ eac868a1

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

1 65ad7e66 Lucas Bihannic
using GES_PAC.Model;
2
using GES_PAC.View;
3
using System.Collections.ObjectModel;
4
using System.Windows.Input;
5
6
namespace GES_PAC.ViewModel
7
{
8
    public class CreateDayViewModel : BaseViewModel
9
    {
10
        public ObservableCollection<Personne> Persons => PersonViewModel.Instance.Persons;
11
12
        private Personne _selectedPerson;
13
        public Personne SelectedPerson
14
        {
15
            get => _selectedPerson;
16
            set
17
            {
18
                _selectedPerson = value;
19
                OnPropertyChanged();
20
                ValidateForm();
21
            }
22
        }
23
24
        public ObservableCollection<Lieu> Places => PlaceViewModel.Instance.Places;
25
26
        private Lieu _selectedPlace;
27
        public Lieu SelectedPlace
28
        {
29
            get => _selectedPlace;
30
            set {
31
                _selectedPlace = value;
32
                OnPropertyChanged();
33
                ValidateForm();
34
            }
35
        }
36
37
        private string _espece;
38
        public string Espece
39
        {
40
            get => _espece;
41
            set
42
            {
43
                _espece = value;
44
                OnPropertyChanged();
45
                ValidateForm();
46
            }
47
        }
48
49
        private string _regime;
50
        public string Regime
51
        {
52
            get => _regime;
53
            set
54
            {
55
                _regime = value;
56
                OnPropertyChanged();
57
                ValidateForm();
58
            }
59
        }
60
        private bool _isFormValid;
61
        public bool IsFormValid
62
        {
63
            get => _isFormValid;
64
            set
65
            {
66
                _isFormValid = value;
67
                OnPropertyChanged();
68
            }
69
        }
70
71
        public bool PlaceError { get; private set; } = true;
72
        public bool PersonError { get; private set; } = true;
73
        public bool EspeceError { get; private set; } = true;
74
        public bool RegimeError { get; private set; } = true;
75
76
        public ICommand ReturnCommand { get; }
77
        public ICommand CreateDayCommand { get; }
78
        public ICommand AddPersonCommand { get; }
79
        public ICommand AddPlaceCommand { get; }
80
81
82
        public CreateDayViewModel()
83
        {
84
            ReturnCommand = new Command(async () => await Return());
85
            CreateDayCommand = new Command(async () => await CreateDay());
86
            AddPersonCommand = new Command(async () => await AddPerson());
87
            AddPlaceCommand = new Command(async () => await AddPlace());
88
        }
89
90
        private async Task Return() => await Shell.Current.GoToAsync("..");
91
        private async Task AddPerson() => await Shell.Current.GoToAsync(nameof(CreatePersonView));
92
        private async Task AddPlace() => await Shell.Current.GoToAsync(nameof(CreatePlaceView));
93
        private async Task CreateDay()
94
        {
95
            var date = DateTime.Now;
96
            var newDay = new Journee(date, SelectedPerson, SelectedPlace, Espece, Regime);
97
            JourneeViewModel.Instance.Journees.Add(newDay);
98
            await Shell.Current.GoToAsync("///Main");
99
        }
100
101
        private void ValidateForm()
102
        {
103
            PersonError = SelectedPerson == null;
104
            PlaceError = SelectedPlace == null;
105
            EspeceError = string.IsNullOrWhiteSpace(Espece) || Espece.Length < 3;
106
            RegimeError = string.IsNullOrWhiteSpace(Regime) || Regime.Length < 3;
107
108
            OnPropertyChanged(nameof(PlaceError));
109
            OnPropertyChanged(nameof(PersonError));
110
            OnPropertyChanged(nameof(EspeceError));
111
            OnPropertyChanged(nameof(RegimeError));
112
113
            IsFormValid = !PlaceError && !PersonError && !EspeceError && !RegimeError;
114
115
            (CreateDayCommand as Command)?.ChangeCanExecute();
116
        }
117
118
    }
119
}