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

public enum MandantArt {

  SYSTEM {

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

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

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

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

    @Override
    public boolean isOhneMandant() {
      return false;
    }
  },
  CUSTOMER {

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

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

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

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

    @Override
    public boolean isOhneMandant() {
      return false;
    }
  },
  SCHULUNG {
    @Override
    public boolean isAnlegenMoeglich() {
      return true;
    }

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

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

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

    @Override
    public boolean isOhneMandant() {
      return false;
    }
  },
  OHNE_MANDANT {

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

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

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

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

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

  public abstract boolean isAnlegenMoeglich();

  public abstract boolean isSystemMandant();

  public abstract boolean isCustomerMandant();

  public abstract boolean isSchulungMandant();

  public abstract boolean isOhneMandant();

  public boolean isSystemMandantImMandantensystem() {
    return isSystemMandant() && !isOhneMandant();
  }

  public boolean isResetMoeglich() {
    return isSchulungMandant();
  }
}
