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

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

class TeilnehmerPresenter extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Teilnehmer\TeilnehmerPresenter
{
  protected function getView()
  {
    return new TeilnehmerReiterView($this->getViewModel());
  }

  protected function getViewModel()
  {
    $viewModel = parent::getViewModel();
    if (!is_null($this->useCaseResponse->changedBelegungen)) {
      $viewModel->kurs->statusMsg = $this->getStatusMeldungen4Storno($this->useCaseResponse->changedBelegungen);
    } elseif (!is_null($this->useCaseResponse->statusMessage)) {
      $viewModel->kurs->statusMsg = $this->useCaseResponse->statusMessage;
    }

    return $viewModel;
  }

  private function getStatusMeldungen4Storno($changedBelegungsArry)
  {
    $msg = '';
    if (count($changedBelegungsArry['successBelgungenDirektOrDMZ']) > 0) {
      $msg .= $this->getSuccessMessage4Storno($changedBelegungsArry['successBelgungenDirektOrDMZ']);
    }
    if (count($changedBelegungsArry['successEmail']) > 0) {
      $msg .= $this->getEMailInfoMessage4Storno($changedBelegungsArry['successEmail'], $this->useCaseResponse->sprachSettings);
    }
    if (count($changedBelegungsArry['error']) > 0) {
      $msg .= $this->getErrorMessage4Storno($changedBelegungsArry['error']);
    }

    return $msg;
  }

  
  private function getSuccessMessage4Storno($pBelegungAry)
  {
    $kursList = '';
    foreach ($pBelegungAry as $belegung) {
      $kursList .= '<div>' . \CleanOperations::cleanStringForHtml($belegung->teilnehmer->namevorname) . '</div>';
    }
    $meldung = 'Für folgende Teilnehmer wurde erfolgreich eine Stornierung durchgeführt:';

    return \HTMLOperations::getSuccessBox('<div class="successbox_text"><div>' . $meldung . '</div>' . BR_WT . $kursList . '</div>', '', 'alert alert-success');
  }

  
  private function getEMailInfoMessage4Storno($pBelegungAry, $pSprachsettings)
  {
    $kursList = '';
    
    foreach ($pBelegungAry as $belegung) {
      $kursList .= '<div>' . \CleanOperations::cleanStringForHtml($belegung->teilnehmer->namevorname) . '</div>';
      $hinderungsGruendeAry = \StornoAPI::getHinderungsGruende($belegung);
      if (count($hinderungsGruendeAry) > 0) {
        $kursList .= '<ul>';
        foreach ($hinderungsGruendeAry as $grund) {
          $kursList .= '<li> - ' . \CleanOperations::cleanStringForHtml(\StornoAPI::getText4HinderungsKonstanten($grund, $belegung, $pSprachsettings)) . '</li>';
        }
        $kursList .= '</ul>';
      }
      $kursList .= BR_WT;
    }
    $kursList .= '<div>Eine E-Mail mit den gewünschten Abmeldungen wurde an die Einrichtung versendet.</div>';

    $meldung = 'Für folgende Teilnehmer wurde eine E-Mail mit der Stornoanfrage an die Einrichtung versendet:';

    return \HTMLOperations::getInfoBox('<div class="infobox_text"><div>' . $meldung . '</div>'
                                       . BR_WT . $kursList . '</div>', 'Stornierung per E-Mail versendet', 'alert alert-info');
  }

  
  private function getErrorMessage4Storno($pBelegungAry)
  {
    $kursList = '';
    foreach ($pBelegungAry as $belegung) {
      $kursList .= '<div>' . \CleanOperations::cleanStringForHtml($belegung->teilnehmer->namevorname) . '</div>';
    }
    $meldung = 'Folgende Teilnehmer wurden nicht storniert, da ein Fehler aufgetreten ist. Bitte versuchen Sie es erneut, oder wenden Sie sich an die Einrichtung:';

    return \HTMLOperations::getAlertBox('<div role="status" class="alertbox_text"><div>' . $meldung . '</div>' . BR_WT . $kursList . '</div>', 'Fehler beim Versenden der Stornierung', 'alert alert-danger');
  }
}