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

import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.wahlvorschlag.entity.Direktkandidat;

public enum ExportZulassungsstatusBeschraenkung {
  ALLE{
    @Override
    public boolean isExportieren(Direktkandidat direktkandidat) {
      return true;
    }

    @Override
    public boolean isExportieren(Kandidatur kandidatur) {
      return true;
    }
  },
  NUR_ZUGELASSENE {
    @Override
    public boolean isExportieren(Direktkandidat direktkandidat) {
      return direktkandidat.isZugelassen();
    }

    @Override
    public boolean isExportieren(Kandidatur kandidatur) {
      return kandidatur.getWahlvorschlag().isZugelassen() && kandidatur.isZugelassen();
    }
  },
  NUR_NICHT_ZUGELASSENE{
    @Override
    public boolean isExportieren(Direktkandidat direktkandidat) {
      return direktkandidat.isNichtZugelassenImSinneAbgelehnt();
    }

    @Override
    public boolean isExportieren(Kandidatur kandidatur) {
      return kandidatur.getWahlvorschlag().isNichtZugelassenImSinneAbgelehnt() || kandidatur.isNichtZugelassenImSinneAbgelehnt();
    }
  },
  NUR_OFFENE{
    @Override
    public boolean isExportieren(Direktkandidat direktkandidat) {
      return direktkandidat.isUngeprueft();
    }

    @Override
    public boolean isExportieren(Kandidatur kandidatur) {
      return kandidatur.getWahlvorschlag().isUngeprueft() || kandidatur.isUngeprueft();
    }
  };

  public abstract boolean isExportieren(Direktkandidat direktkandidat);

  public abstract boolean isExportieren(Kandidatur kandidatur);
}
