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

import static java.util.Arrays.asList;

import java.util.Collection;

import de.ivu.elect.business.entschaedigung.entity.EntschaedigungStatus;

public enum EntschaedigungKriteriumEinsatzStatus {

  BERECHENBAR {

    @Override
    public boolean isEntschaedigungBerechenbarIncluded() {
      return true;
    }

    @Override
    public Collection<EntschaedigungStatus> getEntschaedigungStatus() {
      return asList(EntschaedigungStatus.VORGESEHEN);
    }
  },
  AUSZAHLBAR {

    @Override
    public boolean isEntschaedigungAuszahlbarIncluded() {
      return true;
    }

    @Override
    public Collection<EntschaedigungStatus> getEntschaedigungStatus() {
      return asList(EntschaedigungStatus.VORGESEHEN);
    }
  },
  AUSZAHLBAR_ODER_BERECHENBAR {

    @Override
    public boolean isEntschaedigungBerechenbarIncluded() {
      return true;
    }

    @Override
    public boolean isEntschaedigungAuszahlbarIncluded() {
      return true;
    }

    @Override
    public Collection<EntschaedigungStatus> getEntschaedigungStatus() {
      return asList(EntschaedigungStatus.VORGESEHEN);
    }
  },
  AUSGEZAHLT {

    @Override
    public boolean isEntschaedigungAusgezahltIncluded() {
      return true;
    }

    @Override
    public Collection<EntschaedigungStatus> getEntschaedigungStatus() {
      return asList(EntschaedigungStatus.AUSGEZAHLT);
    }
  };

  private EntschaedigungKriteriumEinsatzStatus() {
  }

  public boolean isEntschaedigungBerechenbarIncluded() {
    return false;
  }

  public boolean isEntschaedigungAuszahlbarIncluded() {
    return false;
  }

  public boolean isEntschaedigungAusgezahltIncluded() {
    return false;
  }

  public abstract Collection<EntschaedigungStatus> getEntschaedigungStatus();
}
