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 WHERE idPersonnel = @idPersonnel AND dateDebut = @dateDebut AND idMotif = @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 la modification de l'absence.");
Environment.Exit(0);
}
}
}
}
}