<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

namespace Kufer\Web\KuferTools\Basis\Raumbelegung\RaumUebersichtFilter;

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

abstract class RaumUebersichtFilterUseCase extends \Kufer\Web\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new RaumUebersichtFilterResponse());
  }

  
  abstract protected function getGebaeude($user): array;

  
  protected function getRestriction4Anzeige(): bool
  {
    return $this->toolSettings->nurzugeordneteorte ?? false;
  }

  protected function getSelectedGebaeuden(&$pGebaeuden)
  {
    $filterSearch = new KursorteUebersichtSearchFilter();
    $suchdm = $filterSearch->getSearchMapFromSession($this->getToolId());
    $searched_gebaeuden = is_array($suchdm['gebaeude']) ? $suchdm['gebaeude'] : array();
    foreach ($pGebaeuden as $gebaeude) {
      if ($gebaeude->schule === '') {
        $gebaeude->selected = (in_array('-', $searched_gebaeuden)) ? 'selected="selected"' : '';
      } else {
        $gebaeude->selected = (in_array($gebaeude->schule, $searched_gebaeuden)) ? 'selected="selected"' : '';
      }
    }
  }

  public function action()
  {
    return $this->getResponse();
  }

  protected function getResponse()
  {
    $user = $this->getUser();
    $this->response->gebaeuden = $this->getGebaeude($user);
    $this->getSelectedGebaeuden($this->response->gebaeuden);
    $this->response->multiSelect = (isset($this->toolSettings->filterMehrereGebaeude) && !empty($this->toolSettings->filterMehrereGebaeude)) ? $this->toolSettings->filterMehrereGebaeude : 0;

    return $this->response;
  }
}

class RaumUebersichtFilterRequest
{
}

class RaumUebersichtFilterResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $gebaeuden;
  public $multiSelect;
}