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

namespace Kufer\KuferTools\Basis\KursUebersicht\ShowFilterKursUebersicht;

use Kufer\KuferTools\Utils\KursFilter\HandleShowKursFilter;

abstract class ShowFilterKursUebersichtUseCase extends \Kufer\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request, $response = null)
  {
    parent::__construct($request, $response ?? new ShowFilterKursUebersichtResponse());
  }

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

  protected function getResponse()
  {
    $this->setHinterlegungenToResponse();

    $kursFilterObj = $this->getKursFilterObj();

    
    
    $kursFilter = HandleShowKursFilter::getKursFilterVonBis($this->toolSettings, $kursFilterObj->getToolStrFuerFilter());

    
    $this->response->kursFilterVon = $kursFilter['von'];
    $this->response->kursFilterBis = $kursFilter['bis'];
    $this->response->keineAusgefallenenKurse = $this->toolSettings->keineAusgefallenenKurse;
    
    $this->response->keineAbgeschlossenenKurse = $this->toolSettings->keineAbgeschlossenenKurse;
    $this->response->teilnehmerSuche = isset($this->toolSettings->teilnehmerSuche) && $this->toolSettings->teilnehmerSuche;

    
    $this->response->isBLAK = \DBWorkBASysSettings::isBlak();

    return $this->response;
  }

  protected function setHinterlegungenToResponse()
  {
    $this->response = HandleShowKursFilter::setHinterlegungenToResponse(
      $this->response,
      $this->getKursNummern(),
      \explode(',', $this->toolSettings->semlist),
      isset($this->toolSettings->showAllHinterlegungenFilter) && $this->toolSettings->showAllHinterlegungenFilter
    );
  }

  protected function getKursNummern()
  {
    $kursHelper = \Kufer\KuferTools\Utils\DatamodulHelper\KursHelper\KursHelperFactory::getKursHelperByToolID($this->getToolId(), $this->toolSettings);

    return $kursHelper->getIdsOhneFilter();
  }

  protected function getKursFilterObj()
  {
    return new \Kufer\KuferTools\Utils\KursFilter\KursFilter($this->getToolId(), $this->toolSettings);
  }
}

class ShowFilterKursUebersichtRequest
{
}

class ShowFilterKursUebersichtResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $kategorien;
  public $sonderKategorien;
  public $aussenstellen;
  public $kursOrte;
  public $fachBereiche;
  public $semester;
  public $kursausfall;
  public $keineAusgefallenenKurse;
  public $zielgruppen;
  public $bezirke;
  public $gemeinden;

  public $kursFilterVon;
  public $kursFilterBis;

  public $isBLAK;
  public $onlyElearningKurse;
  public $blakKriterienAry;
}