
package de.ivu.elect.presentation.wahlrechtspruefung.action;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.wahlrechtspruefung.boundary.WahlrechtspruefungEdit;
import de.ivu.elect.business.wahlrechtspruefung.entity.Wahlrechtspruefung;
import de.ivu.elect.business.wahlrechtspruefung.entity.WahlrechtspruefungConstants;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.security.AbstractGebietSecurity;
import de.ivu.elect.presentation.wahlrechtspruefung.WahlrechtspruefungSearchView;

@Named(WahlrechtspruefungBemerkungAction.COMPONENT_NAME)
public class WahlrechtspruefungBemerkungAction extends AbstractWahlrechtspruefungAction {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "wahlrechtspruefungBemerkungAction";

  @View
  @Inject
  private transient WahlrechtspruefungSearchView wahlrechtspruefungSearchView;

  @Inject
  private transient WahlrechtspruefungEdit wahlrechtspruefungEdit;

  @Inject
  private transient WahlrechtspruefungUpdateSearchTable wahlrechtspruefungUpdateSearchTable;

  public WahlrechtspruefungBemerkungAction() {
    super();
  }

  @Override
  protected UseCasePermission getRequiredPermission() {
    return UseCasePermission.WAHLRECHTSPRUEFUNG_EDIT;
  }

  @Override
  protected AbstractGebietSecurity getGebietSecurity() {
    return getBearbeitenGebietSecurity();
  }

  @Override
  public boolean isDisabledInternal(@Nonnull Wahlrechtspruefung wahlrechtspruefung) {
    return false;
  }

  @Override
  protected String doIt(Wahlrechtspruefung wahlrechtspruefung) {
    wahlrechtspruefungSearchView.setSelectedEntity(wahlrechtspruefung);

    return null;
  }

  public String commitComment() {
    Wahlrechtspruefung wahlrechtspruefung = wahlrechtspruefungSearchView.getSelectedEntity();

    wahlrechtspruefungEdit.save(wahlrechtspruefung);
    wahlrechtspruefungUpdateSearchTable.updateSearchTable(wahlrechtspruefung);

    closeDialog();

    return null;
  }

  @Override
  public String getDialogName() {
    return "EditComment";
  }

  @Override
  public String getLabelKey() {
    return WahlrechtspruefungConstants.MESSAGE_KEY_BEMERKUNG_EINZAHL;
  }

  @Override
  public String getIcon() {
    return appIcons.getIconComment();
  }

  @Override
  protected String getSimpleClassName() {
    return WahlrechtspruefungBemerkungAction.class.getSimpleName();
  }
}
