<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

namespace Kufer\KuferTools\Basis\PdfListen\Hausmeisterlisten\Dialog;

use Kufer\Web\KuferTools\Utils\FilterSearch\KursorteUebersichtSearchFilter;

abstract class ShowHmListenUseCase extends \Kufer\KuferTools\Basis\PdfListen\ShowPdfListen\ShowPdfListenUseCase
{
  protected function _getPdfDrucklistenObj()
  {
    return new \HausmeisterDruckListen('', static::getToolId(), static::getToolSectionId());
  }

  protected function getIds()
  {
    static $alleKursorte = null;
    if (is_null($alleKursorte)) {
      $alleKursorte = $this->getAlleIdsKursorte();
    }

    return $alleKursorte;
  }

  private function getAlleIdsKursorte()
  {
    $dbwKursorte = new \DBWorkKursorte();
    $user = $this->getUser();

    $dbwKursorte->newSearch();
    $dbwKursorte->setBuildSeitenindex(true);
    $dbwKursorte->orderby = $this->toolSettings->sortraeume;
    $dbwKursorte->orderbyasc = $this->toolSettings->sortraeumeasc;

    $searchApi = new KursorteUebersichtSearchFilter();
    $suchdm = $searchApi->getSearchMapFromSession($this->getToolId());
    $dbwKursorte->fromobject->schule_exact_ary = array_map(static function($str) {
      return $str === '-' ? '' : $str;
    }, array_filter((array)($suchdm['gebaeude'] ?? array())));

    $dbwKursorte = $this->extendKursortFilter($dbwKursorte);

    $nurzugeordneteorte = $this->toolSettings->nurzugeordneteorte ?? false;
    $raumVerfuegbarkeit = $this->toolSettings->raumNichtVerfuegbar ?? false;

    return $dbwKursorte->getAllKursortIds($user->id, $user->admin, $nurzugeordneteorte, $raumVerfuegbarkeit);
  }

  protected function extendKursortFilter($dbwKursorte)
  {
    return $dbwKursorte;
  }
}