package de.ivu.elect.presentation.gebietsbaum.tree;

import java.util.function.Supplier;

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.business.stimmeingabe.boundary.ErgebniseingangExtendedDAO;
import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestufe;
import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingang;
import de.ivu.elect.business.wahl.entity.Wahldurchfuehrung;
import de.ivu.elect.jee.faces.Messages;

@Specializes
public class NlWasGebietsbaumDynamicIconResolver extends WasGebietsbaumDynamicIconResolver {
  private static final long serialVersionUID = 1L;

  @Inject
  private transient ErgebniseingangExtendedDAO ergebniseingangExtendedDAO;

  @Inject
  private transient Messages messages;

  @Override
  public String getDynamischenNameNummerFormatiert(String nameNummerFormatiert, Supplier<Gebiet> gebietSupplier) {

    String result = super.getDynamischenNameNummerFormatiert(nameNummerFormatiert, gebietSupplier);
    Wahldurchfuehrungsgebiet gebiet = gebietSupplier.get().castTo(Wahldurchfuehrungsgebiet.class).getEntity();
    if (gebiet.isErfassungsgebiet()) {

      Ergebniseingang letzterErgebniseingangAktuell = gebiet
          .getLetzterErgebniseingangAktuell(ergebniseingangExtendedDAO, gebiet.getWahl().castTo(Wahldurchfuehrung.class).getEntity().getErgebniseingangsart());

      Ergebniseingabestufe ergebniseingabestufe = Ergebniseingabestufe.VORSTUFE_01; // kein Eingang => erste Stufe

      if (letzterErgebniseingangAktuell != null) {
        ergebniseingabestufe = letzterErgebniseingangAktuell.getErgebniseingabestufe();
      }

      return messages.getMessageForMessageKey("nl.was.gebietsbaum." + ergebniseingabestufe.name(), result);
    }
    return result;
  }

  @Override
  protected String getGebietDynamischesIcon(String icon, WasGebietsbaumErfassungStatus wasGebietsbaumErfassungStatus) {
    // return super.getGebietDynamischesIcon(icon, wasGebietsbaumErfassungStatus);
    return icon; // ELECTVAPP-390
  }
}
