
package de.ivu.elect.presentation;

import static org.apache.commons.lang3.StringUtils.defaultIfBlank;

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

import de.ivu.elect.business.wahl.boundary.WahlSessionSelect;
import de.ivu.elect.business.wahl.entity.Wahl;

@Specializes
public class CoreLayoutComponentsContext extends LayoutComponentsContext {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlSessionSelect wahlSessionSelect;

  public CoreLayoutComponentsContext() {
    super();
  }

  private boolean isWahlSelected() {
    return wahlSessionSelect.isSelected() && getSelectedWahl() != null;
  }

  protected Wahl getSelectedWahl() {
    return wahlSessionSelect.getEntity();
  }

  @Override
  public void checkEntitySelected() {
    if (!isWahlSelected()) {
      addInfoMessage("wahl.search.message.no.wahl.selected");
    }
  }

  @Override
  public String getHeading() {
    return formatHeading(getSelectedWahl());
  }

  @Override
  public String getFarbe() {
    if (!isWahlSelected()) {
      return null;
    }

    return getSelectedWahl().getFarbe();
  }

  @Override
  public boolean isSelected() {
    return isWahlSelected();
  }

  @Override
  public String getWahlWahlterminName() {
    if (!isWahlSelected()) {
      return getMessage("page.title.ohne.wahl");
    }

    return defaultIfBlank(getSelectedWahl().getKurzname(), getSelectedWahl().getName());
  }
}
