
package de.ivu.elect.business.entschaedigung.entity;

import static java.util.Arrays.stream;
import static java.util.stream.Collectors.toSet;

import java.util.Collection;

public enum EntschaedigungStatus {

  UNBESTIMMT,

  VORGESEHEN,
  AUSGEZAHLT;

  private static final Collection<EntschaedigungStatus> VALUES_AUSGEZAHLT = stream(EntschaedigungStatus.values()).filter(EntschaedigungStatus::isAusgezahlt).collect(toSet());

  private static final Collection<EntschaedigungStatus> VALUES_AUSZAHLBAR = stream(EntschaedigungStatus.values()).filter(EntschaedigungStatus::isAuszahlbar).collect(toSet());

  private EntschaedigungStatus() {
  }

  public boolean isAuszahlbar() {
    return !UNBESTIMMT.equals(this) && !isAusgezahlt();
  }

  public boolean isAusgezahlt() {
    return AUSGEZAHLT.equals(this);
  }

  public static Collection<EntschaedigungStatus> valuesAuszahlbar() {
    return VALUES_AUSZAHLBAR;
  }

  public static Collection<EntschaedigungStatus> valuesAusgezahlt() {
    return VALUES_AUSGEZAHLT;
  }
}
