From e7f5498737d8b2f3ff5d5aec39cafa52d4a91e76 Mon Sep 17 00:00:00 2001 From: xdatomic-the-codeur Date: Tue, 3 Jun 2025 10:31:45 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20fonctionnalit=C3=A9s=20pour=20mod?= =?UTF-8?q?ifier=20une=20personne=20et=20g=C3=A9rer=20ses=20absences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projet/Controller/GestionAbsenceController.cs | 49 ++++++++ .../Controller/ModifierPersonneController.cs | 31 +++++ projet/View/Admin.Designer.cs | 1 + projet/View/Admin.cs | 23 +++- projet/View/GestionAbsence.Designer.cs | 60 ++++++---- projet/View/GestionAbsence.cs | 108 +++++++++++++++++- projet/View/ModifierPersonne.Designer.cs | 3 +- projet/View/ModifierPersonne.cs | 70 +++++++++++- projet/dal/AbsenceAccess.cs | 100 +++++++++++++++- projet/dal/MotifAccess.cs | 68 ++++++++++- projet/dal/PersonnelAccess.cs | 25 ++++ projet/modele/Absence.cs | 10 +- projet/modele/Motif.cs | 5 + 13 files changed, 511 insertions(+), 42 deletions(-) create mode 100644 projet/Controller/GestionAbsenceController.cs create mode 100644 projet/Controller/ModifierPersonneController.cs diff --git a/projet/Controller/GestionAbsenceController.cs b/projet/Controller/GestionAbsenceController.cs new file mode 100644 index 0000000..7591466 --- /dev/null +++ b/projet/Controller/GestionAbsenceController.cs @@ -0,0 +1,49 @@ +using projet.dal; +using projet.modele; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace projet.Controller +{ + internal class GestionAbsenceController + { + private readonly AbsenceAccess absenceAccess; + private readonly PersonnelAccess personnelAccess; + private readonly MotifAccess motifAccess; + + public GestionAbsenceController() + { + absenceAccess = new AbsenceAccess(); + personnelAccess = new PersonnelAccess(); + motifAccess = new MotifAccess(); + } + + public List GetAbsences(Personnel personnel) + { + return absenceAccess.GetAbsences(personnel); + } + + public List GetAllMotifs() + { + return motifAccess.GetAllMotifs(); + } + + public void AddAbsence(Absence absence, Personnel personne) + { + absenceAccess.AddAbsence(absence, personne); + } + + public void DeleteAbsence(Absence absence) + { + absenceAccess.DeleteAbsence(absence); + } + + public int GetMotifIdByLibelle(string libelle) + { + return motifAccess.GetMotifIdByLibelle(libelle); + } + } +} diff --git a/projet/Controller/ModifierPersonneController.cs b/projet/Controller/ModifierPersonneController.cs new file mode 100644 index 0000000..9d7d7ee --- /dev/null +++ b/projet/Controller/ModifierPersonneController.cs @@ -0,0 +1,31 @@ +using projet.dal; +using projet.modele; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace projet.Controller +{ + internal class ModifierPersonneController + { + private readonly ServiceAccess serviceAccess; + private readonly PersonnelAccess personnelAccess; + + public ModifierPersonneController() + { + serviceAccess = new ServiceAccess(); + personnelAccess = new PersonnelAccess(); + } + + public List GetAllServices() + { + return serviceAccess.GetAllServices(); + } + public void ModifierPersonnel(Personnel personnel) + { + personnelAccess.ModifierPersonnel(personnel); + } + } +} diff --git a/projet/View/Admin.Designer.cs b/projet/View/Admin.Designer.cs index bcc6efa..b2e9a07 100644 --- a/projet/View/Admin.Designer.cs +++ b/projet/View/Admin.Designer.cs @@ -136,6 +136,7 @@ buttonEdit.Size = new Size(150, 30); buttonEdit.TabIndex = 9; buttonEdit.Text = "Modifier personne"; + buttonEdit.Click += buttonEdit_Click; // // buttonAbsence // diff --git a/projet/View/Admin.cs b/projet/View/Admin.cs index d3ef663..ac7d3bf 100644 --- a/projet/View/Admin.cs +++ b/projet/View/Admin.cs @@ -46,11 +46,12 @@ namespace projet.View private void buttonAbsence_Click(object sender, EventArgs e) { - if(comboBoxPersonnel.SelectedItem != null) + if (comboBoxPersonnel.SelectedItem != null) { + Personnel personne = (Personnel)comboBoxPersonnel.SelectedItem; this.Hide(); this.Close(); - GestionAbsence gestionAbsence = new GestionAbsence(); + GestionAbsence gestionAbsence = new GestionAbsence(personne); gestionAbsence.ShowDialog(); } else @@ -61,7 +62,7 @@ namespace projet.View private void buttonDelete_Click(object sender, EventArgs e) { - if(comboBoxPersonnel.SelectedItem != null) + if (comboBoxPersonnel.SelectedItem != null) { Personnel personne = (Personnel)comboBoxPersonnel.SelectedItem; this.Hide(); @@ -74,5 +75,21 @@ namespace projet.View MessageBox.Show("Veuillez sélectionner un membre du personnel.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + private void buttonEdit_Click(object sender, EventArgs e) + { + if(comboBoxPersonnel.SelectedItem != null) + { + Personnel personne = (Personnel)comboBoxPersonnel.SelectedItem; + this.Hide(); + this.Close(); + ModifierPersonne modifierPersonne = new ModifierPersonne(personne); + modifierPersonne.ShowDialog(); + } + else + { + MessageBox.Show("Veuillez sélectionner un membre du personnel.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } diff --git a/projet/View/GestionAbsence.Designer.cs b/projet/View/GestionAbsence.Designer.cs index fcca681..1c9477c 100644 --- a/projet/View/GestionAbsence.Designer.cs +++ b/projet/View/GestionAbsence.Designer.cs @@ -46,12 +46,15 @@ /// private void InitializeComponent() { - DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle(); - DataGridViewCellStyle dataGridViewCellStyle2 = new DataGridViewCellStyle(); + DataGridViewCellStyle dataGridViewCellStyle3 = new DataGridViewCellStyle(); + DataGridViewCellStyle dataGridViewCellStyle4 = new DataGridViewCellStyle(); pictureBoxTop = new PictureBox(); pictureBoxBottom = new PictureBox(); labelTitle = new Label(); dataGridViewAbsences = new DataGridView(); + dataGridViewTextBoxColumn1 = new DataGridViewTextBoxColumn(); + dataGridViewTextBoxColumn2 = new DataGridViewTextBoxColumn(); + dataGridViewTextBoxColumn3 = new DataGridViewTextBoxColumn(); groupBoxNouvelleAbsence = new GroupBox(); labelDateDebut = new Label(); textBoxDateDebut = new TextBox(); @@ -65,9 +68,7 @@ comboBoxAbsence = new ComboBox(); buttonSupprimer = new Button(); panelSeparator = new Panel(); - dataGridViewTextBoxColumn1 = new DataGridViewTextBoxColumn(); - dataGridViewTextBoxColumn2 = new DataGridViewTextBoxColumn(); - dataGridViewTextBoxColumn3 = new DataGridViewTextBoxColumn(); + buttonBack = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBoxTop).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxBottom).BeginInit(); ((System.ComponentModel.ISupportInitialize)dataGridViewAbsences).BeginInit(); @@ -112,20 +113,36 @@ dataGridViewAbsences.AllowUserToAddRows = false; dataGridViewAbsences.AllowUserToDeleteRows = false; dataGridViewAbsences.AllowUserToResizeRows = false; - dataGridViewAbsences.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + dataGridViewAbsences.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3; dataGridViewAbsences.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridViewAbsences.Columns.AddRange(new DataGridViewColumn[] { dataGridViewTextBoxColumn1, dataGridViewTextBoxColumn2, dataGridViewTextBoxColumn3 }); dataGridViewAbsences.EnableHeadersVisualStyles = false; dataGridViewAbsences.Location = new Point(60, 240); + dataGridViewAbsences.MultiSelect = false; dataGridViewAbsences.Name = "dataGridViewAbsences"; dataGridViewAbsences.ReadOnly = true; dataGridViewAbsences.RowHeadersVisible = false; - dataGridViewCellStyle2.Font = new Font("Segoe UI", 10F); - dataGridViewAbsences.RowsDefaultCellStyle = dataGridViewCellStyle2; + dataGridViewCellStyle4.Font = new Font("Segoe UI", 10F); + dataGridViewAbsences.RowsDefaultCellStyle = dataGridViewCellStyle4; dataGridViewAbsences.ScrollBars = ScrollBars.Vertical; + dataGridViewAbsences.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridViewAbsences.Size = new Size(680, 180); dataGridViewAbsences.TabIndex = 3; - dataGridViewAbsences.CellContentClick += dataGridViewAbsences_CellContentClick; + // + // dataGridViewTextBoxColumn1 + // + dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; + dataGridViewTextBoxColumn1.ReadOnly = true; + // + // dataGridViewTextBoxColumn2 + // + dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; + dataGridViewTextBoxColumn2.ReadOnly = true; + // + // dataGridViewTextBoxColumn3 + // + dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; + dataGridViewTextBoxColumn3.ReadOnly = true; // // groupBoxNouvelleAbsence // @@ -210,6 +227,7 @@ buttonAjouter.TabIndex = 6; buttonAjouter.Text = "Ajouter"; buttonAjouter.UseVisualStyleBackColor = true; + buttonAjouter.Click += buttonAjouter_Click; // // groupBoxSupprimerAbsence // @@ -252,6 +270,7 @@ buttonSupprimer.TabIndex = 2; buttonSupprimer.Text = "Supprimer"; buttonSupprimer.UseVisualStyleBackColor = true; + buttonSupprimer.Click += buttonSupprimer_Click; // // panelSeparator // @@ -261,26 +280,22 @@ panelSeparator.Size = new Size(2, 160); panelSeparator.TabIndex = 6; // - // dataGridViewTextBoxColumn1 + // buttonBack // - dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; - dataGridViewTextBoxColumn1.ReadOnly = true; - // - // dataGridViewTextBoxColumn2 - // - dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; - dataGridViewTextBoxColumn2.ReadOnly = true; - // - // dataGridViewTextBoxColumn3 - // - dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; - dataGridViewTextBoxColumn3.ReadOnly = true; + buttonBack.Location = new Point(60, 646); + buttonBack.Name = "buttonBack"; + buttonBack.Size = new Size(75, 23); + buttonBack.TabIndex = 7; + buttonBack.Text = "Retour"; + buttonBack.UseVisualStyleBackColor = true; + buttonBack.Click += buttonBack_Click; // // GestionAbsence // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 800); + Controls.Add(buttonBack); Controls.Add(pictureBoxTop); Controls.Add(pictureBoxBottom); Controls.Add(labelTitle); @@ -307,5 +322,6 @@ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; private DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; private DataGridViewTextBoxColumn dataGridViewTextBoxColumn3; + private Button buttonBack; } } \ No newline at end of file diff --git a/projet/View/GestionAbsence.cs b/projet/View/GestionAbsence.cs index 8bb5311..4342671 100644 --- a/projet/View/GestionAbsence.cs +++ b/projet/View/GestionAbsence.cs @@ -1,4 +1,6 @@ -using System; +using projet.modele; +using projet.Controller; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -12,14 +14,114 @@ namespace projet.View { public partial class GestionAbsence : Form { - public GestionAbsence() + private Personnel personne; + private GestionAbsenceController controller; + public GestionAbsence(Personnel personne) { InitializeComponent(); + this.personne = personne; + Init(); + labelTitle.Text = $"Gestion des absences de {personne.Nom} {personne.Prenom}"; + RemplirComboBoxMotif(); + RemplirComboBoxAbsence(); } - private void dataGridViewAbsences_CellContentClick(object sender, DataGridViewCellEventArgs e) + private void Init() { + controller = new GestionAbsenceController(); + // Effacer les colonnes par défaut avant d'assigner la source de données + dataGridViewAbsences.Columns.Clear(); + + dataGridViewAbsences.DataSource = controller.GetAbsences(personne); + dataGridViewAbsences.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + + // Configuration des colonnes + dataGridViewAbsences.Columns["IdPersonnel"].Visible = false; + dataGridViewAbsences.Columns["DateDebut"].HeaderText = "Date de début"; + dataGridViewAbsences.Columns["DateFin"].HeaderText = "Date de fin"; + dataGridViewAbsences.Columns["IdMotif"].HeaderText = "Motif"; + + // Format des dates + dataGridViewAbsences.Columns["DateDebut"].DefaultCellStyle.Format = "dd/MM/yyyy"; + dataGridViewAbsences.Columns["DateFin"].DefaultCellStyle.Format = "dd/MM/yyyy"; + } + + private void buttonAjouter_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(textBoxDateDebut.Text) || !string.IsNullOrEmpty(textBoxDateFin.Text) || comboBoxMotif.SelectedItem != null) + { + string dateDebutStr = textBoxDateDebut.Text; + string dateFinStr = textBoxDateFin.Text; + + DateTime dateDebut, dateFin; + + if (DateTime.TryParseExact(dateDebutStr, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None, out dateDebut) && + DateTime.TryParseExact(dateFinStr, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None, out dateFin)) + { + string idMotif = Convert.ToString(((Motif)comboBoxMotif.SelectedItem).IdMotif); + Absence absence = new Absence(personne.IdPersonnel, dateDebut, dateFin, idMotif); + controller.AddAbsence(absence, personne); + dataGridViewAbsences.DataSource = controller.GetAbsences(personne); + + textBoxDateDebut.Clear(); + textBoxDateFin.Clear(); + comboBoxMotif.SelectedIndex = -1; // Réinitialiser la sélection du motif + } + else + { + MessageBox.Show("Erreur : Format de date invalide\nUtilisez le format : dd-MM-yyyy", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + else + { + MessageBox.Show("Veuillez remplir tous les champs.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void RemplirComboBoxMotif() + { + List motifs = controller.GetAllMotifs(); + foreach (Motif motif in motifs) + { + comboBoxMotif.Items.Add(motif); + } + } + + private void buttonSupprimer_Click(object sender, EventArgs e) + { + if (comboBoxAbsence.SelectedIndex == -1) + { + MessageBox.Show("Veuillez sélectionner une absence à supprimer.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + else + { + Absence absence = (Absence)comboBoxAbsence.SelectedItem; + int idMotif = controller.GetMotifIdByLibelle(absence.IdMotif); + Absence absence2 = new Absence(absence.IdPersonnel, absence.DateDebut, absence.DateFin, Convert.ToString(idMotif)); + controller.DeleteAbsence(absence2); + + RemplirComboBoxAbsence(); + dataGridViewAbsences.DataSource = controller.GetAbsences(personne); + comboBoxAbsence.SelectedIndex = -1; + } + } + + private void RemplirComboBoxAbsence() + { + comboBoxAbsence.Items.Clear(); + List absences = controller.GetAbsences(personne); + foreach (Absence absence in absences) + { + comboBoxAbsence.Items.Add(absence); + } + } + + private void buttonBack_Click(object sender, EventArgs e) + { + this.Hide(); + this.Close(); + Admin admin = new Admin(); + admin.ShowDialog(); } } } diff --git a/projet/View/ModifierPersonne.Designer.cs b/projet/View/ModifierPersonne.Designer.cs index 4bac009..84620e8 100644 --- a/projet/View/ModifierPersonne.Designer.cs +++ b/projet/View/ModifierPersonne.Designer.cs @@ -128,7 +128,6 @@ tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F)); tableLayoutPanel.Size = new Size(560, 250); tableLayoutPanel.TabIndex = 3; - tableLayoutPanel.Visible = false; // // labelNom // @@ -244,6 +243,7 @@ buttonConfirmer.Size = new Size(120, 23); buttonConfirmer.TabIndex = 0; buttonConfirmer.Text = "CONFIRMER"; + buttonConfirmer.Click += buttonConfirmer_Click; // // buttonAnnuler // @@ -252,6 +252,7 @@ buttonAnnuler.Size = new Size(100, 23); buttonAnnuler.TabIndex = 1; buttonAnnuler.Text = "Annuler"; + buttonAnnuler.Click += buttonAnnuler_Click; // // ModifierPersonne // diff --git a/projet/View/ModifierPersonne.cs b/projet/View/ModifierPersonne.cs index 250d3a3..2ee3922 100644 --- a/projet/View/ModifierPersonne.cs +++ b/projet/View/ModifierPersonne.cs @@ -1,4 +1,6 @@ -using System; +using projet.Controller; +using projet.modele; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -12,9 +14,73 @@ namespace projet.View { public partial class ModifierPersonne : Form { - public ModifierPersonne() + private ModifierPersonneController controller; + private Personnel personne; + public ModifierPersonne(Personnel personne) { + Init(); + this.personne = personne; InitializeComponent(); + labelTitle.Text = $"Voulez vous vraiment modifier {personne.Prenom} ?"; + remplirComboBoxService(); + remplirInfos(); + } + + private void Init() + { + controller = new ModifierPersonneController(); + } + + private void buttonAnnuler_Click(object sender, EventArgs e) + { + this.Hide(); + this.Close(); + Admin admin = new Admin(); + admin.ShowDialog(); + } + + private void remplirInfos() + { + textBoxNom.Text = personne.Nom; + textBoxPrenom.Text = personne.Prenom; + textBoxMail.Text = personne.Mail; + textBoxTel.Text = personne.Tel; + comboBoxService.SelectedIndex = personne.IdService - 1; + } + + private void remplirComboBoxService() + { + List services = controller.GetAllServices(); + foreach (Service service in services) + { + comboBoxService.Items.Add(service.Nom); + } + } + + private void buttonConfirmer_Click(object sender, EventArgs e) + { + if(string.IsNullOrEmpty(textBoxNom.Text) || string.IsNullOrEmpty(textBoxPrenom.Text) || string.IsNullOrEmpty(textBoxMail.Text) || string.IsNullOrEmpty(textBoxTel.Text) || comboBoxService.SelectedIndex == -1) + { + MessageBox.Show("Veuillez remplir tous les champs.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + else + { + Personnel personne = new Personnel( + this.personne.IdPersonnel, + textBoxNom.Text, + textBoxPrenom.Text, + textBoxTel.Text, + textBoxMail.Text, + comboBoxService.SelectedIndex + 1 + ); + controller.ModifierPersonnel(personne); + + this.Hide(); + this.Close(); + Admin admin = new Admin(); + admin.ShowDialog(); + } } } } diff --git a/projet/dal/AbsenceAccess.cs b/projet/dal/AbsenceAccess.cs index 5b6bd73..b26275b 100644 --- a/projet/dal/AbsenceAccess.cs +++ b/projet/dal/AbsenceAccess.cs @@ -1,12 +1,102 @@ -namespace projet.dal +using projet.modele; + +namespace projet.dal { public class AbsenceAccess { - private static readonly string connectionString = "server=localhost;user id=root;password=;database=mediatek;"; - - public static string GetConnexion() + private readonly Access access; + public AbsenceAccess() { - return connectionString; + access = Access.GetInstance(); + } + + public List GetAbsences(Personnel personnel) + { + List absences = new List(); + 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 + { + { "@idPersonnel", personnel.IdPersonnel } + }; + try + { + // Exécute la requête de sélection + List 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 + { + { "@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 + { + { "@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); + } + } } } } diff --git a/projet/dal/MotifAccess.cs b/projet/dal/MotifAccess.cs index 15f2601..9ab3de9 100644 --- a/projet/dal/MotifAccess.cs +++ b/projet/dal/MotifAccess.cs @@ -1,12 +1,72 @@ -namespace projet.dal +using projet.modele; + +namespace projet.dal { public class MotifAccess { - private static readonly string connectionString = "server=localhost;user id=root;password=;database=mediatek;"; + private readonly Access access; - public static string GetConnexion() + public MotifAccess() { - return connectionString; + access = Access.GetInstance(); + } + + public List GetAllMotifs() + { + List motifList = new List(); + if (access.Manager != null) + { + string req = "SELECT * FROM motif ORDER BY libelle;"; + try + { + List resultats = access.Manager.ReqSelect(req); + if (resultats != null) + { + foreach (Object[] resultat in resultats) + { + Motif motif = new Motif( + Convert.ToInt32(resultat[0]), // IdMotif + Convert.ToString(resultat[1]) // Libelle + ); + motifList.Add(motif); + } + } + } + catch (Exception) + { + Console.WriteLine("Erreur lors de la récupération des données des motifs."); + Environment.Exit(0); + } + } + return motifList; + } + + public int GetMotifIdByLibelle(string libelle) + { + int idMotif = -1; + if (access.Manager != null) + { + string req = "SELECT idMotif FROM motif WHERE libelle = @libelle;"; + var parameters = new Dictionary + { + { "@libelle", libelle } + }; + try + { + List resultats = access.Manager.ReqSelect(req, parameters); + if (resultats != null && resultats.Count > 0) + { + idMotif = Convert.ToInt32(resultats[0][0]); + } + return idMotif; + } + catch (Exception) + { + Console.WriteLine("Erreur lors de la récupération de l'ID du motif par libellé."); + Environment.Exit(0); + } + } + return idMotif; } } } diff --git a/projet/dal/PersonnelAccess.cs b/projet/dal/PersonnelAccess.cs index 087703a..bdfeca2 100644 --- a/projet/dal/PersonnelAccess.cs +++ b/projet/dal/PersonnelAccess.cs @@ -89,5 +89,30 @@ namespace projet.dal } } } + public void ModifierPersonnel(Personnel personnel) + { + if(access.Manager != null) + { + string req = "UPDATE personnel SET nom = @nom, prenom = @prenom, tel = @tel, mail = @mail, idService = @idService WHERE idPersonnel = @idPersonnel;"; + var parameters = new Dictionary + { + { "@idPersonnel", personnel.IdPersonnel }, + { "@nom", personnel.Nom }, + { "@prenom", personnel.Prenom }, + { "@tel", personnel.Tel }, + { "@mail", personnel.Mail }, + { "@idService", personnel.IdService } + }; + try + { + access.Manager.ReqUpdate(req, parameters); + } + catch (Exception) + { + Console.WriteLine("Erreur lors de la modification du personnel dans la base de données."); + Environment.Exit(0); + } + } + } } } diff --git a/projet/modele/Absence.cs b/projet/modele/Absence.cs index a608e41..fed6183 100644 --- a/projet/modele/Absence.cs +++ b/projet/modele/Absence.cs @@ -17,17 +17,23 @@ namespace projet.modele public DateTime? DateFin { get; set; } /// Identifiant du motif d'absence - public int IdMotif { get; set; } + public string IdMotif { get; set; } /// /// Constructeur de la classe Absence /// - public Absence(int idPersonnel, DateTime dateDebut, DateTime? dateFin, int idMotif) + public Absence(int idPersonnel, DateTime dateDebut, DateTime? dateFin, string idMotif) { IdPersonnel = idPersonnel; DateDebut = dateDebut; DateFin = dateFin; IdMotif = idMotif; } + + public override string ToString() + { + string dateDebut = Convert.ToString(DateDebut); + return dateDebut.Split(' ')[0]; + } } } diff --git a/projet/modele/Motif.cs b/projet/modele/Motif.cs index d587af3..f19a52d 100644 --- a/projet/modele/Motif.cs +++ b/projet/modele/Motif.cs @@ -19,5 +19,10 @@ IdMotif = idMotif; Libelle = libelle; } + + public override string ToString() + { + return this.Libelle; + } } }