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

namespace Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Downloads\DownloadZuWeitereKurse;

abstract class DownloadZuWeitereKurseFormularUseCase extends \Kufer\Web\KuferTools\Basis\UseCase\EinzelKursUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new DownloadZuWeitereKurseFormularResponse());
  }

  
  
  public function hasAccess($pToolSectionId = null)
  {
    
    
    
    if (!\Kufer\Web\KuferTools\Basis\UseCase\ToolUseCase::hasAccess()) {
      return false;
    }
    
    if (!$this->isRechtAllowed($this->getToolSectionId() . '.0.2')) {
      return false;
    }

    
    $dokument = $this->getDokumentWeb();
    
    $kursnummern = $this->getAllowedKursnummern();
    if (!in_array($dokument->knr, $kursnummern)) {
      return false;
    }

    return true;
  }

  public function action()
  {
    $user = $this->getUser();
    
    $dokument = $this->getDokumentWeb();
    $kurse = \DokuUploadUserAPI::getKurs4DownloadUebertragen($this->getToolId(), $user, $dokument->knr, $dokument->bezeichnung);

    return $this->getResponse($dokument, $kurse);
  }

  private function getDokumentWeb()
  {
    static $dokument = null;
    if (is_null($dokument)) {
      $dbwDokumenteWeb = new \DBWorkDokumenteWeb(1, true);

      return $dbwDokumenteWeb->getDokument($this->request->dokumentId);
    }

    return $dokument;
  }

  protected function getResponse($dokument, $kurse)
  {
    $this->response->dokument = $dokument;
    $this->response->kurse = $kurse;

    return $this->response;
  }
}

class DownloadZuWeitereKurseFormularRequest
{
  public $dokumentId;
}

class DownloadZuWeitereKurseFormularResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $kurse;
  public $dokument;
}