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

namespace Kufer\KuferTools\Teilnehmer\KursUebersicht\Detailsreiter\KursDetails;


class KursDetailsUseCase extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\KursDetails\KursDetailsUseCase
{
  private $belegungshelper;

  public function __construct($request)
  {
    parent::__construct($request);
    $user = $this->getUser();
    $this->belegungshelper = new \Kufer\KuferTools\Utils\DatamodulHelper\BelegungsHelper\TeilnehmerBelegungen($this->toolSettings, $user->tnr);
  }

  public static function getToolId()
  {
    return \ToolsAPI::TOOL_TN;
  }

  public static function getToolSectionId()
  {
    return 295;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess(335)) {
      return false;
    }
    if (!$this->isRechtAllowed('335.1.2')) {
      return false;
    }

    return true;
  }

  protected function getResponse($kurs)
  {
    $response = parent::getResponse($kurs);
    $response->belegung = $this->getBelegung();

    return $response;
  }

  public function getKurs($knr)
  {
    $belegung = $this->getBelegung();

    return parent::getKurs($belegung->knr);
  }

  private function getBelegung()
  {
    static $cache = null;
    if (is_null($cache)) {
      $cache = $this->belegungshelper->getDatamodulById($this->request->belegId);
    }

    return $cache;
  }

  protected function getAllowedIds()
  {
    return $this->belegungshelper->getIdsOhneFilter();
  }

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