package de.ivu.elect.business.sitzberechnung.entity;

import de.ivu.elect.business.gruppe.entity.GruppePK;
import de.ivu.elect.business.person.entity.PersonendatenPK;
import de.ivu.elect.business.wahlvorschlag.entity.WahlvorschlagPK;

import java.io.Serializable;

public class OsvLegacyKonfliktLoesung implements Serializable {

  private static final long serialVersionUID = 1L;


  private GruppePK gruppe;
  private WahlvorschlagPK liste;
  private PersonendatenPK listenkandidatur;
  private OsvLegacyStel stel;

  public OsvLegacyKonfliktLoesung(GruppePK gruppe) {
    this.gruppe = gruppe;
  }


  protected OsvLegacyKonfliktLoesung() {
  }

  public OsvLegacyKonfliktLoesung(PersonendatenPK listenkandidatur) {
    this.listenkandidatur = listenkandidatur;
  }

  public OsvLegacyKonfliktLoesung(WahlvorschlagPK liste) {
    this.liste = liste;
  }

  public OsvLegacyKonfliktLoesung(OsvLegacyStel osvLegacyStel) {
    this.stel = osvLegacyStel;
  }

  public boolean isGeloest() {
    return isGruppeEntscheidung() || isListenKandidaturEntscheidung() || isP2ListeEntscheidung();
  }

  public boolean isP2ListeEntscheidung() {
    return isListeEntscheidung() || isStelEntscheidung();
  }

  public boolean isStelEntscheidung() {
    return stel != null;
  }

  public boolean isListenKandidaturEntscheidung() {
    return listenkandidatur != null;
  }

  public boolean isListeEntscheidung() {
    return liste != null;
  }

  public boolean isGruppeEntscheidung() {
    return gruppe != null;
  }

  public GruppePK getGruppe() {
    return gruppe;
  }

  public void setGruppe(GruppePK gruppe) {
    this.gruppe = gruppe;
  }

  public WahlvorschlagPK getListe() {
    return liste;
  }

  public void setListe(WahlvorschlagPK liste) {
    this.stel = null;
    this.liste = liste;
  }

  public PersonendatenPK getListenkandidatur() {
    return listenkandidatur;
  }

  public void setListenkandidatur(PersonendatenPK listenkandidatur) {
    this.listenkandidatur = listenkandidatur;
  }

  public OsvLegacyStel getStel() {
    return stel;
  }

  public void setStel(OsvLegacyStel stel) {
    this.liste = null;
    this.stel = stel;
  }

  @Override
  public String toString() {
    return "OsvLegacyKonfliktLoesung{" +
            "gruppe=" + gruppe +
            ", liste=" + liste +
            ", listenkandidatur=" + listenkandidatur +
            ", stel=" + stel +
            '}';
  }

  public P2Liste getP2Liste() {
    return isStelEntscheidung() ? new P2Liste(stel) : isListeEntscheidung() ? new P2Liste(liste) : null;
  }
}
