using projet.modele; using projet.Controller; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace projet.View { public partial class GestionAbsence : Form { private Personnel personne; private GestionAbsenceController controller; /// /// Méthode d'initialisation du formulaire de gestion des absences pour un personnel spécifique. /// /// Personne concernée public GestionAbsence(Personnel personne) { InitializeComponent(); this.personne = personne; Init(); labelTitle.Text = $"Gestion des absences de {personne.Nom} {personne.Prenom}"; RemplirComboBoxMotif(); RemplirComboBoxAbsence(); } private void Init() { controller = new GestionAbsenceController(); // Effacer les colonnes par défaut avant d'assigner la source de données dataGridViewAbsences.Columns.Clear(); dataGridViewAbsences.DataSource = controller.GetAbsences(personne); dataGridViewAbsences.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; // Configuration des colonnes dataGridViewAbsences.Columns["IdPersonnel"].Visible = false; dataGridViewAbsences.Columns["DateDebut"].HeaderText = "Date de début"; dataGridViewAbsences.Columns["DateFin"].HeaderText = "Date de fin"; dataGridViewAbsences.Columns["IdMotif"].HeaderText = "Motif"; // Format des dates dataGridViewAbsences.Columns["DateDebut"].DefaultCellStyle.Format = "dd/MM/yyyy"; dataGridViewAbsences.Columns["DateFin"].DefaultCellStyle.Format = "dd/MM/yyyy"; } private void buttonAjouter_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(textBoxDateDebut.Text) || !string.IsNullOrEmpty(textBoxDateFin.Text) || comboBoxMotif.SelectedItem != null) { string dateDebutStr = textBoxDateDebut.Text; string dateFinStr = textBoxDateFin.Text; DateTime dateDebut, dateFin; if (DateTime.TryParseExact(dateDebutStr, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None, out dateDebut) && DateTime.TryParseExact(dateFinStr, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None, out dateFin)) { string idMotif = Convert.ToString(((Motif)comboBoxMotif.SelectedItem).IdMotif); Absence absence = new Absence(personne.IdPersonnel, dateDebut, dateFin, idMotif); controller.AddAbsence(absence, personne); dataGridViewAbsences.DataSource = controller.GetAbsences(personne); textBoxDateDebut.Clear(); textBoxDateFin.Clear(); comboBoxMotif.SelectedIndex = -1; // Réinitialiser la sélection du motif } else { MessageBox.Show("Erreur : Format de date invalide\nUtilisez le format : dd-MM-yyyy", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Veuillez remplir tous les champs.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void RemplirComboBoxMotif() { List motifs = controller.GetAllMotifs(); foreach (Motif motif in motifs) { comboBoxMotif.Items.Add(motif); } } private void buttonSupprimer_Click(object sender, EventArgs e) { if (comboBoxAbsence.SelectedIndex == -1) { MessageBox.Show("Veuillez sélectionner une absence à supprimer.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { Absence absence = (Absence)comboBoxAbsence.SelectedItem; int idMotif = controller.GetMotifIdByLibelle(absence.IdMotif); Absence absence2 = new Absence(absence.IdPersonnel, absence.DateDebut, absence.DateFin, Convert.ToString(idMotif)); controller.DeleteAbsence(absence2); RemplirComboBoxAbsence(); dataGridViewAbsences.DataSource = controller.GetAbsences(personne); comboBoxAbsence.SelectedIndex = -1; } } private void RemplirComboBoxAbsence() { comboBoxAbsence.Items.Clear(); List absences = controller.GetAbsences(personne); foreach (Absence absence in absences) { comboBoxAbsence.Items.Add(absence); } } private void buttonBack_Click(object sender, EventArgs e) { this.Hide(); this.Close(); Admin admin = new Admin(); admin.ShowDialog(); } private void btnModifAbsence_Click(object sender, EventArgs e) { if(dataGridViewAbsences.SelectedRows == null) { MessageBox.Show("Veuillez sélectionner une absence à modifier.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { this.Hide(); this.Close(); ModifierAbsence modifierAbsence = new ModifierAbsence(dataGridViewAbsences.SelectedRows[0].DataBoundItem as Absence, personne); modifierAbsence.ShowDialog(); } } private void buttonBack_Click_1(object sender, EventArgs e) { buttonBack_Click(sender, e); } } }