package mx.gob.jumapacelaya.views.login;

import com.vaadin.flow.component.html.Image;
import com.vaadin.flow.component.login.LoginForm;
import com.vaadin.flow.component.login.LoginI18n;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.auth.AnonymousAllowed;
import mx.gob.jumapacelaya.api.RedmineClient;
import mx.gob.jumapacelaya.services.UserService;

@Route("login")
@PageTitle("Login")
@AnonymousAllowed
public class LoginView extends VerticalLayout implements BeforeEnterObserver { //}, ComponentEventListener<AbstractLogin.LoginEvent> {

    private final LoginForm formularioLogin;
    private static final String LOGIN_SUCCESS_URL = ""; // URL de redirección después del login exitoso
    private final UserService userService;
    private final RedmineClient redmineClient;

    public LoginView(UserService userService, RedmineClient redmineClient) {
        addClassName("vista-login");
        setSizeFull();
        setAlignItems(Alignment.CENTER);
        setJustifyContentMode(JustifyContentMode.CENTER);

        // Imagen del logo
        Image logo = new Image("images/NVO_JUMAPA.png", "Logo JUMAPA");
        logo.setWidth("300px");

        // Configuración de i18n para el formulario de login
        LoginI18n i18n = LoginI18n.createDefault();
        LoginI18n.Form i18nFormulario = i18n.getForm();
        i18nFormulario.setTitle("Sistema de Soporte Técnico Gcia. de T.I");
        i18nFormulario.setUsername("Usuario");
        i18nFormulario.setPassword("Contraseña");
        i18nFormulario.setSubmit("Iniciar sesión");
        i18n.setForm(i18nFormulario);
        i18n.getErrorMessage().setTitle("Credenciales incorrectas");
        i18n.getErrorMessage().setMessage("El usuario o la contraseña son incorrectos, verifica tus credenciales.");

        // Configuración del formulario de login
        formularioLogin = new LoginForm();
        formularioLogin.setAction("login");
        formularioLogin.setForgotPasswordButtonVisible(false);
        formularioLogin.setI18n(i18n);

        // Añadir el listener del evento de login
        //formularioLogin.addLoginListener(this);

        // Añadir componentes a la vista
        add(logo, formularioLogin);
        this.userService = userService;
        this.redmineClient = redmineClient;
    }

    @Override
    public void beforeEnter(BeforeEnterEvent beforeEnterEvent) {
        // Mostrar el mensaje de error si hay un parámetro de error en la URL
        if (beforeEnterEvent.getLocation().getQueryParameters().getParameters().containsKey("error")) {
            formularioLogin.setError(true);
        }
    }

    // Manejar el evento de login
    /*@Override
    public void onComponentEvent(AbstractLogin.LoginEvent event) {
        boolean authenticated = mx.gob.jumapacelaya.views.login.SecurityUtils.authenticate(
                event.getUsername(), event.getPassword());

        if (authenticated) {
            RedmineUser user = userService.getAuthenticatedRedmineUser();
            if (user != null) {
                RedmineUser myAccount = redmineClient.getMyAccount(user.getLogin());
                if (myAccount != null && !myAccount.getKey().isEmpty()) {
                    VaadinService.getCurrentRequest().getWrappedSession().setAttribute("myaccount", myAccount);
                    //UI.getCurrent().getPage().setLocation(LOGIN_SUCCESS_URL);
                } //else {
                //    formularioLogin.setError(true);
                //}
            //} else {
            //    formularioLogin.setError(true);
            }
        } //else {
            //formularioLogin.setError(true);
       // }
    }*/
}
