
package de.ivu.elect.presentation.wahl.exchange;

import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.datei.entity.DateiExport;
import de.ivu.elect.business.dokumente.control.ElectDokumentContext;
import de.ivu.elect.business.exchange.control.FileFormat;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.wahl.boundary.NlExportArtefaktNachSystemExportstatusBulkExporter;
import de.ivu.elect.business.wahl.control.AbstractNlExportArtefaktNachSystemExportstatusExportContext;
import de.ivu.elect.business.wahl.entity.AbstractWahlParameterLoader;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;

@OnlineHilfeId("TODO")
@Named(NlExportArtefaktNachSystemExportstatusSearchExportView.COMPONENT_NAME)
@View(viewId = NlExportArtefaktNachSystemExportstatusSearchExportView.VIEW_ID, useCase = UseCasePermission.CUSTOMER_3)
public class NlExportArtefaktNachSystemExportstatusSearchExportView extends AbstractNlExportArtefaktNachSystemExportstatusBulkExportView {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "nlExportArtefaktNachSystemExportstatusSearchExportView";

  public static final String VIEW_ID = "/wahl/nl-dokument-nach-system-exportstatus-search-export.xhtml";

  @Inject
  private transient NlExportArtefaktNachSystemExportstatusBulkExporter nlExportArtefaktNachSystemExportstatusBulkExporter;

  @Inject
  private transient NlExportArtefaktNachSystemExportstatusSearchExportDescription nlExportArtefaktNachSystemExportstatusSearchExportDescription;

  public NlExportArtefaktNachSystemExportstatusSearchExportView() {
    super();
  }

  @Override
  public void preRenderView() {
    // TODO Ggf. Hinweise, zum Status der Gebiete, etc. ...
  }

  @Override
  public String getPageTitle() {
    return getMessage("dokument.nach.system.exportstatus.search.page.title");
  }

  @Override
  public String getPageHeader() {
    return getMessage("dokument.nach.system.exportstatus.search.page.header");
  }

  public String getPageSubheader() {
    return "";
  }

  @Override
  public boolean isSupportedFileFormatsRendered() {
    return false; // ELECT-10276
  }

  @Override
  public boolean isBtnExportierenRendered() {
    return false; // ELECT-10276
  }

  @Override
  protected Predicate< ? super DateiExport> getSearchResultPredicate(List<FileFormat> ignored) {
    return Objects::nonNull; // ELECT-10276
  }

  @Override
  public NlExportArtefaktNachSystemExportstatusSearchExportDescription getExportDescription() {
    return nlExportArtefaktNachSystemExportstatusSearchExportDescription;
  }

  @Override
  protected NlExportArtefaktNachSystemExportstatusBulkExporter getExporter() {
    return nlExportArtefaktNachSystemExportstatusBulkExporter;
  }

  @Override
  protected AbstractNlExportArtefaktNachSystemExportstatusExportContext createContext(ElectDokumentContext electDokumentContext, AbstractWahlParameterLoader wahlParameterLoader,
      Collection<Gebiet> gebieteInWahl) {
    return new AbstractNlExportArtefaktNachSystemExportstatusExportContext(electDokumentContext, wahlParameterLoader, gebieteInWahl) {

      private static final long serialVersionUID = 1L;
    };
  }
}
