using projet.Controller;
using projet.modele;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace projet.View
{
    /// <summary>
    /// Formulaire permettant l'ajout d'un nouveau membre du personnel.
    /// Cette fenêtre gère la saisie et la validation des informations personnelles.
    /// </summary>
    public partial class AddPersonnel : Form
    {
        private addPersonnelController controller;
        /// <summary>
        /// Initialise une nouvelle instance du formulaire AddPersonnel.
        /// Configure les composants de l'interface utilisateur et initialise les validations.
        /// </summary>
        public AddPersonnel()
        {
            Init();
            InitializeComponent();
            RemplirComboBoxService();
        }

        private void Init()
        {
            controller = new addPersonnelController();
        }

        /// <summary>
        /// Gère l'événement de clic sur le bouton Ajouter.
        /// Valide les données saisies et ajoute le nouveau membre du personnel.
        /// </summary>
        /// <param name="sender">L'objet qui a déclenché l'événement</param>
        /// <param name="e">Les arguments de l'événement</param>
        private void buttonAjouter_Click(object sender, EventArgs e)
        {
            // TODO: Implémenter la logique d'ajout
        }

        /// <summary>
        /// Gère l'événement de clic sur le bouton Annuler.
        /// Ferme le formulaire sans sauvegarder les modifications.
        /// </summary>
        /// <param name="sender">L'objet qui a déclenché l'événement</param>
        /// <param name="e">Les arguments de l'événement</param>
        private void buttonAnnuler_Click(object sender, EventArgs e)
        {
            // TODO: Implémenter la logique d'annulation
        }

        private void buttonAnnuler_Click_1(object sender, EventArgs e)
        {
            Admin admin = new Admin();
            this.Hide();
            this.Close();
            admin.ShowDialog();
        }

        /// <summary>
        /// Procédure d'événement pour le bouton Ajouter.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAjouter_Click_1(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBoxNom.Text) || string.IsNullOrEmpty(textBoxPrenom.Text) || string.IsNullOrEmpty(textBoxMail.Text) || string.IsNullOrEmpty(textBoxTel.Text) || comboBoxService.SelectedItem == null)
            {
                MessageBox.Show("Veuillez remplir tous les champs.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            else
            {
                Personnel personnel = new Personnel(
                    0, // IdPersonnel
                    textBoxNom.Text, // Nom
                    textBoxPrenom.Text, // Prenom
                    textBoxTel.Text, // Tel
                    textBoxMail.Text, // Mail
                    comboBoxService.SelectedIndex+1 // IdService
                );
                controller.addPersonnel(personnel);
                this.Hide();
                this.Close();
                Admin admin = new Admin();
                admin.ShowDialog();
            }
        }

        private void RemplirComboBoxService()
        {
            List<Service> services = controller.GetAllServices();
            foreach (Service service in services)
            {
                comboBoxService.Items.Add(service.Nom);
            }
        }

        private void AddPersonnel_Load(object sender, EventArgs e)
        {
            RemplirComboBoxService();
        }
    }
}
