Ajout des commentaires XML, création d'une doc technique (pas complète)

This commit is contained in:
Erwann PHILIPPE 2025-06-03 12:30:47 +02:00
parent e7f5498737
commit e1eac61b95
25 changed files with 358 additions and 179 deletions

View file

@ -8,6 +8,9 @@ using System.Threading.Tasks;
namespace projet.Controller
{
/// <summary>
/// Gestionnaire de la page de connexion pour les responsables.
/// </summary>
public class PageConnexionController
{
private readonly ResponsableAccess responsableAccess;

View file

@ -1,39 +0,0 @@
namespace projet
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Text = "Form1";
}
#endregion
}
}

View file

@ -1,10 +0,0 @@
namespace projet
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}

View file

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

201
projet/HELP.html Normal file
View file

@ -0,0 +1,201 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Documentation Technique - Gestion du Personnel et des Absences</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.namespace {
background-color: #f8f9fa;
padding: 20px;
margin: 20px 0;
border-radius: 5px;
}
.class {
border-left: 4px solid #007bff;
padding: 10px;
margin: 15px 0;
}
.method {
background-color: #ffffff;
padding: 10px;
margin: 10px 0;
border: 1px solid #dee2e6;
border-radius: 4px;
}
h1 { color: #343a40; }
h2 { color: #007bff; }
h3 { color: #495057; }
.returns { color: #28a745; }
.params { color: #6c757d; }
.header {
background-color: #007bff;
color: white;
padding: 20px;
margin-bottom: 30px;
border-radius: 5px;
}
</style>
</head>
<body>
<div class="header">
<h1>Documentation Technique</h1>
<p>Application de Gestion du Personnel et des Absences</p>
</div>
<!-- Namespace DAL -->
<div class="namespace">
<h2>Namespace: projet.dal</h2>
<div class="class">
<h3>Class: Access</h3>
<p>Singleton pour l'accès à la base de données.</p>
<div class="method">
<h4>GetInstance()</h4>
<p>Renvoie l'instance unique de la classe Access.</p>
<div class="returns">Retourne: Singleton de la connexion</div>
</div>
</div>
<div class="class">
<h3>Class: AbsenceAccess</h3>
<p>Méthodes d'accès aux données pour les absences du personnel.</p>
<div class="method">
<h4>GetAbsences(Personnel personnel)</h4>
<p>Donne la liste des absences d'un personnel.</p>
<div class="params">Paramètre: personnel - Personne concernée</div>
<div class="returns">Retourne: Liste des absences</div>
</div>
<div class="method">
<h4>AddAbsence(Absence absence, Personnel personne)</h4>
<p>Méthode d'ajout d'une absence pour un personnel.</p>
<div class="params">
Paramètres:
<ul>
<li>absence - Absence à rajouter</li>
<li>personne - Personne à laquelle rajouter l'absence</li>
</ul>
</div>
</div>
<div class="method">
<h4>DeleteAbsence(Absence absence)</h4>
<p>Méthode de suppression d'une absence pour un personnel.</p>
<div class="params">Paramètre: absence - Absence concernée</div>
</div>
</div>
<div class="class">
<h3>Class: MotifAccess</h3>
<p>Méthodes d'accès aux données pour les motifs d'absence.</p>
<div class="method">
<h4>GetAllMotifs()</h4>
<p>Méthode pour récupérer tous les motifs d'absence.</p>
<div class="returns">Retourne: Liste de motifs</div>
</div>
<div class="method">
<h4>GetMotifIdByLibelle(string libelle)</h4>
<p>Méthode pour récupérer l'ID d'un motif par son libellé.</p>
<div class="params">Paramètre: libelle - libelle du motif souhaité</div>
<div class="returns">Retourne: Id du motif</div>
</div>
</div>
<div class="class">
<h3>Class: PersonnelAccess</h3>
<p>Méthodes d'accès aux données pour le personnel.</p>
<div class="method">
<h4>GetAllPersonnel()</h4>
<p>Méthode pour récupérer tous les personnels de la base de données.</p>
<div class="returns">Retourne: Liste du personnel</div>
</div>
<div class="method">
<h4>addPersonnel(Personnel personne)</h4>
<p>Méthode pour ajouter un personnel à la base de données.</p>
<div class="params">Paramètre: personne - Personne à rajouter</div>
</div>
<div class="method">
<h4>ModifierPersonnel(Personnel personnel)</h4>
<p>Méthode pour modifier les informations d'un personnel dans la base de données.</p>
<div class="params">Paramètre: personnel - Personne à modifier</div>
</div>
</div>
</div>
<!-- Namespace Modele -->
<div class="namespace">
<h2>Namespace: projet.modele</h2>
<div class="class">
<h3>Class: Absence</h3>
<p>Représente une absence d'un personnel.</p>
<div class="method">
<h4>Propriétés</h4>
<ul>
<li>IdPersonnel - Identifiant du personnel</li>
<li>DateDebut - Date de début de l'absence</li>
<li>DateFin - Date de fin de l'absence</li>
<li>IdMotif - Identifiant du motif d'absence</li>
</ul>
</div>
</div>
<div class="class">
<h3>Class: Motif</h3>
<p>Représente un motif d'absence</p>
<div class="method">
<h4>Propriétés</h4>
<ul>
<li>IdMotif - Identifiant du motif</li>
<li>Libelle - Libellé du motif</li>
</ul>
</div>
</div>
<div class="class">
<h3>Class: Personnel</h3>
<p>Représente un membre du personnel</p>
<div class="method">
<h4>Propriétés</h4>
<ul>
<li>IdPersonnel - Identifiant du personnel</li>
<li>Nom - Nom du personnel</li>
<li>Prenom - Prénom du personnel</li>
<li>Tel - Numéro de téléphone</li>
<li>Mail - Adresse e-mail</li>
<li>IdService - Identifiant du service</li>
</ul>
</div>
</div>
</div>
<!-- Namespace Controller -->
<div class="namespace">
<h2>Namespace: projet.Controller</h2>
<div class="class">
<h3>Class: PageConnexionController</h3>
<p>Gestionnaire de la page de connexion pour les responsables.</p>
<div class="method">
<h4>ConnecterResponsable(Responsable responsable)</h4>
<p>Connecte un responsable à l'application.</p>
<div class="params">Paramètre: responsable - Responsable à connecter</div>
<div class="returns">Retourne: true si la connexion est réussie, false sinon</div>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

View file

@ -1,5 +1,8 @@
namespace projet.View
{
/// <summary>
/// Interface pour la gestion du personnel par l'administrateur.
/// </summary>
partial class Admin
{
private System.ComponentModel.IContainer components = null;
@ -14,11 +17,6 @@
private System.Windows.Forms.Button buttonEdit;
private System.Windows.Forms.Button buttonAbsence;
/// <summary>
/// Required designer variable.
/// </summary>
//private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>

View file

@ -15,6 +15,9 @@ namespace projet.View
public partial class Admin : Form
{
private AdminController controller;
/// <summary>
/// Méthode d'initialisation du formulaire Admin.
/// </summary>
public Admin()
{
Init();
@ -22,6 +25,9 @@ namespace projet.View
RemplirComboBoxPersonnel();
}
/// <summary>
/// Méthode d'initialisation du contrôleur AdminController.
/// </summary>
public void Init()
{
controller = new AdminController();

View file

@ -12,6 +12,9 @@ namespace projet.View
{
public partial class ConfirmeModifierAbsence : Form
{
/// <summary>
/// Méthode d'initialisation du formulaire ConfirmeModifierAbsence.
/// </summary>
public ConfirmeModifierAbsence()
{
InitializeComponent();

View file

@ -10,8 +10,14 @@ using System.Windows.Forms;
namespace projet.View
{
/// <summary>
/// Méthode d'initialisation du formulaire de confirmation de modification du personnel.
/// </summary>
public partial class ConfirmeModifierPersonnel : Form
{
/// <summary>
/// Méthode d'initialisation du formulaire ConfirmeModifierPersonnel.
/// </summary>
public ConfirmeModifierPersonnel()
{
InitializeComponent();

View file

@ -10,8 +10,14 @@ using System.Windows.Forms;
namespace projet.View
{
/// <summary>
/// Méthode d'initialisation du formulaire de confirmation de modification du personnel.
/// </summary>
public partial class ConfirmeSupprimerAbsence : Form
{
/// <summary>
/// Méthode d'initialisation du formulaire ConfirmeSupprimerAbsence.
/// </summary>
public ConfirmeSupprimerAbsence()
{
InitializeComponent();

View file

@ -12,10 +12,17 @@ using System.Windows.Forms;
namespace projet.View
{
/// <summary>
/// Méthode d'initialisation du formulaire de confirmation de suppression du personnel.
/// </summary>
public partial class ConfirmeSupressionPersonnel : Form
{
private ConfirmeSupressionPersonnelController controller;
private Personnel personne;
/// <summary>
/// Méthode d'initialisation du formulaire ConfirmerSuppressionPersonnel.
/// </summary>
/// <param name="personne"></param>
public ConfirmeSupressionPersonnel(Personnel personne)
{
Init();
@ -24,6 +31,9 @@ namespace projet.View
labelTitle.Text = $"Voulez vous vraiment supprimer : {personne} ?";
}
/// <summary>
/// Méthode d'initialisation du contrôleur ConfirmeSupressionPersonnelController.
/// </summary>
public void Init()
{
controller = new ConfirmeSupressionPersonnelController();

View file

@ -16,6 +16,10 @@ namespace projet.View
{
private Personnel personne;
private GestionAbsenceController controller;
/// <summary>
/// Méthode d'initialisation du formulaire de gestion des absences pour un personnel spécifique.
/// </summary>
/// <param name="personne">Personne concernée</param>
public GestionAbsence(Personnel personne)
{
InitializeComponent();

View file

@ -12,6 +12,9 @@ namespace projet.View
{
public partial class ModifierAbsence : Form
{
/// <summary>
/// Méthode d'initialisation du formulaire de modification d'absence.
/// </summary>
public ModifierAbsence()
{
InitializeComponent();

View file

@ -16,6 +16,11 @@ namespace projet.View
{
private ModifierPersonneController controller;
private Personnel personne;
/// <summary>
/// Méthode d'initialisation du formulaire de modification d'un personnel.
/// </summary>
/// <param name="personne">Personne concernée</param>
public ModifierPersonne(Personnel personne)
{
Init();

View file

@ -15,6 +15,10 @@ namespace projet.View
public partial class PageConnexion : Form
{
private PageConnexionController controller;
/// <summary>
/// Méthode d'initialisation du formulaire de connexion.
/// </summary>
public PageConnexion()
{
Init();

View file

@ -2,40 +2,48 @@
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)
{
// 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)
{
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
Convert.ToString(resultat[3])// Motif
idMotif // Motif
);
absences.Add(absence);
}
@ -51,6 +59,11 @@ namespace projet.dal
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)
@ -75,6 +88,10 @@ namespace projet.dal
}
}
/// <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)

View file

@ -7,11 +7,17 @@ using System.Threading.Tasks;
namespace projet.dal
{
/// <summary>
/// Singleton pour l'accès à la base de données.
/// </summary>
public class Access
{
private static readonly string connectionString = "server=localhost;user id=root;password=;database=mediatek;";
private static Access instance = null;
/// <summary>
/// Gère l'accès à la base de données via BddManager.
/// </summary>
public BddManager Manager { get; }
private Access()
@ -25,6 +31,10 @@ namespace projet.dal
Environment.Exit(0);
}
}
/// <summary>
/// Renvoie l'instance unique de la classe Access.
/// </summary>
/// <returns>Singleton de la connexion</returns>
public static Access GetInstance()
{
if (instance == null)

View file

@ -2,15 +2,25 @@
namespace projet.dal
{
/// <summary>
/// Méthodes d'accès aux données pour les absences du personnel.
/// </summary>
public class MotifAccess
{
private readonly Access access;
/// <summary>
/// Récupère l'instance de la classe Access pour accéder à la base de données.
/// </summary>
public MotifAccess()
{
access = Access.GetInstance();
}
/// <summary>
/// Méthode pour récupérer tous les motifs d'absence.
/// </summary>
/// <returns>Liste de motifs</returns>
public List<Motif> GetAllMotifs()
{
List<Motif> motifList = new List<Motif>();
@ -41,6 +51,11 @@ namespace projet.dal
return motifList;
}
/// <summary>
/// Méthode pour récupérer l'ID d'un motif par son libellé.
/// </summary>
/// <param name="libelle">libelle du motif souhaité</param>
/// <returns>Id du motif</returns>
public int GetMotifIdByLibelle(string libelle)
{
int idMotif = -1;

View file

@ -2,15 +2,25 @@
namespace projet.dal
{
/// <summary>
/// Méthodes d'accès aux données pour le personnel.
/// </summary>
public class PersonnelAccess
{
private readonly Access access;
/// <summary>
/// Récupère l'instance de la classe Access pour accéder à la base de données.
/// </summary>
public PersonnelAccess()
{
access = Access.GetInstance();
}
/// <summary>
/// Méthode pour récupérer tous les personnels de la base de données.
/// </summary>
/// <returns></returns>
public List<Personnel> GetAllPersonnel()
{
List<Personnel> personnelList = new List<Personnel>();
@ -44,6 +54,11 @@ namespace projet.dal
}
return personnelList;
}
/// <summary>
/// Méthode pour ajouter un personnel à la base de données.
/// </summary>
/// <param name="personne">Personne à rajouter</param>
public void addPersonnel(Personnel personne)
{
if (access.Manager != null)
@ -69,6 +84,10 @@ namespace projet.dal
}
}
/// <summary>
/// Méthode pour supprimer un personnel de la base de données.
/// </summary>
/// <param name="personnel">Personne à supprimer</param>
public void deletePersonnel(Personnel personnel)
{
if (access.Manager != null)
@ -89,6 +108,11 @@ namespace projet.dal
}
}
}
/// <summary>
/// Méthode pour modifier les informations d'un personnel dans la base de données.
/// </summary>
/// <param name="personnel">Personne à modifier</param>
public void ModifierPersonnel(Personnel personnel)
{
if(access.Manager != null)

View file

@ -2,15 +2,26 @@
namespace projet.dal
{
/// <summary>
/// Méthodes d'accès aux données pour les motifs d'absence.
/// </summary>
public class ResponsableAccess
{
private readonly Access access;
/// <summary>
/// Récupère l'instance de la classe Access pour accéder à la base de données.
/// </summary>
public ResponsableAccess()
{
access = Access.GetInstance();
}
/// <summary>
/// Méthode pour connecter un responsable à la base de données.
/// </summary>
/// <param name="responsable">Responsable à connecter</param>
/// <returns></returns>
public bool ConnecterResponsable(Responsable responsable)
{
if(access.Manager != null)

View file

@ -1,15 +1,25 @@
using projet.modele;
namespace projet.dal
{
/// <summary>
/// Méthodes d'accès aux données pour les services du personnel.
/// </summary>
public class ServiceAccess
{
private readonly Access access;
/// <summary>
/// Récupère l'instance de la classe Access pour accéder à la base de données.
/// </summary>
public ServiceAccess()
{
access = Access.GetInstance();
}
/// <summary>
/// Méthode pour récupérer tous les services du personnel.
/// </summary>
/// <returns></returns>
public List<Service> GetAllServices()
{
List<Service> serviceList = new List<Service>();

View file

@ -30,6 +30,10 @@ namespace projet.modele
IdMotif = idMotif;
}
/// <summary>
/// Méthode pour obtenir une représentation en chaîne de l'absence.
/// </summary>
/// <returns></returns>
public override string ToString()
{
string dateDebut = Convert.ToString(DateDebut);

View file

@ -20,6 +20,10 @@
Libelle = libelle;
}
/// <summary>
/// Méthode pour obtenir une représentation en chaîne du motif.
/// </summary>
/// <returns></returns>
public override string ToString()
{
return this.Libelle;

View file

@ -36,6 +36,10 @@
IdService = idService;
}
/// <summary>
/// Méthode pour obtenir une représentation en chaîne du personnel.
/// </summary>
/// <returns></returns>
public override string ToString()
{
return $"{this.Nom} {this.Prenom}";