using projet.modele;

namespace projet.dal
{
    public class MotifAccess
    {
        private readonly Access access;

        public MotifAccess()
        {
            access = Access.GetInstance();
        }

        public List<Motif> GetAllMotifs()
        {
            List<Motif> motifList = new List<Motif>();
            if (access.Manager != null)
            {
                string req = "SELECT * FROM motif ORDER BY libelle;";
                try
                {
                    List<Object[]> 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<string, object>
                {
                    { "@libelle", libelle }
                };
                try
                {
                    List<Object[]> 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;
        }
    }
}
