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

namespace Kufer\Web\KuferTools\Teilnehmer\KursUebersicht\Detailsreiter\Dokumente\DokumenteUpload;

class DokumenteUploadFormularUseCase extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Dokumente\DokumenteUpload\DokumenteUploadFormularUseCase
{
  public function __construct($request, $response = null)
  {
    parent::__construct($request, $response ?? new DokumenteUploadFormularResponse());
  }

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

  public static function getToolSectionId()
  {
    return 764;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess()) {
      return false;
    }
    if (!$this->isRechtAllowed('335.1.10')) {
      return false;
    }
    if (!$this->isRechtAllowed($this->getToolSectionId() . '.0.1')) {
      return false;
    }

    return true;
  }

  public function action()
  {
    $result = parent::action();
    $result->belegId = $this->request->belegId;

    return $result;
  }

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

    return $belegungshelper->getIdsOhneFilter();
  }

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

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

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

  protected function getKursId(): string
  {
    return $this->getKursFromBelegungsId($this->getRequestedId())->id;
  }
}

class DokumenteUploadFormularRequest
{
  public $belegId;
}

class DokumenteUploadFormularResponse extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Dokumente\DokumenteUpload\DokumenteUploadResponse
{
  public $belegId;
  public $allowFirmen;
  public $allowFirmenDefaultValue;
  public $allowTeilnehmer;
  public $allowTeilnehmerDefaultValue;
}