package de.ivu.elect.presentation.internet;

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

import de.ivu.elect.business.internet.entity.InternetSeite;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import de.ivu.elect.presentation.internet.form.InternetSeiteViewFormBuilder;

@RequestScoped
@Named(AbstractInternetSeiteEditNoScopeView.COMPONENT_NAME)
@View(viewId = AbstractInternetSeiteEditNoScopeView.VIEW_ID, useCase = UseCasePermission.INTERNET_SEITE_EDIT)
@OnlineHilfeId("746")
public class InternetSeiteEditView extends AbstractInternetSeiteEditView {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient InternetSeiteViewFormBuilder viewFormBuilder;

  public InternetSeiteEditView() {
    super();
  }

  @Nullable
  @PreConditionCheck
  public String checkCondition() {
    if (isEntitySet()) {
      return null;
    }

    return cancel();
  }

  @Override
  protected boolean isGebietBearbeitenRechtPruefen() {
    return false;
  }

  @Override
  public void addProperties(FormBuilder formBuilder, InternetSeite internetSeite) {
    viewFormBuilder.addProperties(formBuilder, internetSeite);
  }

  @Nullable
  @Override
  public String goBack() {
    if (viewStack.contains(InternetSeiteCreateView.VIEW_ID)) {
      return InternetSeiteSearchView.VIEW_ID; // sonst geht's zuück zum Anlegen View...
    }
    return super.goBack();
  }

  @Override
  protected void resetStateAfterAction() {
    // nicht zurücksetzen, sonst landet man von der InternetWidget-Suchseite nach dem Bearbeiten auf der InternetSeite-Suchseite
    // super.resetStateAfterAction();
  }
}
