package xyz.danielcortes.controllers.idioma;

import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import xyz.danielcortes.models.Idioma;
import xyz.danielcortes.repository.IdiomaRepository;
import xyz.danielcortes.views.idioma.IdiomaDeletePanel;

public class IdiomaDeleteController {

  private IdiomaDeletePanel view;
  private IdiomaRepository idiomaRepository;

  public IdiomaDeleteController(IdiomaDeletePanel view) {
    this.view = view;
    this.idiomaRepository = new IdiomaRepository();
    this.loadIdiomaCombo();
    this.setupListeners();
  }

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

  private void delete() {
    Idioma selected = (Idioma) this.view.getIdiomaCombo().getSelectedItem();
    if (!validateIdioma(selected)) return;

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

  private boolean validateIdioma(Idioma idioma) {
    if (idioma == null) {
      JOptionPane.showMessageDialog(
          this.view.getContentPane(),
          "No hay idioma seleccionado",
          "Error",
          JOptionPane.ERROR_MESSAGE);
      return false;
    }
    return true;
  }

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

  private void loadIdiomaCombo() {
    List<Idioma> idiomas = this.idiomaRepository.getAll();
    JComboBox<Idioma> combobox = this.view.getIdiomaCombo();
    combobox.removeAllItems();
    for (Idioma idioma : idiomas) {
      combobox.addItem(idioma);
    }
  }

  public IdiomaDeletePanel getView() {
    return view;
  }

}
