import pandas as pd
import chainlit as cl
from chainlit.input_widget import Select, TextInput
from chainlit import user_session

def homemsg():
    app_user = cl.user_session.get("user")
    welcomeUser = app_user.identifier
    welcomeUserArray = welcomeUser.split('@')
    welcomeUserStr = welcomeUserArray[0].replace('.',' ')
    await cl.Message(f"> Bonjour {welcomeUserStr}").send()

async def homeRome():
	homemsg()   
    df_allcompetences = pd.read_csv('./public/referentiel_competence.csv')
    df_competences = df_allcompetences[['libelle_competence']].copy()
    df_competences = df_competences.sort_values(by=['libelle_competence'])
    competences_list = df_competences['libelle_competence'].tolist()
    competences_list.sort()
    competences_list.insert(0, "")
    cl.user_session.set("arraySettingsComp", competences_list)
    settings = await cl.ChatSettings(
        [
            Select(
                id="competence",
                label="Compétences",
                values=competences_list,
                initial_index=0,
            ),
            TextInput(id="competenceInput", label="ou saisir une compétence voire des objectifs pédagogiques", placeholder="ou saisir une compétence voire des objectifs pédagogiques", tooltip="saisir une compétence voire des objectifs pédagogiques"),
        ]
    ).send()
    value = settings["competence"]
    
    if len(value) < 2:
        warning = [
                    cl.Image(name="Warning", size="small", display="inline", path="./public/warning.png")
        ]
        await cl.Message(author="Datapcc : 🌐🌐🌐",content="1️⃣ Cliquez sur le bouton dont l'image suit, dans le prompt, pour commencer à élaborer une note sectorielle de la chaîne documentaire APCC!").send()
        await cl.Message(author="Datapcc : 🌐🌐🌐",content="", elements=warning).send()
        await cl.Message(author="Datapcc : 🌐🌐🌐",content="2️⃣ Puis sélectionnez ou saisissez une compétence ou des objectifs pédagogiques. Et vous êtes prêt!\n\n🔗 Plateforme de feedback et de fil d'activité : https://cloud.getliteral.ai/").send()
    contextChat = cl.user_session.get("contextChatBot")
	if not contextChat:
        contextChat = df_competences.to_string(index = False)
	return contextChat

async def homeEsco():
	homemsg()   
    df_allcompetences = pd.read_csv('./public/escoCompetencesAppellation.csv')
    df_competences = df_allcompetences[['compétence']].copy()
    df_competences = df_competences.sort_values(by=['compétence'])
    competences_list = df_competences['compétence'].tolist()
    competences_list.sort()
    competences_list.insert(0, "")
    cl.user_session.set("arraySettingsComp", competences_list)
    settings = await cl.ChatSettings(
        [
            Select(
                id="competence",
                label="Compétences",
                values=competences_list,
                initial_index=0,
            ),
            TextInput(id="competenceInput", label="ou saisir une compétence voire un métier en lien avec le développement durable", placeholder="ou saisir une compétence voire un métier en lien avec le développement durable", tooltip="saisir une compétence voire un métier en lien avec le développement durable"),
        ]
    ).send()
    value = settings["competence"]
    
    if len(value) < 2:
        warning = [
                    cl.Image(name="Warning", size="small", display="inline", path="./public/warning.png")
        ]
        await cl.Message(author="Datapcc : 🌐🌐🌐",content="1️⃣ Cliquez sur le bouton dont l'image suit, dans le prompt, pour commencer à élaborer une analyse des compétences liées au développement durable!").send()
        await cl.Message(author="Datapcc : 🌐🌐🌐",content="", elements=warning).send()
        await cl.Message(author="Datapcc : 🌐🌐🌐",content="2️⃣ Puis sélectionnez ou saisissez une compétence ou un métier en lien avec le développement durable. Et vous êtes prêt!\n\n🔗 Plateforme de feedback et de fil d'activité : https://cloud.getliteral.ai/").send()
    contextChat = cl.user_session.get("contextChatBot")
	if not contextChat:
        contextChat = df_competences.to_string(index = False)
	return contextChat