
package de.ivu.elect.was.exchange.ergebnis;

import de.ivu.elect.business.ergebnis.control.NlWasErgebnisArtefaktNachGebietErgebniseingabestatusExportContext;
import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus;
import de.ivu.elect.business.wahl.control.AbstractNlExportArtefaktNachSystemExportstatusExportContext;
import de.ivu.elect.core.exchange.wahl.AbstractNlExportArtefaktNachSystemExportstatusZipBulkExportMapper;

public class NlWasErgebnisArtefaktNachGebietFreigabeZipBulkExportMapper extends AbstractNlExportArtefaktNachSystemExportstatusZipBulkExportMapper
    implements
      NlWasErgebnisArtefaktNachGebietFreigabeBulkExportMapper {

  public static final String FILE_FORMAT_NAME = "file.format.ergebnisdokument.nach.gebiet.freigabe.export";

  public NlWasErgebnisArtefaktNachGebietFreigabeZipBulkExportMapper() {
    super();
  }

  @Override
  public boolean isAcceptContext(AbstractNlExportArtefaktNachSystemExportstatusExportContext context) {
    if (context instanceof NlWasErgebnisArtefaktNachGebietErgebniseingabestatusExportContext) {
      return super.isAcceptContext(context) && isAcceptContext((NlWasErgebnisArtefaktNachGebietErgebniseingabestatusExportContext) context);
    }

    return false;
  }

  private boolean isAcceptContext(NlWasErgebnisArtefaktNachGebietErgebniseingabestatusExportContext context) {
    return context.getErgebniseingabestatusExported().map(Ergebniseingabestatus::isFreigegeben).orElse(false);
  }

  @Override
  public String getFileFormatName() {
    return FILE_FORMAT_NAME;
  }
}
