package de.ivu.elect.presentation.internet;

import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import org.apache.commons.lang3.StringUtils;
import org.apache.deltaspike.core.api.scope.ViewAccessScoped;

import de.ivu.elect.business.internet.boundary.InternetSeiteConversationSelect;
import de.ivu.elect.business.internet.boundary.InternetWidgetSearchParameters;
import de.ivu.elect.business.internet.entity.InternetSeite;
import de.ivu.elect.business.internet.entity.InternetWidget;
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.jee.presentation.redirect.Redirect;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.security.AbstractGebietSecurityFilter;

@ViewAccessScoped
@Named(AbstractInternetWidgetSearchView.COMPONENT_NAME)
@View(viewId = AbstractInternetWidgetSearchView.VIEW_ID, useCase = UseCasePermission.INTERNET_WIDGET_SEARCH)
@OnlineHilfeId("747")
public class InternetWidgetSearchView extends AbstractInternetWidgetSearchView {

  public static final String PARENT_VIEW_ID = InternetSeiteSearchView.VIEW_ID;

  private static final long serialVersionUID = 1L;

  @Inject
  private transient InternetSeiteConversationSelect internetSeiteConversationSelect;


  @Nullable
  @PreConditionCheck
  public String checkCondition() {
    if (internetSeiteConversationSelect.isSelected()) {
      return null;
    }

    return PARENT_VIEW_ID;
  }

  @Override
  protected AbstractGebietSecurityFilter<InternetWidget> getGebietSecurityFilter() {
    return KEIN_GEBIET_SECURITY_FILTER;
  }

  @Override
  public void addProperties(FormBuilder formBuilder) {
//    InternetSeite internetSeite = getSelectedInternetSeite();
//    if (internetSeite != null) {
//      formBuilder.addSeparator(InternetSeiteConstants.MESSAGE_KEY_ENTITY_EINZAHL);
//      formBuilder.addProperty(new ReadOnlyLongProperty(internetSeiteMeta.getPositionEinzahlMessage(), internetSeite.getPosition()));
//      formBuilder.addProperty(new ReadOnlyStringProperty(internetSeiteMeta.getTitelEinzahlMessage(), internetSeite.getTitel()));
//      formBuilder.addProperty(new ReadOnlyStringProperty(internetSeiteMeta.getBeschreibungEinzahlMessage(), internetSeite.getBeschreibung()));
//    }
  }

  @Override
  public InternetWidgetSearchParameters getSearchParameters() {
    InternetWidgetSearchParameters searchParameters = super.getSearchParameters();
    searchParameters.setInternetSeite(getSelectedInternetSeite());
    return searchParameters;
  }

  @Override
  public void presetSearchParameters() {

  }

  private InternetSeite getSelectedInternetSeite() {
    return internetSeiteConversationSelect.getEntity();
  }

  @Override
  public boolean isBtnGoBackRendered() {
    return true;
  }

  @Nullable
  @Override
  @Redirect
  public String goBack() {
    return PARENT_VIEW_ID;
  }

  public String getTitelInternetSeite() {
    return buildTitel(getSelectedInternetSeite());
  }

  public static String buildTitel(InternetSeite selectedInternetSeite) {
    if (selectedInternetSeite == null) {
      return "";
    }
    String result = selectedInternetSeite.getTitel();
    if (StringUtils.isNotBlank(selectedInternetSeite.getBeschreibung())) {
      result += " (" + selectedInternetSeite.getBeschreibung() + ")";
    }
    return result;
  }
}
