
package de.ivu.elect.dokumente;

import java.util.List;
import java.util.stream.Collectors;

import de.ivu.document.generator.template.annotations.DocumentSimpleField;
import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.staat.entity.Staat;

public class PersonOhneAnschriftOhneKonto extends PersonBasisDokument {

  private static final long serialVersionUID = 1L;

  public static final PersonOhneAnschriftOhneKonto EMPTY_OBJECT = new PersonOhneAnschriftOhneKonto();

  /**
   * @deprecated
   * @see PersonBasisDokument#akademischeGradeKommasepariert
   */
  @Deprecated
  @DocumentSimpleField("AkademischerGrad")
  public final String akademischerGrad;

  @DocumentSimpleField("Ordensname")
  public final String ordensname;

  @DocumentSimpleField("Künstlername")
  public final String kuenstlername;

  @DocumentSimpleField("E-Mail")
  public final String emailAdresse;

  @DocumentSimpleField("E-Mail-Arbeit")
  public final String emailAdresseArbeit;

  @DocumentSimpleField("Telefonnumer-Festnetz")
  public final String telefonnummerFestnetz;

  @DocumentSimpleField("Telefonnumer-Mobil")
  public final String telefonnummerMobil;

  @DocumentSimpleField("Telefonnumer-Arbeit")
  public final String telefonnummerArbeit;

  @DocumentSimpleField("Faxnummer")
  public final String faxnummer;

  /**
   * @deprecated
   * @see PersonOhneAnschriftOhneKonto#staatsangehoerigkeit
   */
  @Deprecated
  @DocumentSimpleField("Staatsangehörigkeit bevorzugt")
  public final String staatsangehoerigkeitBevorzugt;

  @DocumentSimpleField("Staatsangehörigkeit")
  public final String staatsangehoerigkeit;

  /**
   * @deprecated
   * @see PersonOhneAnschriftOhneKonto#staatsangehoerigkeitenKommasepariert
   */
  @Deprecated
  @DocumentSimpleField("Staatsangehörigkeiten")
  public final String staatsangehoerigkeitenKommagetrennt;

  @DocumentSimpleField("Staatsangehörigkeiten")
  public final String staatsangehoerigkeitenKommasepariert;

  // ELECTDD-239 - Bemerkungsfeld an Gebiet anfügen - war: Es wird analog Ansprechpartner ein 2. Ansprechpartner benötigt
  @DocumentSimpleField("Bemerkung")
  public final String bemerkung;

  protected PersonOhneAnschriftOhneKonto() {
    super();

    this.akademischerGrad = "";

    this.ordensname = "";
    this.kuenstlername = "";

    this.staatsangehoerigkeit = "";
    this.staatsangehoerigkeitBevorzugt = this.staatsangehoerigkeit;
    this.staatsangehoerigkeitenKommasepariert = "";
    this.staatsangehoerigkeitenKommagetrennt = this.staatsangehoerigkeitenKommasepariert;

    this.emailAdresse = "";
    this.emailAdresseArbeit = "";

    this.telefonnummerFestnetz = "";
    this.telefonnummerMobil = "";
    this.telefonnummerArbeit = "";

    this.faxnummer = "";

    this.bemerkung = "";
  }

  public PersonOhneAnschriftOhneKonto(BaseElectContext baseElectContext, Personendaten personendaten) {
    super(baseElectContext, personendaten);

    this.akademischerGrad = this.akademischeGradeKommasepariert;

    this.ordensname = personendaten.getOrdensname();
    this.kuenstlername = personendaten.getKuenstlername();

    List<Staat> staatsangehoerigkeitenSorted = personendaten.getStaatsangehoerigkeitenSorted();

    this.staatsangehoerigkeit = staatsangehoerigkeitenSorted.isEmpty() ? "" : staatsangehoerigkeitenSorted.get(0).getNameStaatsangehoerigkeit();
    this.staatsangehoerigkeitBevorzugt = this.staatsangehoerigkeit;
    this.staatsangehoerigkeitenKommasepariert = staatsangehoerigkeitenSorted.stream().map(Staat::getNameStaatsangehoerigkeit).collect(Collectors.joining(", "));
    this.staatsangehoerigkeitenKommagetrennt = this.staatsangehoerigkeitenKommasepariert;

    this.emailAdresse = personendaten.getEmailAdresse();
    this.emailAdresseArbeit = personendaten.getEmailAdresseArbeit();

    this.telefonnummerFestnetz = personendaten.getTelefonnummerFestnetz();
    this.telefonnummerMobil = personendaten.getTelefonnummerMobil();
    this.telefonnummerArbeit = personendaten.getTelefonnummerArbeit();

    this.faxnummer = personendaten.getFaxnummer();

    this.bemerkung = personendaten.getBemerkung();
  }
}
