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

namespace Kufer\Web\KuferTools\utils\wssfield\kurstag;

use Kufer\Web\KuferTools\Utils\WssField\WssField;

class WssFieldKurstagAufzeichnungslink extends WssField
{
  protected function getValue($datamodulWert, $isFormular = false)
  {
    $value = trim(parent::getValue($datamodulWert, $isFormular) ?? '');
    if ($value === '') {
      return '';
    }

    $kurstag = $datamodulWert->getDatamodulByName('kurstag');
    if (!$this->isKoelnAksTeilnehmerAllowed($kurstag)) {
      return '';
    }

    $value = $this->htmlEncode($value);
    if (!\StringOperations::startsWith($value, 'https://')) {
      return $value;
    }

    return "<a href=\"$value\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Link zur Aufzeichnung</a>";
  }

  private function isKoelnAksTeilnehmerAllowed(\Kurstag $kurstag): bool
  {
    if (!\DBWorkBASysSettings::isKoelnAksAkademieSteuern()) {
      return true;
    }

    if ($this->toolSection->getToolId() !== 20) {
      return true;
    }

    $user = \SessionOperations::getCurrentWebToolsUser();

    $dbwBelegung = \DBWorkBelegung::getDefaultInstance();
    $belegungen = $dbwBelegung->getBelegungenByKursNRAndTnr($kurstag->knr, $user->getTnrIdentifier());
    if (empty($belegungen)) {
      return false;
    }

    
    $belegung = \ArrayOperations::firstValue($belegungen);

    $dbwAnw = \DBWorkAnwesenheit::getDefaultInstance();
    $anw = $dbwAnw->getAnwesenheitByBelegungKurstagOrNull($belegung->id, $kurstag->id);
    if (is_null($anw)) {
      return false;
    }

    $anwAllowedStr = $this->toolSettings->koelnAksAufzeichnunsgLinkAnwAllowed;
    if ($anwAllowedStr === '') {
      return false;
    }

    $anwAllowed = explode(',', $anwAllowedStr);

    return in_array($anw->astatus, $anwAllowed, true);
  }

  protected function encodeValue($value)
  {
    return $value;
  }
}