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

import java.util.Arrays;
import java.util.List;
import java.util.UUID;

import de.ivu.elect.business.konfiguration.entity.ElectLogLevel;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.person.entity.Geschlecht;
import de.ivu.elect.business.personenregister.boundary.Personenregister;
import de.ivu.elect.business.personenregister.boundary.PersonenregisterByOrdnungsmerkmalSearchParameters;
import de.ivu.elect.business.personenregister.boundary.PersonenregisterByPersonendatenSearchParameters;
import de.ivu.elect.business.personenregister.boundary.PersonenregisterSearchResult;
import de.ivu.elect.business.personenregister.entity.PersonenregisterPersonendaten;

public class NoOpPersonenregister implements Personenregister<PersonenregisterPersonendaten> {;

  private static final long serialVersionUID = 1L;

  public static final NoOpPersonenregister INSTANCE = new NoOpPersonenregister();

  private NoOpPersonenregister() {
    super();
  }

  @Override
  public boolean isAktiviert(Mandant mandant) {
    return false;
  }

  @Override
  public boolean isErreichbar(Mandant mandant) {
    return false;
  }

  @Override
  public String getName() {
    return getClass().getSimpleName();
  }

  @Override
  public String getKurzname() {
    return getName();
  }

  @Override
  public boolean isSearchByEinwohnerstatusSupported() {
    return false;
  }

  @Override
  public boolean isSearchByOrdnungsmerkmalAutomatischSupported(Mandant mandant) {
    return false;
  }

  @Override
  public boolean isSearchByOrdnungsmerkmalManuellSupported(Mandant mandant) {
    return false;
  }

  @Override
  public PersonenregisterSearchResult<PersonenregisterPersonendaten> search(Mandant mandant, UUID requestUUID, PersonenregisterByOrdnungsmerkmalSearchParameters searchParameters) {
    return new PersonenregisterSearchResult<>(requestUUID);
  }

  @Override
  public List<Geschlecht> getGeschlechterSupported() {
    return Arrays.asList(Geschlecht.values());
  }

  @Override
  public ElectLogLevel getLogLevel(Mandant mandant) {
    return ElectLogLevel.DEAKTIVIERT;
  }

  @Override
  public void resetCache(Mandant mandant) {
    // nichts zu tun
  }

  @Override
  public boolean isZertifikatUploadMoeglich() {
    return false;
  }

  @Override
  public boolean isSearchByPersonendatenAutomatischSupported(Mandant mandant) {
    return false;
  }

  @Override
  public boolean isSearchByPersonendatenManuellSupported(Mandant mandant) {
    return false;
  }

  @Override
  public PersonenregisterSearchResult<PersonenregisterPersonendaten> search(Mandant mandant, UUID requestUUID, PersonenregisterByPersonendatenSearchParameters searchParameters) {
    return new PersonenregisterSearchResult<>(requestUUID);
  }
}
