package de.ivu.elect.presentation.ergebniskonflikt;

import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonflikt;
import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonfliktLosoption;
import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonfliktProperties;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.dynamicform.ReadOnlyStringProperty;

import javax.annotation.Nullable;
import javax.enterprise.inject.Specializes;
import java.util.Objects;

@Specializes
public class NlErgebnisKonfliktLosoptionenAuswaehlenView extends ErgebnisKonfliktLosoptionenAuswaehlenView {

  private static final long serialVersionUID = 1L;

  @Nullable
  @Override
  protected Gebiet getGebiet() {
    //um die Aktivierung des Headers mit Gebiet in ergebnis-page-layout.xhtml zu vermeiden,
    // wenn es mehrere Gebiete, wie bei TK, gibt
    if (getLosoptionenVerfuegbar(getEntity()).stream()
            .map(ErgebnisKonfliktLosoption::getGebiet)
            .filter(Objects::nonNull)
            .distinct()
            .count() > 1) {
      return null;
    }
    return super.getGebiet();
  }

  @Override
  public void addProperties(FormBuilder formBuilder, ErgebnisKonflikt ergebnisKonflikt) {
    ErgebnisKonfliktProperties ergebnisKonfliktProperties = ergebnisKonflikt.getProperties();

    formBuilder.addProperty(ergebnisKonfliktProperties.getErgebnisKonfliktStatusProperty());
    formBuilder.addProperty(ergebnisKonfliktProperties.getKonfliktBeschreibungProperty());
    formBuilder.addProperty(new ReadOnlyStringProperty("", "")); //ELECTVAPP-260

    // Alle bisherigen Properties sind immer readonly!
    formBuilder.globalReadonly();

    addErgebnisKonfliktLoesungProperties(formBuilder, ergebnisKonflikt);
  }
}
