
package de.ivu.elect.presentation.gebietsbaum.table;

import static org.apache.commons.lang3.StringUtils.defaultIfBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.trim;


import de.ivu.elect.business.gebietsbaum.boundary.GebietExtendedDAO;
import de.ivu.elect.business.gebietsbaum.entity.AbstractGebiet;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.NlGebietCustomData;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public class NlWasGebietPublicKeyVorhandenColumn extends AbstractGebietColumn<Gebiet> {

  private static final long serialVersionUID = 1L;

  public NlWasGebietPublicKeyVorhandenColumn(Messages messages, GebietExtendedDAO gebietExtendedDAO) {
    super("Nl-Was-Gebiet-Public-Key-Vorhanden-Column", messages, "gebiet.public.key.vorhanden.column", ColumnType.BOOLEAN,
        gebiet -> {

          if (gebiet.isErfassungsgebiet()) {
            return gebiet.getCustomData(NlGebietCustomData.class).isPublicKeyValid();

          }
          if (gebiet.getWahl() == null) {
            return false;
          }

          // ELECTVAPP-1174
          return gebietExtendedDAO.findByWahl(gebiet.getWahl()).stream().filter(AbstractGebiet::isErfassungsgebiet)
              .allMatch(g -> g.getCustomData(NlGebietCustomData.class).isPublicKeyValid());
        }
    );

  }
}
