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.Objetivo;
import com.borjabolufer.elevate.utils.ColorUtils;
import com.google.android.material.button.MaterialButton;

public class ObjetivoFragment extends Fragment {

    public interface IOnObjetivoListener {
        void onObjetivoSelected(Objetivo objetivo);
    }

    private IOnObjetivoListener objetivoListener;
    private Objetivo objetivoSeleccionado;
    private MaterialButton selectedButton;

    public ObjetivoFragment() {
        super(R.layout.fragment_objetivo);
    }

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

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

        MaterialButton btnPerder = view.findViewById(R.id.objetivo_perder);
        MaterialButton btnGanar = view.findViewById(R.id.objetivo_ganar);
        MaterialButton btnTonificar = view.findViewById(R.id.objetivo_tonificar);
        Button btnContinuar = view.findViewById(R.id.btnContinuarObjetivo);

        btnContinuar.setEnabled(false);

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

            if (v.getId() == R.id.objetivo_perder) {
                objetivoSeleccionado = new Objetivo("Perder grasa");
            } else if (v.getId() == R.id.objetivo_ganar) {
                objetivoSeleccionado = new Objetivo("Ganar masa");
            } else if (v.getId() == R.id.objetivo_tonificar) {
                objetivoSeleccionado = new Objetivo("Tonificar");
            }

            btnContinuar.setEnabled(true);
        };

        btnPerder.setOnClickListener(listener);
        btnGanar.setOnClickListener(listener);
        btnTonificar.setOnClickListener(listener);

        btnContinuar.setOnClickListener(v -> {
            if (objetivoSeleccionado != null && objetivoListener != null) {
                objetivoListener.onObjetivoSelected(objetivoSeleccionado);
            }
        });
    }
}
