
package de.ivu.elect.presentation.veranstaltung.table;

import de.ivu.elect.business.veranstaltung.entity.Teilnahme;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;
import de.ivu.elect.business.wahlausschuss.entity.WahlausschussmitgliedConstants;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;


import static de.ivu.elect.jee.entity.EntityUtil.castTo;
import static java.util.Objects.nonNull;

public class TeilnahmeWahlausschussmitgliedRolleColumn extends AbstractTeilnahmeColumn<Teilnahme> {

  private static final long serialVersionUID = 1L;

  protected TeilnahmeWahlausschussmitgliedRolleColumn(Messages messages) {
    super(messages,null,null,null);
  }

  @Override
  public Object getValue(Teilnahme teilnahme) {
    if (hasWahlausschussmitglied(teilnahme)) {
      return getValue(castTo(teilnahme.getPersonendaten(), Wahlausschussmitglied.class));
    }

    return "";
  }

  private Object getValue(Wahlausschussmitglied wahlausschussmitglied) {
    return getMessage(wahlausschussmitglied.getWahlausschussrolle());
  }

  @Override
  public String getHeader() {
    return getMessage(WahlausschussmitgliedConstants.MESSAGE_KEY_WAHLAUSSCHUSSROLLE_EINZAHL);
  }

  @Override
  public ColumnType getType() {
    return ColumnType.STRING;
  }

  private boolean hasWahlausschussmitglied(Teilnahme teilnahme) {
    return nonNull(teilnahme) && teilnahme.getPersonendaten().isInstanceOf(Wahlausschussmitglied.class);
  }
}
