package xyz.danielcortes.controllers.idioma;

import javax.swing.JOptionPane;
import xyz.danielcortes.models.Idioma;
import xyz.danielcortes.repository.IdiomaRepository;
import xyz.danielcortes.views.idioma.IdiomaCreatePanel;

public class IdiomaCreateController {

  private IdiomaRepository idiomaRepository;
  private IdiomaCreatePanel view;

  public IdiomaCreateController(IdiomaCreatePanel view) {
    this.idiomaRepository = new IdiomaRepository();
    this.view = view;

    this.setupListeners();
  }

  private void setupListeners() {
    view.getNombreField().addActionListener(e -> save());
    view.getGuardarButton().addActionListener(e -> save());
  }

  private void save() {
    String nombre = view.getNombreField().getText();
    if (!validateNombre(nombre)) return;

    Idioma idioma = new Idioma();
    idioma.setNombre(nombre);

    idiomaRepository.save(idioma);

    this.view.getNombreField().setText("");
    this.view.getNombreField().requestFocus();
  }

  private boolean validateNombre(String nombre) {
    if (nombre == null) {
      JOptionPane.showMessageDialog(
          this.view.getContentPane(),
          "El nombre es nulo",
          "Error",
          JOptionPane.ERROR_MESSAGE);
      return false;
    } else if (nombre.isEmpty()) {
      JOptionPane.showMessageDialog(
          this.view.getContentPane(),
          "El nombre esta vacío",
          "Error",
          JOptionPane.ERROR_MESSAGE);
      return false;
    }
    return true;
  }

  public IdiomaCreatePanel getView() {
    return view;
  }

}
