
package de.ivu.elect.business.gruppeimgebiet.boundary;

import java.util.Collection;

import javax.inject.Inject;
import javax.inject.Named;

import org.apache.deltaspike.core.api.scope.ConversationGroup;
import org.apache.deltaspike.core.api.scope.GroupedConversationScoped;

import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionSelect;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;


import static java.util.Arrays.asList;

@Named(GruppeImGebietSearchParameters.COMPONENT_NAME)
@GroupedConversationScoped
@ConversationGroup(AbstractGruppeImGebietSearchParameters.class)
public class GruppeImGebietSearchParameters extends AbstractGruppeImGebietSearchParameters {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "gruppeImGebietSearchParameters";

  @Inject
  private transient GebietSessionSelect gebietSelect;

  private boolean einzelbewerberAnzeigen;

  private StatusOption statusOption;

  public GruppeImGebietSearchParameters() {
    super();
  }

  public Gebiet getGebiet() {
    return gebietSelect.getEntity();
  }

  public boolean isEinzelbewerberAnzeigen() {
    return einzelbewerberAnzeigen;
  }

  public void setEinzelbewerberAnzeigen(boolean einzelbewerberAnzeigen) {
    this.einzelbewerberAnzeigen = einzelbewerberAnzeigen;
  }

  public StatusOption getStatusOption() {
    return statusOption;
  }

  public void setStatusOption(StatusOption statusOption) {
    this.statusOption = statusOption;
  }

  public Collection<StatusOption> getStatusOptions() {
    return asList(StatusOption.values());
  }

  public enum StatusOption {
    ALLE,
    RELEVANTE,
    IRRELEVANTE;

    public String getLabelKey() {
      return GruppeImGebietSearchParameters.class.getSimpleName() + "." + getClass().getSimpleName() + "." + name();
    }
  }
}
