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

namespace Kufer\Web\KuferTools\Utils\DatamodulHelper\Kurse;

class RaumReiterKurse extends KursHelper
{
  private $raumNr;

  public function __construct($toolSettings, $user, $raumNr)
  {
    parent::__construct($toolSettings, $user);
    $this->raumNr = $raumNr;
  }

  
  protected function getKursnummern($dbwKurse)
  {
    $kurse = $dbwKurse->getKurseByRaumNR($this->raumNr);

    return \ArrayOperations::mapAttribut($kurse, 'id');
  }

  protected function setzeFilter($dbwKurse, $pToolId, $pRequestSuchParam, $pRequestEinstieg, $pSetDbwOrderBySettings)
  {
    list($vonDatum, $bisDatum) = self::getVonBisDatum($pToolId);
    $dbwKurse->fromobject->beginn_dat = $bisDatum;
    $dbwKurse->toobject->ende_dat = $vonDatum;

    return $dbwKurse;
  }

  protected function setzeEinstellungen($dbwKurse)
  {
    $dbwKurse = parent::setzeEinstellungen($dbwKurse);
    $dbwKurse->beratungstageKurseAusblenden = false;

    return $dbwKurse;
  }

  public static function getVonBisDatumDefault(int $pToolId): array
  {
    $toolSettings = \ToolSettingsAPI::getToolSettings($pToolId);
    if ($toolSettings->kursFilterVorbelegenAktuellesSemester ?? false) {
      $dbwHlSemester = new \DBWorkHLSemester(1, true);
      $semester = $dbwHlSemester->getSemesterByDate(\DateTimeOperations::getDateNow());

      $aktuellesSemester = \ToolSettingsAPI::getToolSettings(0)->aktuelles_semester;
      if (!$semester && $aktuellesSemester !== '') {
        $semesterAry = $dbwHlSemester->getSemesterBySemAry(array($aktuellesSemester));
        if (count($semesterAry) > 0) {
          $semester = $semesterAry[0];
        }
      }

      if ($semester) {
        $vonDatumDefault = $semester->von;
        $bisDatumDefault = $semester->bis;
      } else {
        $vonDatumDefault = \DateTimeOperations::getFirstDayOfCurrentWeek();
        $bisDatumDefault = \DateTimeOperations::getNextDate($vonDatumDefault, 6);
      }
    } else {
      $vonDatumDefault = \DateTimeOperations::getFirstDayOfCurrentWeek();
      $bisDatumDefault = \DateTimeOperations::getNextDate($vonDatumDefault, 6);
    }

    return array($vonDatumDefault, $bisDatumDefault);
  }

  public static function getVonBisDatum(int $pToolId): array
  {
    list($vonDatumDefault, $bisDatumDefault) = self::getVonBisDatumDefault($pToolId);

    $vonDatum = \SessionOperations::getVarValueWTIntern('KursDatumVon_' . $pToolId, $vonDatumDefault);
    $bisDatum = \SessionOperations::getVarValueWTIntern('KursDatumBis_' . $pToolId, $bisDatumDefault);

    return array($vonDatum, $bisDatum);
  }

  public static function setVonBisDatum(int $pToolId, string $pVonDatum, string $pBisDatum): void
  {
    \SessionOperations::setVarValueWTIntern('KursDatumVon_' . $pToolId, $pVonDatum);
    \SessionOperations::setVarValueWTIntern('KursDatumBis_' . $pToolId, $pBisDatum);
  }
}