using Hermes.Model; using System; using System.Data.Entity; using System.Collections.Generic; using System.Windows; using System.Windows.Input; using System.Windows.Data; namespace Hermes { /// /// Logique d'interaction pour MainWindow.xaml /// public partial class MainWindow : Window { private ModelContext dbContext = null; private CitoyenModal citoyenModal = new CitoyenModal(); private PreferencesModal preferencesModal = new PreferencesModal(); private CollectionViewSource citoyenCollectionViewSource = null; private bool isEnabledFilter = false; public MainWindow() { dbContext = ModelContext.Getinstance(); //dbContext.Database.Log = log => System.Console.WriteLine(log); dbContext.Database.CreateIfNotExists(); InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { citoyenModal.Owner = this; preferencesModal.Owner = this; dbContext.CitoyenSet.Load(); dbContext.Preferences.Load(); citoyenCollectionViewSource = (CollectionViewSource) this.FindResource("citoyenCollectionViewSource"); citoyenCollectionViewSource.Source = dbContext.CitoyenSet.Local; //dgCitoyens.ItemsSource = dbContext.CitoyenSet.Local; } private void Options_Click(object sender, RoutedEventArgs e) { preferencesModal.ShowDialog(); } private void Ajouter_Click(object sender, RoutedEventArgs e) { citoyenModal.EnableCreateMode(); citoyenModal.ShowDialog(); } private void Supprimer_Click(object sender, RoutedEventArgs e) { if(dgCitoyens.SelectedItems.Count > 0) { MessageBoxResult result = MessageBox.Show("Voulez-vous supprimer ces citoyens ?", "Suppression", MessageBoxButton.YesNo, MessageBoxImage.Question); if(result == MessageBoxResult.Yes) { List clist = new List(); foreach(Citoyen c in dgCitoyens.SelectedItems) { clist.Add(c); } foreach(Citoyen c in clist) { dbContext.CitoyenSet.Remove(c); } dbContext.SaveChanges(); } } else { MessageBox.Show("Aucun citoyen sélectionné", "Suppression", MessageBoxButton.OK, MessageBoxImage.Exclamation); } } private void DgCitoyen_DoubleClick(object sender, MouseButtonEventArgs e) { if(dgCitoyens.SelectedItem != null) { citoyenModal.EnableEditMode((Citoyen) dgCitoyens.SelectedItem); citoyenModal.ShowDialog(); } } private void Rechercher_Click(object sender, RoutedEventArgs e) { if(isEnabledFilter) { citoyenCollectionViewSource.View.Refresh(); } else { citoyenCollectionViewSource.Filter += new FilterEventHandler(CitoyenFilter); isEnabledFilter = true; } } private void Reinitialiser_Click(object sender, RoutedEventArgs e) { if(isEnabledFilter) { citoyenCollectionViewSource.Filter -= new FilterEventHandler(CitoyenFilter); isEnabledFilter = false; } ageOperationFilterComboBox.SelectedIndex = 0; ageFilterTextBox.Text = null; professionFilterTextBox.Text = null; quartierFilterTextBox.Text = null; adresseFilterTextBox.Text = null; residenceFilterComboBox.SelectedIndex = 0; } protected override void OnClosed(EventArgs e) { dbContext.Dispose(); base.OnClosed(e); Application.Current.Shutdown(); } private void CitoyenFilter(object sender, FilterEventArgs e) { Citoyen citoyen = (Citoyen) e.Item; e.Accepted = true; if(citoyen != null) { if(!String.IsNullOrEmpty(professionFilterTextBox.Text)) { if(citoyen.Profession == null || !citoyen.Profession.ToLower().Contains(professionFilterTextBox.Text.ToLower())) { e.Accepted = false; return; } } try { int ageFilter = Int32.Parse(ageFilterTextBox.Text); if(!citoyen.AgeInt.HasValue || (ageOperationFilterComboBox.SelectedIndex == 0 && ageFilter != citoyen.AgeInt) || (ageOperationFilterComboBox.SelectedIndex == 1 && ageFilter >= citoyen.AgeInt) || (ageOperationFilterComboBox.SelectedIndex == 2 && ageFilter <= citoyen.AgeInt)) { e.Accepted = false; return; } } catch(Exception) { } if(!String.IsNullOrEmpty(quartierFilterTextBox.Text)) { if(citoyen.Quartier == null || !citoyen.Quartier.ToLower().Contains(quartierFilterTextBox.Text.ToLower())) { e.Accepted = false; return; } } string addrBat = citoyen.AdresseBatiment == null ? "" : citoyen.AdresseBatiment; string addr = $"{citoyen.AdresseNumero} {citoyen.AdresseRue} {addrBat}".ToLower(); if(!String.IsNullOrEmpty(adresseFilterTextBox.Text)) { if(!addr.Contains(adresseFilterTextBox.Text.ToLower())) { e.Accepted = false; return; } } if((residenceFilterComboBox.SelectedIndex == 1 && citoyen.TypeResidence != false) || (residenceFilterComboBox.SelectedIndex == 2 && citoyen.TypeResidence != true)) { e.Accepted = false; return; } } } } }