package com.borjabolufer.elevate.ui.fragments;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.borjabolufer.elevate.R;
import com.borjabolufer.elevate.model.Intensidad;
import com.borjabolufer.elevate.utils.ColorUtils;
import com.google.android.material.button.MaterialButton;

public class IntensidadFragment extends Fragment {

    public interface IOnIntensidadListener {
        void onIntensidadSelected(Intensidad intensidad);
    }

    private IOnIntensidadListener intensidadListener;
    private Intensidad intensidadSeleccionada;
    private MaterialButton selectedButton;

    public IntensidadFragment() {
        super(R.layout.fragment_intensidad);
    }

    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);
        if (context instanceof IOnIntensidadListener) {
            intensidadListener = (IOnIntensidadListener) context;
        } else {
            throw new ClassCastException(context.toString() + " must implement IOnIntensidadListener");
        }
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        MaterialButton btnBaja = view.findViewById(R.id.intensidad_baja);
        MaterialButton btnMedia = view.findViewById(R.id.intensidad_media);
        MaterialButton btnAlta = view.findViewById(R.id.intensidad_alta);
        Button btnContinuar = view.findViewById(R.id.btnContinuarIntensidad);

        btnContinuar.setEnabled(false);

        View.OnClickListener listener = v -> {
            if (selectedButton != null) {
                ColorUtils.limpiarSeleccion(selectedButton);
            }
            selectedButton = (MaterialButton) v;
            ColorUtils.marcarSeleccion(selectedButton);

            if (v.getId() == R.id.intensidad_baja) {
                intensidadSeleccionada = new Intensidad("Baja");
            } else if (v.getId() == R.id.intensidad_media) {
                intensidadSeleccionada = new Intensidad("Media");
            } else if (v.getId() == R.id.intensidad_alta) {
                intensidadSeleccionada = new Intensidad("Alta");
            }

            btnContinuar.setEnabled(true);
        };

        btnBaja.setOnClickListener(listener);
        btnMedia.setOnClickListener(listener);
        btnAlta.setOnClickListener(listener);

        btnContinuar.setOnClickListener(v -> {
            if (intensidadSeleccionada != null && intensidadListener != null) {
                intensidadListener.onIntensidadSelected(intensidadSeleccionada);
            }
        });
    }
}
