2025-06-03 08:31:45 +00:00
using projet.modele ;
2025-06-04 17:10:08 +00:00
using System ;
using System.Collections.Generic ;
2025-06-03 08:31:45 +00:00
namespace projet.dal
2025-05-27 14:17:40 +00:00
{
2025-06-03 10:30:47 +00:00
/// <summary>
/// Méthodes d'accès aux données pour les absences du personnel.
/// </summary>
2025-05-27 14:17:40 +00:00
public class AbsenceAccess
{
2025-06-03 08:31:45 +00:00
private readonly Access access ;
2025-06-03 10:30:47 +00:00
/// <summary>
/// Récupère l'instance de la classe Access pour accéder à la base de données.
/// </summary>
2025-06-03 08:31:45 +00:00
public AbsenceAccess ( )
{
access = Access . GetInstance ( ) ;
}
2025-06-03 10:30:47 +00:00
/// <summary>
/// Donne la liste des absences d'un personnel.
/// </summary>
/// <param name="personnel">Personne concernée</param>
/// <returns></returns>
2025-06-03 08:31:45 +00:00
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 )
{
2025-06-03 10:30:47 +00:00
string idMotif = Convert . ToString ( resultat [ 3 ] ) ? ? string . Empty ;
2025-06-03 08:31:45 +00:00
Absence absence = new Absence (
Convert . ToInt32 ( resultat [ 0 ] ) , // IdPersonnel
Convert . ToDateTime ( resultat [ 1 ] ) , // DateDebut
Convert . ToDateTime ( resultat [ 2 ] ) , // DateFin
2025-06-03 10:30:47 +00:00
idMotif // Motif
2025-06-03 08:31:45 +00:00
) ;
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 ;
}
2025-06-03 10:30:47 +00:00
/// <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>
2025-06-03 08:31:45 +00:00
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 ) ;
}
}
}
2025-05-27 14:17:40 +00:00
2025-06-03 10:30:47 +00:00
/// <summary>
/// Méthode de suppression d'une absence pour un personnel.
/// </summary>
/// <param name="absence">Absence concernée</param>
2025-06-03 08:31:45 +00:00
public void DeleteAbsence ( Absence absence )
2025-05-27 14:17:40 +00:00
{
2025-06-03 08:31:45 +00:00
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 ) ;
}
}
2025-05-27 14:17:40 +00:00
}
2025-06-04 17:10:08 +00:00
public void ModifierAbsence ( Absence absence , Personnel personne )
{
if ( access . Manager ! = null )
{
2025-06-04 17:25:15 +00:00
string req = "UPDATE absence SET dateFin = @dateFin WHERE idPersonnel = @idPersonnel AND dateDebut = @dateDebut AND idMotif = @idMotif;" ;
2025-06-04 17:10:08 +00:00
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 ) ;
}
}
}
2025-05-27 14:17:40 +00:00
}
}