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

import java.io.File;

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

import de.ivu.elect.business.konfiguration.entity.KonfigurationLoader;
import de.ivu.elect.business.konfiguration.entity.MandantKonfigurationWerte;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingang;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.exchange.DateiAnzeigenView;

@Named(ErgebniseingangDateiAnzeigenAction.COMPONENT_NAME)
public class ErgebniseingangDateiAnzeigenAction extends AbstractErgebniseingangAction {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "ergebniseingangDateiAnzeigenAction";

  @Inject
  private transient KonfigurationLoader konfigurationLoader;

  @View
  @Inject
  private transient DateiAnzeigenView dateiAnzeigenView;

  public ErgebniseingangDateiAnzeigenAction() {
    super();
  }

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

  @Override
  public boolean isDisabledInternal(@Nonnull Ergebniseingang ergebniseingang) {
    return !konfigurationLoader.resolveBooleanValue(ergebniseingang.getMandant(), MandantKonfigurationWerte.STIMMEINGABE_DATEIEXPORT_AKTIVIERT);
  }

  @Override
  protected String doIt(Ergebniseingang ergebniseingang) {
    if (ergebniseingang == null) {
      return null;
    }

    return dateiAnzeigenView.init(getFilePath(attach(ergebniseingang)));
  }

  private String getFilePath(Ergebniseingang ergebniseingang) {
    return konfigurationLoader.resolveRequiredStringValue(ergebniseingang.getMandant(), MandantKonfigurationWerte.STIMMEINGABE_ABLAGEVERZEICHNIS) + File.separator
        + ergebniseingang.getErgebniseingangsartPathMitWahlnameFilesystemKompatibel() + File.separator + ergebniseingang.getDateinameFuerSicherung();
  }

  @Override
  public String getLabelKey() {
    return "datei.anzeigen.page.menu.item.label";
  }

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