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

import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.faces.FacesMessageUtil;
import de.ivu.elect.jee.faces.Messages;

public enum GewaehltStatusVergabe {

  UNBESTIMMT {

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

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

  PERSONENWAHL {

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

    @Override
    public boolean isGewaehltNachListenwahl() {
      return false;
    }
  },
  LISTENWAHL {

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

    @Override
    public boolean isGewaehltNachListenwahl() {
      return true;
    }
  },

  ;

  GewaehltStatusVergabe() {
  }

  public boolean isBestimmt() {
    return !UNBESTIMMT.equals(this);
  }

  public abstract boolean isGewaehltNachPersonenwahl();

  public abstract boolean isGewaehltNachListenwahl();

  public static String lokalisiere(Messages messages, Wahl wahl, GewaehltStatusVergabe gewaehltStatusVergabe) {
    if (gewaehltStatusVergabe.isBestimmt()) {
      if (wahl != null) {
        String msgKeyWahlart = FacesMessageUtil.getEnumMessageKey(gewaehltStatusVergabe) + "." + wahl.getWahlart().getWahlartNameNormalized();

        if (messages.isMessageKeyVorhanden(msgKeyWahlart)) {
          return messages.getMessageForMessageKey(msgKeyWahlart);
        }
      }

      return messages.lokalisiere(gewaehltStatusVergabe);
    }

    return "";
  }
}
