package dev.lions.user.manager.client.view;

import dev.lions.faces.layout.view.GuestPreferences;
import dev.lions.faces.layout.view.UserSessionBean;
import jakarta.annotation.PostConstruct;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import lombok.Data;

import java.io.Serializable;
import java.util.logging.Logger;

/**
 * Bean JSF pour la page de paramètres
 * 
 * @author Lions User Manager
 * @version 1.0.0
 */
@Named("settingsBean")
@ViewScoped
@Data
public class SettingsBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private static final Logger LOGGER = Logger.getLogger(SettingsBean.class.getName());

    @Inject
    private UserSessionBean userSessionBean;

    @Inject
    private GuestPreferences guestPreferences;

    @PostConstruct
    public void init() {
        LOGGER.info("Initialisation de SettingsBean");
    }

    /**
     * Sauvegarder les préférences
     */
    public void savePreferences() {
        try {
            // Les préférences sont déjà sauvegardées dans GuestPreferences (SessionScoped)
            addSuccessMessage("Préférences sauvegardées avec succès");
        } catch (Exception e) {
            LOGGER.severe("Erreur lors de la sauvegarde: " + e.getMessage());
            addErrorMessage("Erreur lors de la sauvegarde: " + e.getMessage());
        }
    }

    // Méthodes utilitaires
    private void addSuccessMessage(String message) {
        FacesContext.getCurrentInstance().addMessage(null,
            new FacesMessage(FacesMessage.SEVERITY_INFO, "Succès", message));
    }

    private void addErrorMessage(String message) {
        FacesContext.getCurrentInstance().addMessage(null,
            new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erreur", message));
    }
}

