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

namespace Kufer\Web\KuferTools\Dozent\KursUebersicht\Detailsreiter\Termine\TerminHinzufuegen;

use Kufer\Web\KuferTools\Utils\Kurstag\KurstagMedien;

class TerminHinzufuegenAbsendenUseCase extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenAbsendenUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_KURSUEBERSICHT_DOZ;
  }

  public static function getToolSectionId()
  {
    return 810;
  }

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

    return true;
  }

  
  protected function preKurstagInsertHook($kurstag, $changedFields)
  {
    list($kurstag, $changedFields) = parent::preKurstagInsertHook($kurstag, $changedFields);
    $dozent = \SessionOperations::getCurrentWebToolsDozent();
    $kurstag->dnr = $dozent->id;
    $kurstag->dozent = $dozent;
    $changedFields[] = 'dnr';

    return array($kurstag, $changedFields);
  }

  protected function postSuccessTerminAdded(\Kurstag $kurstag, array $altPasstKursZuKurstage): ?string
  {
    $neuPasstKursZuKurstage = \PasstKursZuKurstageAPI::passenKursdatenZuKurstagen($kurstag->knr);
    if (!\PasstKursZuKurstageAPI::autoAnpassenKursdatenZuKurstagen($kurstag->getKurs(), $altPasstKursZuKurstage, $neuPasstKursZuKurstage)) {
      return self::ERROR_KURSTAG_BEARBEITEN_FEHLGESCHLAGEN;
    }

    return null;
  }

  protected function getZusaetzlicheMedienEMail(): KurstagMedien\ZusaetzlicheMedienMail
  {
    return new KurstagMedien\ZusaetzlicheMedienMailDozent(static::getToolId());
  }
}