import streamlit as st


def info_perso():
    # Récupérer le gestionnaire de base de données
    db_manager = st.session_state.get("db_manager")

    if db_manager is None:
        st.error("Erreur : DBManager n'est pas initialisé.")
    else:
        # Récupérer les informations de l'utilisateur connecté
        user_id = st.session_state["user_id"]
        query = f"SELECT * FROM utilisateurs WHERE id_utilisateur = {user_id}"
        user_info = db_manager.query(query)

        if not user_info:
            st.error("Utilisateur non trouvé.")
        else:
            user_info = user_info[0]  # Récupérer la première ligne (unique utilisateur)
            # print(user_info)  # Récupérer et afficher les informations de l'utilisateur

            # Premier formulaire (Nom, Email, Mot de passe)
            col1, col2, col3 = st.columns(3)
            with col1:
                nom = st.text_input("Nom", user_info["login"])
            with col2:
                email = st.text_input("Email", user_info["email"])

            # Deuxième formulaire (Objectifs nutritionnels, Poids, Taille)
            col1, col2, col3 = st.columns(3)
            with col1:

                objectifs_nutritionnels_val = (
                    user_info["objectifs_nutritionnels"]
                    if user_info["objectifs_nutritionnels"]
                    else "Vide"
                )
                objectifs_nutritionnels = st.selectbox(
                    "Objectifs nutritionnels",
                    ["Prise de masse", "Tonification", "Perdre du poids", "Vide"],
                    index=[
                        "Prise de masse",
                        "Tonification",
                        "Perdre du poids",
                        "Vide",
                    ].index(objectifs_nutritionnels_val),
                )
            with col2:
                poids = st.number_input("Poids (kg)", value=user_info["poids"], step=1)
            with col3:
                taille = st.number_input(
                    "Taille (cm)", value=user_info["taille"], step=1
                )

            # Troisième formulaire (Régime particulier, Activité physique, Objectif calorique)
            col1, col2, col3 = st.columns(3)
            with col1:
                regime_particulier = st.text_area(
                    "Régime particulier", user_info["regime_particulier"]
                )
            with col2:
                # Traitement de la valeur vide pour l'activité physique
                activite_physique_val = (
                    user_info["activite_physique"]
                    if user_info["activite_physique"]
                    else "Vide"
                )
                activite_physique = st.selectbox(
                    "Activité physique",
                    ["Sédentaire", "Légère", "Modérée", "Intense", "Vide"],
                    index=["Sédentaire", "Légère", "Modérée", "Intense", "Vide"].index(
                        activite_physique_val
                    ),
                )
            with col3:
                objectif_calorique = st.text_input(
                    "Objectif calorique", user_info["objectif_calorique"]
                )

            # Bouton pour sauvegarder toutes les informations
            if st.button("Tout mettre à jour"):
                table_name = "utilisateurs"

                set_clause = """login = ?, email = ?, objectifs_nutritionnels = ?, poids = ?, taille = ?,
                                regime_particulier = ?, activite_physique = ?, objectif_calorique = ?"""
                condition = "id_utilisateur = ?"

                # Rassembler les paramètres à passer à la méthode
                params = (
                    nom,
                    email,
                    objectifs_nutritionnels,
                    poids,
                    taille,
                    regime_particulier,
                    activite_physique,
                    objectif_calorique,
                    user_id,
                )

                # Appel à la méthode update_data avec les bons paramètres
                db_manager.update_data(table_name, set_clause, condition, params)

                st.success("Informations mises à jour avec succès.")