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

namespace Kufer\KuferTools\Veranstalter\Dokumente\DokumenteDownload;

class DokumenteDownloadUseCase extends \Kufer\KuferTools\Basis\Dokumente\DokumenteDownload\DokumenteDownloadUseCase
{
  public static function getToolSectionId()
  {
    return 693;
  }

  public static function getToolId()
  {
    return 59;
  }

  protected function getDatDocObject()
  {
    $veranstalterDnr = $this->getVeranstalterDnr();
    $datDoc = parent::getDatDocObject();
    $datDoc->freigabe_veran_tools = true;
    $datDoc->nr = $veranstalterDnr;
    $datDoc->typen = implode(',', \DatDocAPI::getDatDocDocumentTypes4Dozenten());

    return $datDoc;
  }

  private function getVeranstalterDnr()
  {
    return \Kufer\KuferTools\Veranstalter\Utils\VeranstalterUtils::getVeranstalterDnr();
  }

  protected function getDokument()
  {
    $file = parent::getDokument();
    if (is_null($file) && \DBWorkBASysSettings::isSalzburgBildungswerk()) {
      
      $file = $this->getDokument4VeranstalterTeilnehmersatz()
           ?? $this->getDokument4LeiterDozentensatz()
           ?? $this->getDokument4LeiterTeilnehmer();
    }

    return $file;
  }

  private function getDokument4VeranstalterTeilnehmersatz()
  {
    $veranstalterTnr = \Kufer\KuferTools\Veranstalter\Utils\VeranstalterUtils::getVeranstalterTnr();
    if (!is_null($veranstalterTnr)) {
      $datDoc = parent::getDatDocObject();
      $datDoc->freigabe_veran_tools = true;
      $datDoc->nr = $veranstalterTnr;
      $datDoc->typen = implode(',', \DatDocAPI::getDatDocTypen4Teilnehmer());

      return $this->getDokumentPerDMZ($datDoc);
    }

    return null;
  }

  private function getDokument4LeiterDozentensatz()
  {
    $veranstalterDnr = $this->getVeranstalterDnr();
    $dnr = $this->getUser()->dnr;
    if ($dnr > 0 && $veranstalterDnr != $dnr) {
      $datDoc = parent::getDatDocObject();
      $datDoc->freigabe_veran_tools = true;
      $datDoc->nr = $dnr;
      $datDoc->typen = implode(',', \DatDocAPI::getDatDocTypen4Dozenten());

      return $this->getDokumentPerDMZ($datDoc);
    }

    return null;
  }

  private function getDokument4LeiterTeilnehmer()
  {
    $tnrVeranstalter = \Kufer\KuferTools\Veranstalter\Utils\VeranstalterUtils::getVeranstalterTnr();

    $dbwBeziehung = new \DBWorkBeziehung(1, true);
    $tnrLeiter = $dbwBeziehung->getLeiterTnr($this->getUser()->dnr);

    if ($tnrLeiter > 0 && $tnrVeranstalter != $tnrLeiter) {
      $datDoc = parent::getDatDocObject();
      $datDoc->freigabe_veran_tools = true;
      $datDoc->nr = $tnrLeiter;
      $datDoc->typen = implode(',', \DatDocAPI::getDatDocTypen4Teilnehmer());

      return $this->getDokumentPerDMZ($datDoc);
    }

    return null;
  }
}