152 lines
5.9 KiB
C#
152 lines
5.9 KiB
C#
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;
|
|
/// <summary>
|
|
/// Méthode d'initialisation du formulaire de gestion des absences pour un personnel spécifique.
|
|
/// </summary>
|
|
/// <param name="personne">Personne concernée</param>
|
|
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
|
|
RemplirComboBoxAbsence();
|
|
}
|
|
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<Motif> 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<Absence> 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);
|
|
}
|
|
}
|
|
}
|