using projet.modele; using System; using System.Collections.Generic; namespace projet.dal { /// /// Méthodes d'accès aux données pour les absences du personnel. /// public class AbsenceAccess { private readonly Access access; /// /// Récupère l'instance de la classe Access pour accéder à la base de données. /// public AbsenceAccess() { access = Access.GetInstance(); } /// /// Donne la liste des absences d'un personnel. /// /// Personne concernée /// public List GetAbsences(Personnel personnel) { List absences = new List(); if (access.Manager != null) { string req2 = "SELECT a.idPersonnel, a.dateDebut, a.dateFin, m.libelle FROM absence a JOIN motif m ON a.idMotif = m.idMotif WHERE a.idPersonnel = @idPersonnel ORDER BY a.dateDebut;"; var parameters = new Dictionary { { "@idPersonnel", personnel.IdPersonnel } }; try { List resultats = access.Manager.ReqSelect(req2, parameters); if (resultats != null) { foreach (Object[] resultat in resultats) { string idMotif = Convert.ToString(resultat[3]) ?? string.Empty; Absence absence = new Absence( Convert.ToInt32(resultat[0]), // IdPersonnel Convert.ToDateTime(resultat[1]), // DateDebut Convert.ToDateTime(resultat[2]), // DateFin idMotif // Motif ); absences.Add(absence); } } return absences; } catch (Exception) { Console.WriteLine("Erreur lors de la récupération des absences du personnel."); Environment.Exit(0); } } return absences; } /// /// Méthode d'ajout d'une absence pour un personnel. /// /// Absence à rajouter /// Personne à laquelle rajouter l'absence public void AddAbsence(Absence absence, Personnel personne) { if (access.Manager != null) { string req = "INSERT INTO absence (idPersonnel, dateDebut, dateFin, idMotif) VALUES (@idPersonnel, @dateDebut, @dateFin, @idMotif);"; var parameters = new Dictionary { { "@idPersonnel", personne.IdPersonnel }, { "@dateDebut", absence.DateDebut }, { "@dateFin", absence.DateFin }, { "@idMotif", Convert.ToInt32(absence.IdMotif) } }; try { access.Manager.ReqUpdate(req, parameters); } catch (Exception) { Console.WriteLine("Erreur lors de l'ajout de l'absence."); Environment.Exit(0); } } } /// /// Méthode de suppression d'une absence pour un personnel. /// /// Absence concernée public void DeleteAbsence(Absence absence) { if (access.Manager != null) { string req = "DELETE FROM absence WHERE idPersonnel = @idPersonnel AND dateDebut = @dateDebut AND dateFin = @dateFin AND idMotif = @idMotif;"; var parameters = new Dictionary { { "@idPersonnel", absence.IdPersonnel }, { "@dateDebut", absence.DateDebut }, { "@dateFin", absence.DateFin }, { "@idMotif", Convert.ToInt32(absence.IdMotif) } }; try { access.Manager.ReqUpdate(req, parameters); } catch (Exception) { Console.WriteLine("Erreur lors de la suppression de l'absence."); Environment.Exit(0); } } } public void ModifierAbsence(Absence absence, Personnel personne) { if (access.Manager != null) { string req = "UPDATE absence SET dateFin = @dateFin, idMotif = @idMotif WHERE idPersonnel = @idPersonnel AND dateDebut = @dateDebut;"; var parameters = new Dictionary { { "@idPersonnel", personne.IdPersonnel }, { "@dateDebut", absence.DateDebut }, { "@dateFin", absence.DateFin }, { "@idMotif", Convert.ToInt32(absence.IdMotif) } }; try { access.Manager.ReqUpdate(req, parameters); } catch (Exception) { Console.WriteLine("Erreur lors de la modification de l'absence."); Environment.Exit(0); } } } } }