
package de.ivu.elect.presentation.person;

import static de.ivu.elect.jee.entity.EntityUtil.castTo;

import javax.annotation.Nullable;
import javax.enterprise.inject.Specializes;

import de.ivu.elect.business.gruppe.entity.GruppeArt;
import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.kandidatur.entity.Listenkandidatur;
import de.ivu.elect.business.person.entity.Personendaten;

@Specializes
public class CorePersonendatenArtFormatter extends PersonendatenArtFormatter {

  private static final long serialVersionUID = 1L;

  public CorePersonendatenArtFormatter() {
    super();
  }

  @Override
  public String getPersonendatenArtName(@Nullable Personendaten personendaten) {
    String result = super.getPersonendatenArtName(personendaten);

    if (personendaten != null && personendaten.isInstanceOf(Kandidatur.class)) {
      Kandidatur kandidatur = castTo(personendaten, Kandidatur.class);
      String kandidaturMsgKeyPrefix = MSG_KEY_PREFIX + kandidatur.getDiscriminator();

      if (kandidatur.isEinzelbewerber()) {
        return getMessage(kandidaturMsgKeyPrefix + "." + GruppeArt.EINZELBEWERBER.name());
      }

      if (personendaten.isInstanceOf(Listenkandidatur.class)) {
        Listenkandidatur listenkandidatur = castTo(personendaten, Listenkandidatur.class);

        return getMessage(kandidaturMsgKeyPrefix + "." + listenkandidatur.getListenkandidaturArt().name());
      }
    }

    return result;
  }
}
