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

public class SexoFragment extends Fragment {

    public interface IOnSexoListener {
        void onSexoSelected(Sexo sexo);
    }

    private IOnSexoListener sexoListener;
    private Sexo sexoSeleccionado;
    private MaterialButton selectedButton;

    public SexoFragment() {
        super(R.layout.fragment_sexo);
    }

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

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

        MaterialButton btnMasculino = view.findViewById(R.id.sexo_m);
        MaterialButton btnFemenino = view.findViewById(R.id.sexo_f);
        MaterialButton btnOtro = view.findViewById(R.id.sexo_o);
        Button btnContinuar = view.findViewById(R.id.btnContinuarSexo);

        btnContinuar.setEnabled(false);

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

            if (v.getId() == R.id.sexo_m) {
                sexoSeleccionado = new Sexo("Masculino");
            } else if (v.getId() == R.id.sexo_f) {
                sexoSeleccionado = new Sexo("Femenino");
            } else if (v.getId() == R.id.sexo_o) {
                sexoSeleccionado = new Sexo("Otro");
            }

            btnContinuar.setEnabled(true);
        };

        btnMasculino.setOnClickListener(listener);
        btnFemenino.setOnClickListener(listener);
        btnOtro.setOnClickListener(listener);

        btnContinuar.setOnClickListener(v -> {
            if (sexoSeleccionado != null && sexoListener != null) {
                sexoListener.onSexoSelected(sexoSeleccionado);
            }
        });
    }
}
