package mx.gob.jumapacelaya.ui.login;

import com.vaadin.flow.component.UI;
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.HorizontalLayout;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;


@Route("login")
@PageTitle("Login")
@AnonymousAllowed
public class LoginView extends VerticalLayout implements BeforeEnterObserver {
    private static final Logger log = LoggerFactory.getLogger(LoginView.class);
    private final LoginForm login = new LoginForm();


    public LoginView(){

        //Configuracion de la vista
        addClassName("login");
        setSizeFull();
        setPadding(false);
        setMargin(false);

        // Crear el layout horizontal
        HorizontalLayout mainLayout = new HorizontalLayout();
        mainLayout.setSizeFull();
        mainLayout.setPadding(false);
        mainLayout.setMargin(false);


        // Configuración de i18n para el formulario de login
        LoginI18n i18n = LoginI18n.createDefault();
        LoginI18n.Form i18nFormulario = i18n.getForm();
        i18nFormulario.setTitle("Mantenimiento Preventivo y Correctivo");
        i18nFormulario.setUsername("Usuario");
        i18nFormulario.setPassword("Contraseña");
        i18nFormulario.setSubmit("Iniciar sesión");
        i18n.setForm(i18nFormulario);


        // Configuración de los mensajes de error
        LoginI18n.ErrorMessage i18nError = i18n.getErrorMessage();
        i18nError.setTitle("Credenciales incorrectas");
        i18nError.setMessage("Usuario o contraseña incorrectos, verifica tus credenciales");
        i18n.setErrorMessage(i18nError);

        i18n.setAdditionalInformation("Versión 2.0.0 - © 2024 JUMAPACelaya");

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




        // Crear un contenedor para el formulario
        VerticalLayout loginFormContainer = new VerticalLayout();
        Image imageLogin = new Image("images/LOGO_24'27.png", "Login");
        imageLogin.setWidth("300px");
        loginFormContainer.add(imageLogin);
        loginFormContainer.add(login);
        loginFormContainer.setSizeUndefined();
        loginFormContainer.setPadding(false);
        loginFormContainer.setMargin(false);
        loginFormContainer.setAlignItems(Alignment.CENTER);
        loginFormContainer.setJustifyContentMode(JustifyContentMode.CENTER);
        loginFormContainer.getElement().getThemeList().add("dark");


        // Añadir la imagen y el contenedor del formulario al layout principal
        mainLayout.add(loginFormContainer);
        mainLayout.setFlexGrow(1, loginFormContainer);
        mainLayout.setFlexGrow(2);

        // Añadir el layout principal a la vista
        add(mainLayout);

    }


    @Override
    public void beforeEnter(BeforeEnterEvent beforeEnterEvent) {
        if(beforeEnterEvent.getLocation()
                .getQueryParameters()
                .getParameters()
                .containsKey("error")){
            login.setError(true);

        }

    }
}