package xyz.danielcortes.controllers.categoria;

import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import xyz.danielcortes.models.Categoria;
import xyz.danielcortes.repository.CategoriaRepository;
import xyz.danielcortes.views.categoria.CategoriaDeletePanel;

public class CategoriaDeleteController {

  private CategoriaRepository categoriaRepository;
  private CategoriaDeletePanel view;

  public CategoriaDeleteController(CategoriaDeletePanel view) {
    this.view = view;
    this.categoriaRepository = new CategoriaRepository();
    this.setupListeners();
  }

  private void setupListeners() {
    view.getEliminarButton().addActionListener(e -> delete());
  }

  private void delete() {
    Categoria selected = (Categoria) this.view.getCategoriaCombo().getSelectedItem();
    if (!validateCategoria(selected)) return;

    this.categoriaRepository.delete(selected);
    this.reload();
  }

  private boolean validateCategoria(Categoria categoria) {
    if (categoria == null) {
      JOptionPane.showMessageDialog(
          this.view.getContentPane(),
          "No hay categoria seleccionada",
          "Error",
          JOptionPane.ERROR_MESSAGE);
      return false;
    }
    return true;
  }

  public void reload() {
    this.loadCategoriaCombo();
  }

  private void loadCategoriaCombo() {
    List<Categoria> categorias = this.categoriaRepository.getAll();
    JComboBox<Categoria> combobox = this.view.getCategoriaCombo();
    combobox.removeAllItems();
    for (Categoria categoria : categorias) {
      combobox.addItem(categoria);
    }
  }

  public CategoriaDeletePanel getView() {
    return view;
  }

}
