
package de.ivu.elect.presentation.entschaedigung;

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

import de.ivu.elect.business.entschaedigung.entity.Auszahlung;
import de.ivu.elect.jee.entity.EagerLoadingCollector;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.presentation.entschaedigung.table.AuszahlungColumnBuilder;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import de.ivu.elect.presentation.security.AbstractGebietSecurityFilter;

@OnlineHilfeId("535")
@Named(AbstractAuszahlungSearchView.COMPONENT_NAME)
public class AuszahlungSearchView extends AbstractAuszahlungSearchView implements ViewHavingMarkAsEntschaedigungStatusAction {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient AuszahlungColumnBuilder auszahlungColumnBuilder;

  public AuszahlungSearchView() {
    super();
  }

  @Nullable
  @PreConditionCheck
  public String checkPreCondition() {
    if (isWahlSelected() || isWahlterminSelected()) {
      return null;
    }

    return getStartViewId();
  }

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

  @Override
  public void presetSearchParameters() {
    // nichts zu tun
  }

  @Override
  public void addProperties(FormBuilder formBuilder) {
    // nichts zu tun
  }

  @Override
  public EagerLoadingCollector<Auszahlung> getEagerLoadingCollector() {
    EagerLoadingCollector<Auszahlung> eagerLoadingCollector = EagerLoadingCollector.<Auszahlung> create();
    auszahlungColumnBuilder.collectEagerLoadings(eagerLoadingCollector);

    return eagerLoadingCollector;
  }
}
