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

namespace Kufer\KuferTools\Mitarbeiter\KursUebersicht\KursDetails\KursausfallSetzen;

use Kufer\Mail\Sender\IEMailSender;
use Kufer\Mail\EMail\IEMail;
use Kufer\Mail\Sender\Result\EMailSentResult;
use Kufer\Mail\Sender\Settings\Recipient\Einrichtung\IEMailEinrichtungRecipientSettings;

class KursausfallSetzenAbsendenUseCase extends \Kufer\KuferTools\Basis\KursDetails\KursausfallSetzen\KursausfallSetzenAbsendenUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_KURSPLANUNG_MA;
  }

  public static function getToolSectionId()
  {
    return 377;
  }

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

    return true;
  }

  protected function sendEMailToTeilnehmer(IEMailSender $sender, IEMail $email, \Teilnehmer $teilnehmer): EMailSentResult
  {
    $mitarbeiter = \SessionOperations::getCurrentWebToolsMitarbeiter();

    return $sender->sendFromMitarbeiterToTeilnehmer($email, $mitarbeiter, array($teilnehmer));
  }

  protected function getAlternativeEinrichtungAddress(): ?string
  {
    return $this->toolSettings->vhsEmailTool8Section377_kursausfall;
  }

  protected function sendEMailToEinrichtung(\Kufer\Mail\Sender\IEMailSender $sender, IEMail $email, IEMailEinrichtungRecipientSettings $recipientSettings): EMailSentResult
  {
    return $sender->sendFromMitarbeiterToEinrichtung($email, \SessionOperations::getCurrentWebToolsMitarbeiter(), $recipientSettings);
  }

  protected function getPositionNameWithArticle(): string
  {
    return 'Der/Die MitarbeiterIn';
  }

  protected function createVorlageBenachrichtigungAnEinrichtungView(\Kufer\KuferTools\Basis\KursDetails\KursausfallSetzen\VorlageBenachrichtigungAnEinrichtungViewModel $viewModel): \Kufer\KuferTools\Basis\KursDetails\KursausfallSetzen\VorlageBenachrichtigungAnEinrichtungView
  {
    return new VorlageBenachrichtigungAnEinrichtungView($viewModel);
  }

  protected function createVorlageBenachrichtungAnTnView(\Kufer\KuferTools\Basis\KursDetails\KursausfallSetzen\VorlageBenachrichtigungAnTnViewModel $viewModel): \Kufer\KuferTools\Basis\KursDetails\KursausfallSetzen\VorlageBenachrichtigungAnTnView
  {
    return new VorlageBenachrichtigungAnTnView($viewModel);
  }
}

class KursausfallSetzenAbsendenRequest extends \Kufer\KuferTools\Basis\KursDetails\KursausfallSetzen\KursausfallSetzenAbsendenRequest
{
}