package de.ivu.elect.presentation.lokalisierung;

import java.io.Serializable;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.lokalisierung.control.LokalisierungStore;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.security.UseCaseSecure;
import de.ivu.elect.business.security.control.ElectCommonPrincipal;
import de.ivu.elect.jee.faces.FacesContextUtil;
import de.ivu.elect.jee.presentation.redirect.Redirect;

@Named(LokalisierungDebug.COMPONENT_NAME)
@RequestScoped
public class LokalisierungDebug  implements Serializable {

  public static final String COMPONENT_NAME = "lokalisierungDebug";

  @Inject
  private transient ElectCommonPrincipal principal;

  public boolean isDebugPossible() {
    return principal.hasUseCasePermission(UseCasePermission.LOKALISIERUNG_DEBUG);
  }

  @Redirect
  @UseCaseSecure(UseCasePermission.LOKALISIERUNG_DEBUG)
  public String toggleDebug() {
    LokalisierungStore.setDebugMode(!LokalisierungStore.isDebugMode());
    return FacesContextUtil.getCurrentViewId();
  }

  public boolean isDebugMode() {
    return LokalisierungStore.isDebugMode();
  }

  public String getDebugModeToggleKey() {
    return "lokalisierung.debug.mode.enable." + (!isDebugMode());
  }

  public boolean isSeiteLokalisierenPossible(){
    return LokalisierungStore.isSchluesselPerRequestSammelnAktiv() && principal.hasUseCasePermission(UseCasePermission.LOKALISIERUNG_SEARCH);
  }

}
