<commit_before>﻿using Lama.Logic.Model;
using Lama.UI.Win;
using LamaBD;
using LamaBD.helper;
using MahApps.Metro.Controls;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Lama.UI.UC.Creation
{
    /// <summary>
    /// Logique d'interaction pour VolontairesView.xaml
    /// </summary>
    public partial class VolontairesView : UserControl
    {
        public ObservableCollection<Volontaire> LstVolontaires { get; set; }

        public VolontairesView()
        {
            InitializeComponent();

            LstVolontaires = ChargerVolontaires();

            dgVolontaires.ItemsSource = LstVolontaires;
        }

        // ajouter le volontaire
        void OnChecked(object sender, RoutedEventArgs e)
        {
            DataGridCell dgc = sender as DataGridCell;

            ((Tournoi)DataContext).LstVolontaires.Add(dgc.DataContext as Volontaire);
        }

        // enlever le volontaire
        void OnUnchecked(object sender, RoutedEventArgs e)
        {
            DataGridCell dgc = sender as DataGridCell;

            ((Tournoi)DataContext).LstVolontaires.Remove(dgc.DataContext as Volontaire);
        }

        private ObservableCollection<Volontaire> ChargerVolontaires()
        {
            var task = CompteHelper.SelectAllAdminAsync(false);
            task.Wait();

            List<comptes> data = task.Result;

            ObservableCollection<Volontaire> lstTemp = new ObservableCollection<Volontaire>();

            foreach (var volontaire in data)
            {
                lstTemp.Add(new Volontaire(volontaire.nom, volontaire.prenom, volontaire.matricule, volontaire.courriel, volontaire.nomUtilisateur));
            }

            return lstTemp;
        }

        private void dgVolontaires_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            DataGrid dg = sender as DataGrid;

            if (dg.SelectedIndex == -1)
            {
                e.Handled = true;
            }
        }

        private void miModifier_Click(object sender, RoutedEventArgs e)
        {
            // Le sender est le menu item
            MenuItem mi = sender as MenuItem;

            // On va chercher le parent du menu item (c'est donc le ContextMenu)
            ContextMenu cm = mi.Parent as ContextMenu;

            // Avec le ContextMenu, on peut aller chercher la datagrid
            DataGrid dg = cm.PlacementTarget as DataGrid;

            // On va chercher le volontaire
            Volontaire v = dg.SelectedItem as Volontaire;

            AjouterVolontaire av = new AjouterVolontaire(v);

            av.ShowDialog();

            if (av.LeVolontaire != null)
            {
                // Trouver l'index de v
                int index = LstVolontaires.IndexOf(v);

                // Modifier le volontaire à cet index
                LstVolontaires[index] = av.LeVolontaire;

                //TODO: modifier dans la BD
            }
        }

        private void miSupprimer_Click(object sender, RoutedEventArgs e)
        {
            // Le sender est le menu item
            MenuItem mi = sender as MenuItem;

            // On va chercher le parent du menu item (c'est donc le ContextMenu)
            ContextMenu cm = mi.Parent as ContextMenu;

            // Avec le ContextMenu, on peut aller chercher la datagrid
            DataGrid dg = cm.PlacementTarget as DataGrid;

            // On va chercher le volontaire
            Volontaire v = dg.SelectedItem as Volontaire;

            MessageBoxResult mbr = MessageBox.Show("Êtes-vous certain de vouloir supprimer le volontaire? Ceci entraînera des changements irréversibles dans la base de données.",
                                                   "Supprimer",
                                                   MessageBoxButton.YesNo,
                                                   MessageBoxImage.Question,
                                                   MessageBoxResult.No);
<commit_msg>Fix la modification d'un volontaire<commit_after>﻿using Lama.Logic.Model;
using Lama.UI.Win;
using LamaBD;
using LamaBD.helper;
using MahApps.Metro.Controls;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Lama.UI.UC.Creation
{
    /// <summary>
    /// Logique d'interaction pour VolontairesView.xaml
    /// </summary>
    public partial class VolontairesView : UserControl
    {
        public ObservableCollection<Volontaire> LstVolontaires { get; set; }

        public VolontairesView()
        {
            InitializeComponent();

            LstVolontaires = ChargerVolontaires();

            dgVolontaires.ItemsSource = LstVolontaires;
        }

        // ajouter le volontaire
        void OnChecked(object sender, RoutedEventArgs e)
        {
            DataGridCell dgc = sender as DataGridCell;

            ((Tournoi)DataContext).LstVolontaires.Add(dgc.DataContext as Volontaire);
        }

        // enlever le volontaire
        void OnUnchecked(object sender, RoutedEventArgs e)
        {
            DataGridCell dgc = sender as DataGridCell;

            ((Tournoi)DataContext).LstVolontaires.Remove(dgc.DataContext as Volontaire);
        }

        private ObservableCollection<Volontaire> ChargerVolontaires()
        {
            var task = CompteHelper.SelectAllAdminAsync(false);
            task.Wait();

            List<comptes> data = task.Result;

            ObservableCollection<Volontaire> lstTemp = new ObservableCollection<Volontaire>();

            foreach (var volontaire in data)
            {
                lstTemp.Add(new Volontaire(volontaire.nom, volontaire.prenom, volontaire.matricule, volontaire.courriel, volontaire.nomUtilisateur));
            }

            return lstTemp;
        }

        private void dgVolontaires_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            DataGrid dg = sender as DataGrid;

            if (dg.SelectedIndex == -1)
            {
                e.Handled = true;
            }
        }

        private void miModifier_Click(object sender, RoutedEventArgs e)
        {
            // Le sender est le menu item
            MenuItem mi = sender as MenuItem;

            // On va chercher le parent du menu item (c'est donc le ContextMenu)
            ContextMenu cm = mi.Parent as ContextMenu;

            // Avec le ContextMenu, on peut aller chercher la datagrid
            DataGrid dg = cm.PlacementTarget as DataGrid;

            // On va chercher le volontaire
            Volontaire v = dg.SelectedItem as Volontaire;

            AjouterVolontaire av = new AjouterVolontaire(v);

            av.ShowDialog();

            if (av.LeVolontaire != null)
            {
                // Trouver l'index de v
                int index = LstVolontaires.IndexOf(v);

                if (index != -1)
                {
                    // Modifier le volontaire à cet index
                    LstVolontaires[index] = av.LeVolontaire;
                }

                index = (DataContext as Tournoi).LstVolontaires.IndexOf(v);

                if (index != -1)
                {
                    (DataContext as Tournoi).LstVolontaires[index] = av.LeVolontaire;
                }

                //TODO: update dans la bd
            }
        }

        private void miSupprimer_Click(object sender, RoutedEventArgs e)
        {
            // Le sender est le menu item
            MenuItem mi = sender as MenuItem;

            // On va chercher le parent du menu item (c'est donc le ContextMenu)
            ContextMenu cm = mi.Parent as ContextMenu;

            // Avec le ContextMenu, on peut aller chercher la datagrid
            DataGrid dg = cm.PlacementTarget as DataGrid;

            // On va chercher le volontaire
            Volontaire v = dg.SelectedItem as Volontaire;

            MessageBoxResult mbr = MessageBox.Show("Êtes-vous certain de vouloir supprimer le volontaire? Ceci entraînera des changements irréversibles dans la base de données.",
                                                   "Supprimer",
                                                   MessageBoxButton.YesNo,
                                                   MessageBoxImage.Question,
                                                   MessageBoxResult.No);

{'fraction_non_alphanumeric': 0.07218895542248836, 'fraction_numerical': 0.00044355732978487467, 'mean_word_length': 1.8087823108066023, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5001006', 'n_tokens_mistral': 2459, 'n_tokens_neox': 2358, 'n_words': 632}