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

import java.util.Collection;

import javax.annotation.Nullable;

import de.ivu.elect.business.gruppeimgebiet.entity.GruppeImGebiet;
import de.ivu.elect.business.kandidatur.entity.KandidaturStimmzettelPersonendaten;
import de.ivu.elect.business.kandidatur.entity.ListenkandidaturStimmzettelPosition;
import de.ivu.elect.business.stimmeingabe.entity.Stimmeingabe;
import de.ivu.elect.business.stimmzettel.entity.EntityAufStimmzettelDaten;
import de.ivu.elect.business.wahl.entity.Wahlart;
import de.ivu.elect.business.wahl.entity.WahlartErgebnisart;

public interface StimmeingabeListenkandidaturStimmenErfassenLabelGenerator {

  boolean isAkzeptiertWahlart(Wahlart wahlart);

  String getListenkandidaturStimmenKennung(EntityAufStimmzettelDaten entityAufStimmzettelDaten, @Nullable GruppeImGebiet gruppeImGebiet, WahlartErgebnisart ergebnisart,
      Collection<GruppeImGebiet> gruppenImGebiet);

  String getListenkandidaturStimmenBezeichnung(EntityAufStimmzettelDaten entityAufStimmzettelDaten, @Nullable GruppeImGebiet gruppeImGebiet, WahlartErgebnisart ergebnisart,
      Collection<GruppeImGebiet> gruppenImGebiet);

  String getListenkandidaturStimmenStimmeingabeKennung(EntityAufStimmzettelDaten entityAufStimmzettelDaten, @Nullable Stimmeingabe stimmeingabe, Collection<GruppeImGebiet> gruppenImGebiet);

  String getListenkandidaturStimmenStimmeingabeBezeichnung(EntityAufStimmzettelDaten entityAufStimmzettelDaten, @Nullable Stimmeingabe stimmeingabe, Collection<GruppeImGebiet> gruppenImGebiet);

  String getListenkandidaturStimmenStimmeingabeTooltip(EntityAufStimmzettelDaten entityAufStimmzettelDaten, Stimmeingabe stimmeingabe, Collection<GruppeImGebiet> gruppenImGebiet);

  ListenkandidaturStimmzettelPosition getListenkandidaturStimmzettelPosition(EntityAufStimmzettelDaten entityAufStimmzettelDaten, @Nullable Stimmeingabe stimmeingabe,
      Collection<GruppeImGebiet> gruppenImGebiet);

  KandidaturStimmzettelPersonendaten getListenkandidaturStimmzettelName(EntityAufStimmzettelDaten entityAufStimmzettelDaten, @Nullable Stimmeingabe stimmeingabe,
      Collection<GruppeImGebiet> gruppenImGebiet);
}
