using HegreHotel.Models; using Microsoft.Maui.Controls; using System.Collections.ObjectModel; using System.IO; using System.Linq; using Microsoft.Maui.Storage; namespace HegreHotel.Views.Chambre { public partial class ChambresPage : ContentPage { private ObservableCollection _toutesLesChambres = new(); private List _statuts; public ChambresPage() { InitializeComponent(); LoadChambresEtStatuts(); } private async void LoadChambresEtStatuts() { string dbPath = Path.Combine(FileSystem.AppDataDirectory, "HegreHotel.db3"); var db = SingletonConnection.GetInstance(dbPath); _statuts = await db.Table().ToListAsync(); var statutsAvecTous = new List { "Tous" }; statutsAvecTous.AddRange(_statuts.Select(s => s.Libelle)); PickerFiltreStatus.ItemsSource = statutsAvecTous; var chambresList = await db.Table().ToListAsync(); _toutesLesChambres.Clear(); foreach (var chambre in chambresList) { _toutesLesChambres.Add(chambre); } FiltrerChambres(); } private void OnFiltreChanged(object sender, EventArgs e) { FiltrerChambres(); } private void FiltrerChambres() { if (PickerFiltreStatus.SelectedIndex <= 0) { ChambresListView.ItemsSource = _toutesLesChambres; } else { var statutSelectionne = _statuts[PickerFiltreStatus.SelectedIndex - 1].Id; ChambresListView.ItemsSource = _toutesLesChambres.Where(c => c.StatusId == statutSelectionne).ToList(); } } private async void OnAjouterChambreClicked(object sender, EventArgs e) { await Navigation.PushAsync(new AjouterChambrePage()); } private async void OnModifierChambreClicked(object sender, EventArgs e) { var chambre = ((Button)sender).CommandParameter as Models.Chambre; if (chambre != null) { await Navigation.PushAsync(new ModifierChambrePage(chambre)); } } private async void OnSupprimerChambreClicked(object sender, EventArgs e) { var chambre = ((Button)sender).CommandParameter as Models.Chambre; if (chambre != null) { bool confirmation = await DisplayAlert("Suppression", "Voulez-vous vraiment supprimer cette chambre ?", "Oui", "Non"); if (confirmation) { string dbPath = Path.Combine(FileSystem.AppDataDirectory, "HegreHotel.db3"); var db = SingletonConnection.GetInstance(dbPath); await db.DeleteAsync(chambre); LoadChambresEtStatuts(); } } } private void ChambresPage_OnAppearing(object? sender, EventArgs e) { LoadChambresEtStatuts(); } } }