
package de.ivu.elect.presentation.stimmeingabe.menu;

import org.apache.commons.lang3.StringUtils;

import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.jee.faces.FacesContextUtil;
import de.ivu.elect.presentation.menu.AbstractMenuItemEntry;
import de.ivu.elect.presentation.security.AbstractGebietSecurity;
import de.ivu.elect.presentation.stimmeingabe.ErgebniseingangStatusView;
import de.ivu.elect.presentation.stimmeingabe.StimmeingabeAusbleibendView;

public class StimmeingabeErfassenMenuItemEntry extends AbstractMenuItemEntry {

  private static final long serialVersionUID = 1L;

  public StimmeingabeErfassenMenuItemEntry() {
    super();
  }

  @Override
  public boolean isRendered() {
    return hasUseCasePermission(UseCasePermission.STIMMEINGABE_ANZEIGEN);
  }

  @Override
  protected AbstractGebietSecurity getGebietSecurity() {
    return getEinsehenGebietSecurity();
  }

  @Override
  public boolean isDisabledInternal() {
    return !isGebietSelected();
  }

  @Override
  public String getTargetViewId() {
    return ErgebniseingangStatusView.VIEW_ID;
  }

  @Override
  public String getLabelKey() {
    return "stimmeingabe.erfassen.menu.item.label";
  }

  @Override
  public boolean isTopicActive() {
    return super.isTopicActive() || isErfassungsViews();
  }

  private boolean isErfassungsViews() {
    String currentViewId = FacesContextUtil.getCurrentViewId();
    return StimmeingabeAusbleibendView.VIEW_ID.equals(currentViewId) || StringUtils.isNotBlank(currentViewId) && currentViewId.endsWith("-stimmen-erfassen" +
        ".xhtml") /* alle möglichen erfassungs-views */;
  }

  @Override
  public String getIcon() {
    return getIcons().getIconEdit();
  }
}
