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

namespace Kufer\Web\KuferTools\Veranstalter\KursUebersicht\Detailsreiter\Teilnehmer\HandleBelegungBearbeiten;

class HandleBelegungBearbeitenUseCase extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Teilnehmer\HandleBelegungBearbeiten\HandleBelegungBearbeitenUseCase
{
  public static function getToolSectionId()
  {
    return 618;
  }

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

  public function sendBelegungStatusAendernMail($pBelegung, $pHinderungsGruende, $pStatus): bool
  {
    $pStornogrund = $this->request->stornogrund;
    $pAustritt = $this->request->austritt;
    $pAnmeldedatumNeuSetzen = $this->request->anmeldedatumNeuSetzen;

    $person = \SessionOperations::getCurrentWebToolsPerson();

    $betreff = 'Statusänderung von ' . $pBelegung->teilnehmer->namevorname . ' in ' . $this->response->sprachSettings->Kurs['Singular_mit_Artikel']['Dativ'] . ' ' . $pBelegung->knr . ' (' . $pBelegung->kurs->getVarValue('kurzbez_titel') . ')';

    $body = 'Veranstalter ' . $person->name . ' ' . $person->vorname . ' möchte den Status ' . $this->response->sprachSettings->Teilnehmer['Singular_mit_Artikel']['Genitiv']
            . ' ' . $pBelegung->teilnehmer->getVarValue('name_vorname_ohne_komma') . ' in ' . $this->response->sprachSettings->Kurs['Singular_mit_Artikel']['Dativ'] . ' "'
            . $pBelegung->kurs->getVarValue('kurzbez_titel') . '" (Kurs-Nr. ' . $pBelegung->knr . ') ändern.';
    $body = \CleanOperations::cleanStringForHtml($body) . '<br><br>';

    $austrittDatum = '';
    if (isset($pAustritt)) {
      $austrittDatum = $pAustritt !== '' ? $pAustritt : \DateTimeOperations::getDateNow();
    }

    if ($pStornogrund != '') {
      $body .= 'Dabei wurde vom Veranstalter folgender Grund angegeben: ' . '<br>' . $pStornogrund . '<br><br>';
    }
    $body .= 'alter Status: ' . $pBelegung->status . '<br>';
    $body .= '<b>neuer Status</b>: ' . $pStatus . '<br>';
    $body .= $pAnmeldedatumNeuSetzen ? 'Das Anmeldedatum soll neu gesetzt werden.' . '<br><br>' : '<br>';
    $body .= $austrittDatum !== '' ? 'Austritt: ' . $austrittDatum . '<br><br>' : '<br>';
    $gruendeCount = count($pHinderungsGruende);
    if ($gruendeCount > 0) {
      $body .= ' Eine direkte Statusänderung konnte ';
      $body .= 'aus folgende' . ($gruendeCount == 1 ? 'm Grund' : 'n Gründen');
      $body .= ' nicht durchgeführt werden:' . '<br><br>';
      foreach ($pHinderungsGruende as $grund) {
        $body .= '- ' . $this->getText4HinderungsKonstanten($grund) . '<br>';
      }
    }
    $body .= '<br><br><i>Diese E-Mail wurde am ' . \DateTimeOperations::getDateNow() . ' um ' . \DateTimeOperations::getTimeNow() . ' aus den ' . KUFERTOOLS . ' versandt.</i>';

    $mail = new \Kufer\Mail\EMail\EMailHTML($betreff, $body);
    $mail->addKuferToolsFooter('Statusänderung eines Teilnehmers im Kurs', $this->getUser(), $pBelegung->kurs);

    $sender = \Kufer\Mail\Sender\EMailSenderFactory::createForToolsWithCustomAddress($this->toolSettings->vhsEmailTool8Section242);
    $result = $sender->sendFromToolsUserToEinrichtung($mail, $this->getUser());

    return $result->hasSentAnyMails();
  }
}