package de.ivu.elect.presentation;

import java.io.Serializable;

import javax.inject.Inject;

import org.apache.commons.lang3.StringUtils;

import de.ivu.elect.business.CurrentCustomer;
import de.ivu.elect.business.wahl.entity.NlWahlCustomData;
import de.ivu.elect.business.wahl.entity.NlWahlPhase;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlOderWahltermin;
import de.ivu.elect.jee.faces.Messages;

public class NlAppHeadingWahlPhase implements Serializable {
  private static final long serialVersionUID = 1L;

  @Inject
  protected transient Messages messages;

  @Inject
  private transient CurrentCustomer currentCustomer;

  public String decorate(WahlOderWahltermin wahlOrWahltermin, String result) {

    var wahl = wahlOrWahltermin.getWahlIfWahl();

    if (wahl == null) {
      return result;
    }

    var enumValue = bestimmeWahlPhase(wahl);

    var number = enumValue.getNumber(currentCustomer.getCustomer(), wahl);

    if (StringUtils.isBlank(number)) {
      return result + " [" + messages.lokalisiere(enumValue) + "]";
    }
    return result + " [" + messages.lokalisiere(enumValue) + " " + number + "]";
  }

  private NlWahlPhase bestimmeWahlPhase(Wahl wahl) {
    try {
      return wahl.getCustomData(NlWahlCustomData.class).getNlWahlPhase();
    } catch (Exception e) {
      // Für Systeme/Mandanten ohne NlWahlCustomData
      return NlWahlPhase.NICHT_GESETZT;
    }
  }

}
