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

namespace Kufer\Web\KuferTools\Teilnehmer\KursUebersicht\Detailsreiter\Termine;

class TermineUseCase extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Termine\TermineUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_TN;
  }

  public static function getToolSectionId()
  {
    return 297;
  }

  protected function getMainReiterId()
  {
    return 335;
  }

  protected function getSubRechteNumber(): int
  {
    return 4;
  }

  protected function getKursNummer()
  {
    $belegung = $this->getBelegung();

    return $belegung->knr;
  }

  protected function getAllowedIds()
  {
    $user = $this->getUser();
    $belegungshelper = new \Kufer\Web\KuferTools\Utils\DatamodulHelper\Belegungen\TeilnehmerBelegungen($this->toolSettings, $user->tnr);

    return $belegungshelper->getIdsOhneFilter();
  }

  protected function getRequestedId()
  {
    return $this->request->belegId;
  }

  protected function getDatamodulHelper($kurs): \Kufer\Web\KuferTools\Utils\DatamodulHelper\KursTage\KurstageZuKurs
  {
    return new \Kufer\Web\KuferTools\Utils\DatamodulHelper\KursTage\TnKurstageZuKurs(
      $this->toolSettings,
      $this->getUser(),
      $this->request,
      $kurs,
      $this->getBelegung(),
      $this->toolSettings->kurstageAufFaecherEinschraenken
    );
  }

  protected function getButtons()
  {
    $buttonsObj = new \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\TnTermineReiterButtons($this, $this->request, $this->response, $this->isTerminadministrator());
    $buttonsArray = $buttonsObj->getButtons();
    $selectionDependentButtons = array('Terminplan', 'Termin verschieben/absagen');
    $this->response->markierenButtons = $this->markierenButtonNotwendig($buttonsArray, $selectionDependentButtons);

    return $buttonsArray;
  }

  
  protected function isTerminadministrator(): bool
  {
    if (\DBWorkBASysSettings::isInlinguaMuenchen()) {
      return \Kufer\Web\KuferTools\Utils\Teilnehmer\TeilnehmerMuenchenInlingua::isBelegungTerminadmistrator($this->getBelegung());
    } else {
      return false;
    }
  }

  protected function getBelegung(): \Belegung
  {
    $dbwBelegung = new \DBWorkBelegung(1, true);

    return $dbwBelegung->getBelegung($this->request->belegId);
  }
}