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

namespace Kufer\Web\KuferTools\Basis\Anmeldung\KursAuswahl;

use Kufer\Web\KuferTools\Utils\KursFilter\HandleShowKursFilter;

abstract class KursAuswahlPresenter extends \Kufer\Web\KuferTools\Basis\Presenter\Presenter
{
  protected function getNewViewModel(): KursAuswahlViewModel
  {
    return new KursAuswahlViewModel();
  }

  protected function getViewModel()
  {
    $result = $this->getNewViewModel();
    $result->toolSection = $this->useCaseResponse->toolSection;
    $result->toolSettings = $this->useCaseResponse->toolSettings;
    $result->knr = $this->useCaseResponse->knr;
    $result->columns = $this->useCaseResponse->columns;
    $result->showAdvancedFilter = $this->useCaseResponse->showAdvancedFilter;

    
    $isUnterkategorie = function($kategorie) {return $kategorie->owner > 0;};
    $isUnterFachbereich = function($fachbereich) {return \StringOperations::strlen($fachbereich->kennz) > 1;};

    $result->kategorieOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->kategorien, 'id', 'text', null, $isUnterkategorie);
    $result->sonderKategorieOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->sonderKategorien, 'id', 'text', null, $isUnterkategorie);
    $result->aussenstellenOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->aussenstellen, 'id', 'bezeichner', null);
    $result->kursOrteOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->kursOrte, 'id', 'mktext', null);
    $result->fachbereicheOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->fachBereiche, 'kennz', 'text', null, $isUnterFachbereich);
    $result->semesterOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->semester, 'sem', 'sem', null);
    $result->zielgruppenOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->zielgruppen, 'text', 'text', null);
    $result->bezirkOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->bezirke, 'bezirk', 'bezirk', null);
    $result->gemeindeOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->gemeinden, 'gemeinde', 'gemeinde', null);
    $result->veranstalterBezirkOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->bezirke, 'bezirk', 'bezirk', null);
    $result->veranstalterGemeindeOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->gemeinden, 'gemeinde', 'gemeinde', null);
    $result->mitarbeiterKennungOptionen = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->benutzer, 'kennung', 'kennung', null);

    $filterVon = $this->useCaseResponse->kursFilterVon;

    return $this->setFreiWaehlbareEingabefelder($filterVon, $result);
  }

  private function setFreiWaehlbareEingabefelder($filterVon, $viewModel)
  {
    for ($i = 1; $i <= 16; $i++) {
      $feldname = 'kursauswahl' . $i;
      $optionenName = $feldname . 'Optionen';
      $hinterlegungName = $feldname . 'hinterlegung';

      $viewModel->{$feldname} = $filterVon->{$feldname};
      $viewModel->{$optionenName} = HandleShowKursFilter::getSelectOptions($this->useCaseResponse->{$hinterlegungName}, 'text', 'text', $viewModel->{$feldname});
    }

    return $viewModel;
  }

  public function setRequestHeader()
  {
    parent::setRequestHeader();
    
  }
}