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

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

class DownloadsUseCase extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Downloads\DownloadsUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_TN; 
  }

  public static function getToolSectionId()
  {
    return 303;
  }

  public function action()
  {
    $kurs = $this->getKursFromBelegungsId($this->request->belegId);
    $downloads = $this->getDownloads($kurs);

    return $this->getResponse($kurs, $downloads);
  }

  public function getKursFromBelegungsId($belId)
  {
    $dbwBelegung = new \DBWorkBelegung();
    $belegung = $dbwBelegung->getBelegung($belId);

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

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

    return true;
  }

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

    return $belegungshelper->getIdsOhneFilter();
  }

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

  protected function getDownloads($kurs)
  {
    $dokumente = parent::getDownloads($kurs);
    $freigegebeneDokus = array();
    $docStatusKlasse = new \DokumentStatusTools();

    foreach ($dokumente as $doc) {
      $userStatus = $docStatusKlasse->berechneStatus($doc->knr);
      if ($doc->isFreigegeben($userStatus)) {
        $freigegebeneDokus[] = $doc;
      }
    }

    return $freigegebeneDokus;
  }
}