
package de.ivu.elect.presentation.kandidatur.menu;

import static java.util.stream.Collectors.toList;

import java.util.Collection;
import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.kandidatur.boundary.DirektkandidaturExtendedDAO;
import de.ivu.elect.business.kandidatur.entity.Direktkandidatur;
import de.ivu.elect.business.wahlvorschlag.entity.Direktkandidat;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.kandidatur.DirektkandidaturSearchView;
import de.ivu.elect.presentation.wahlvorschlag.dokumente.WahlvorschlaegeAlsListeDokumentErzeugenView;
import de.ivu.elect.presentation.wahlvorschlag.menu.AbstractWahlvorschlaegeAlsListeDokumentErzeugenMenuItemEntry;

public class DirektkandidaturWahlvorschlaegeAlsListeDokumentErzeugenMenuItemEntry extends AbstractWahlvorschlaegeAlsListeDokumentErzeugenMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient DirektkandidaturExtendedDAO direktkandidaturExtendedDAO;

  @View
  @Inject
  private transient DirektkandidaturSearchView direktkandidaturSearchView;

  public DirektkandidaturWahlvorschlaegeAlsListeDokumentErzeugenMenuItemEntry() {
    super();
  }

  @Override
  protected String initWahlvorschlaege(WahlvorschlaegeAlsListeDokumentErzeugenView wahlvorschlaegeAlsListeDokumentErzeugenView) {
    List<Direktkandidat> direktkandidaten = attachAll(direktkandidaturSearchView.getSearchResult()).stream().map(Direktkandidatur::getDirektkandidat).collect(toList());

    return wahlvorschlaegeAlsListeDokumentErzeugenView.initWahlvorschlaege(direktkandidaten);
  }

  private List<Direktkandidatur> attachAll(Collection<Direktkandidatur> direktkandidaturen) {
    return direktkandidaturExtendedDAO.attachAll(direktkandidaturen);
  }
}
