
package de.ivu.elect.business.pruefung.boundary;

import static java.util.Collections.emptyList;

import java.util.List;

import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.wahlrechtspruefung.entity.Wahlrechtspruefung;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;

/**
 * NICHT PER @Inject!!!!
 *
 * A.k.a. MINIMALE Zulassungspruefung...
 *
 * @see ZulassungPrueferFactory
 */
public class CoreZulassungPruefer implements ZulassungPruefer {

  private static final long serialVersionUID = 1L;

  public CoreZulassungPruefer() {
    super();
  }

  @Override
  public boolean isZulassenErlaubt(Kandidatur kandidatur) {
    return kandidatur.isUngeprueftOderAufStimmzettel(); // ELECT-9413 Kandidaturen lassen sich sonst in MUC-WAS nicht wieder zulassen
  }

  @Override
  public boolean isZulassenErlaubtUndNichtAbgelehnt(Kandidatur kandidatur) {
    if (kandidatur.isNichtZugelassenImSinneAbgelehnt()) {
      return false;
    }

    return isZulassenErlaubt(kandidatur);
  }

  @Override
  public List<String> getGruendeFuerVerweigerungDerZulassung(Kandidatur kandidatur) {
    throw new UnsupportedOperationException();
  }

  @Override
  public String getBegruendungDerZulassungsverweigerung(Kandidatur kandidatur) {
    throw new UnsupportedOperationException();
  }

  @Override
  public List<Wahlrechtspruefung> collectWahlrechtspruefungen(Kandidatur kandidatur) {
    return emptyList();
  }

  @Override
  public boolean isZulassenErlaubt(Wahlvorschlag wahlvorschlag) {
    return wahlvorschlag.isUngeprueftOderAufStimmzettel(); // ELECT-9413 Wahlvorschläge lassen sich sonst in MUC-WAS nicht wieder zulassen
  }

  @Override
  public List<String> getGruendeFuerVerweigerungDerZulassung(Wahlvorschlag wahlvorschlag) {
    throw new UnsupportedOperationException();
  }

  @Override
  public String getBegruendungDerZulassungsverweigerung(Wahlvorschlag wahlvorschlag) {
    throw new UnsupportedOperationException();
  }

  @Override
  public List<Wahlrechtspruefung> collectWahlrechtspruefungen(Wahlvorschlag wahlvorschlag) {
    return emptyList();
  }
}
