namespace Services.ReActAgent
{
    #region Classe statique ModelsUseCases
    public static class ModelsUseCases
    {
        #region Enum
        public enum TypeUseCase
        {
            LLM,
            RAG,
            ResumeDocuments,
            InterpretationImages,
            PromptGenerationFooocus,
            AnalyseMails,
            GenerationMail,
            AnalyseCVMission,
            CV_To_Xml,
            Facture_To_Xml,
            TF_From_DSF,
            LLM_Coder
        }
        #endregion

        #region Variables
        private const string LLM = "LLM";
        private const string RAG = "RAG";
        private const string ResumeDocuments = "Resume_Documents";
        private const string InterpretationImages = "Interpretation_Images";
        private const string PromptGenerationFooocus = "Prompt_Generation_Fooocus";
        private const string AnalyseMails = "Analyse_Mails";
        private const string GenerationMail = "Generation_Mails";
        private const string AnalyseCVMission = "Analyse_CV_Mission";
        private const string Facture_To_Xml = "Facture_To_Xml";
        private const string CV_To_Xml = "CV_To_Xml";
        private const string TF_From_DSF = "TF_From_DSF";
        private const string LLM_CODER = "LLM_CODER";
        #endregion

        #region Méthodes publiques
        public static string GetValueByEnum(TypeUseCase typeUseCase)
        {
            string value = string.Empty;
            switch (typeUseCase)
            {
                case TypeUseCase.TF_From_DSF:
                    value = TF_From_DSF;
                    break;
                case TypeUseCase.LLM:
                    value = LLM;
                    break;
                case TypeUseCase.LLM_Coder:
                    value = LLM_CODER;
                    break;
                case TypeUseCase.RAG:
                    value = RAG;
                    break;
                case TypeUseCase.ResumeDocuments:
                    value = ResumeDocuments;
                    break;
                case TypeUseCase.InterpretationImages:
                    value = InterpretationImages;
                    break;
                case TypeUseCase.PromptGenerationFooocus:
                    value = PromptGenerationFooocus;
                    break;
                case TypeUseCase.AnalyseMails:
                    value = AnalyseMails;
                    break;
                case TypeUseCase.GenerationMail:
                    value = GenerationMail;
                    break;
                case TypeUseCase.AnalyseCVMission:
                    value = AnalyseCVMission;
                    break;
                case TypeUseCase.CV_To_Xml:
                    value = CV_To_Xml;
                    break;
                case TypeUseCase.Facture_To_Xml:
                    value = Facture_To_Xml;
                    break;
            }

            return value;
        }
        #endregion
    }
    #endregion
}
