145 lines
5.6 KiB
C#
145 lines
5.6 KiB
C#
using projet.modele;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace projet.dal
|
|
{
|
|
/// <summary>
|
|
/// Méthodes d'accès aux données pour les absences du personnel.
|
|
/// </summary>
|
|
public class AbsenceAccess
|
|
{
|
|
private readonly Access access;
|
|
/// <summary>
|
|
/// Récupère l'instance de la classe Access pour accéder à la base de données.
|
|
/// </summary>
|
|
public AbsenceAccess()
|
|
{
|
|
access = Access.GetInstance();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Donne la liste des absences d'un personnel.
|
|
/// </summary>
|
|
/// <param name="personnel">Personne concernée</param>
|
|
/// <returns></returns>
|
|
public List<Absence> GetAbsences(Personnel personnel)
|
|
{
|
|
List<Absence> absences = new List<Absence>();
|
|
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<string, object>
|
|
{
|
|
{ "@idPersonnel", personnel.IdPersonnel }
|
|
};
|
|
try
|
|
{
|
|
List<Object[]> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Méthode d'ajout d'une absence pour un personnel.
|
|
/// </summary>
|
|
/// <param name="absence">Absence à rajouter</param>
|
|
/// <param name="personne">Personne à laquelle rajouter l'absence</param>
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Méthode de suppression d'une absence pour un personnel.
|
|
/// </summary>
|
|
/// <param name="absence">Absence concernée</param>
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
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<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 la modification de l'absence.");
|
|
Environment.Exit(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|