mediatek86/projet/dal/AbsenceAccess.cs

102 lines
4 KiB
C#

using projet.modele;
namespace projet.dal
{
public class AbsenceAccess
{
private readonly Access access;
public AbsenceAccess()
{
access = Access.GetInstance();
}
public List<Absence> GetAbsences(Personnel personnel)
{
List<Absence> absences = new List<Absence>();
if (access.Manager != null)
{
// Sélecte toutes les absence + join libelle du motif d'absence
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;";
//string req = "SELECT * FROM absence WHERE idPersonnel = @idPersonnel ORDER BY dateDebut;";
var parameters = new Dictionary<string, object>
{
{ "@idPersonnel", personnel.IdPersonnel }
};
try
{
// Exécute la requête de sélection
List<Object[]> resultats = access.Manager.ReqSelect(req2, parameters);
if (resultats != null)
{
// Parcourt les résultats et crée des objets Absence
foreach (Object[] resultat in resultats)
{
Absence absence = new Absence(
Convert.ToInt32(resultat[0]), // IdPersonnel
Convert.ToDateTime(resultat[1]), // DateDebut
Convert.ToDateTime(resultat[2]), // DateFin
Convert.ToString(resultat[3])// 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;
}
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<string, object>
{
{ "@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);
}
}
}
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<string, object>
{
{ "@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);
}
}
}
}
}