package de.ivu.elect.sitzberechnung;

/**
 * Kandidatur = Kandidat, der für eine Gruppe in einem Gebiet kandidiert
 */
public interface Kandidatur extends SitzberechnungEntity {

  Kandidat getKandidat();

  Waehlbarkeit getWaehlbarkeit();

  Gebiet getGebiet();

  Gruppe getGruppe();

  default boolean isDirektkandidatur() {
    return false;
  }

  @Override
  default String getKey() {
    String key = getKandidat().getKey() + "_" + getGebiet().getKey();
    if (getGruppe() != null) {
      key += "_" + getGruppe().getKey();
    }
    key += "_" + (isDirektkandidatur() ? "D" : "L");
    return key;
  }
}
