package de.ivu.elect.business.gebietsbaum.control;

import java.io.Serializable;
import java.util.stream.Stream;

import javax.annotation.Nullable;
import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.boundary.GebietsartCreator;
import de.ivu.elect.business.gebietsbaum.boundary.GebietsartTemplate;
import de.ivu.elect.business.mandant.entity.Mandant;

public class StimmbezirkGebietsarten implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient GebietsartCreator gebietsartCreator;

  public StimmbezirkGebietsarten() {
    super();
  }

  @Nullable
  public GebietsartTemplate getGebietsartTemplateForReservebezirke(Mandant mandant) {
    return streamGebietsartTemplates(mandant).filter(GebietsartTemplate::isReservebezirk).findFirst().orElse(null);

  }

  @Nullable
  public GebietsartTemplate getGebietsartTemplateForBriefwahlbezirke(Mandant mandant) {
    return streamGebietsartTemplates(mandant).filter(GebietsartTemplate::isBriefwahlbezirk).findFirst().orElse(null);

  }

  @Nullable
  public GebietsartTemplate getGebietsartTemplateForStimmbezirke(Mandant mandant) {
    return streamGebietsartTemplates(mandant).filter(GebietsartTemplate::isStimmbezirk).findFirst().orElse(null);

  }

  protected Stream<? extends GebietsartTemplate> streamGebietsartTemplates(Mandant mandant) {
    return gebietsartCreator.getGebietsartTemplates(mandant).stream();
  }
}
