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

namespace Kufer\Web\KuferTools\Teilnehmer\Anmeldung\KursUebersicht\HandleAnmeldung;

class HandleAnmeldungPresenter extends \Kufer\Web\KuferTools\Basis\Presenter\MitRahmenPresenter
{
  protected function getContent()
  {
    $view = $this->getView();
    if ($this->useCaseResponse->doppeltVersandt) {
      return $view->getNoColumn();
    }
    if ($this->useCaseResponse->userHasNoEmail || $this->useCaseResponse->userEmailInWebinarVorhanden) {
      return $view->getNoData();
    }

    return $this->getAnderenContentAlsBody($this->useCaseResponse->kurse ?? array());
  }

  protected function getAnderenContent($datamodul, $key): string
  {
    $viewModel = new KurseViewModel();
    $viewModel->status = $this->getStatusString($key);

    $dbwkurse = new \DBWorkKurse();
    $kurse = array();
    foreach ($datamodul as $kursinfo) {
      array_push($kurse, HandleAnmeldungUseCase::aktualisiereKursPerDmz($dbwkurse->getKurs($kursinfo->getKursVarValue('kursnummer')), \ToolsAPI::TOOL_ANMELDUNGBUCHEN_TN));
    }
    foreach ($kurse as $index => $kurs) {
      $viewModel->kurse .= $this->getKurs($index, $kurs);
    }
    $kurseView = new KurseView($viewModel);

    return $kurseView->show();
  }

  private function getStatusString($pStatus)
  {
    switch ($pStatus) {
      case ANMELDUNGONLINE_OK: return 'ANMELDUNGONLINE_OK';
      case ANMELDUNGONLINE_OFFLINE: return 'ANMELDUNGONLINE_OFFLINE';
      case ANMELDUNGONLINE_KURSVOLL: return 'ANMELDUNGONLINE_KURSVOLL';
      case ANMELDUNGONLINE_AUSFALL: return 'ANMELDUNGONLINE_AUSFALL';
      case ANMELDUNGONLINE_KNRUNGUELTIG: return 'ANMELDUNGONLINE_KNRUNGUELTIG';
      case ANMELDUNGONLINE_KURSENDE: return 'ANMELDUNGONLINE_KURSENDE';
      case ANMELDUNGONLINE_ANMELDESCHLUSS: return 'ANMELDUNGONLINE_ANMELDESCHLUSS';
      case ANMELDUNGONLINE_ABSCHLUSS: return 'ANMELDUNGONLINE_ABSCHLUSS';
      case ANMELDUNGONLINE_ANMELDEBEGINN: return 'ANMELDUNGONLINE_ANMELDEBEGINN';
      default: return '';
    }
  }

  protected function getKurs($index, $datamodul)
  {
    $viewModel = new KursViewModel();
    $viewModel->index = $index;
    $viewModel->kurs = $datamodul;
    $kursView = new KursView($viewModel);

    return $kursView->show();
  }

  protected function getView()
  {
    return new HandleAnmeldungView($this->getViewModel());
  }

  protected function getViewModel()
  {
    $viewModel = new HandleAnmeldungViewModel();
    $viewModel->tndata = $this->useCaseResponse->tndata;
    $viewModel->agb = $this->useCaseResponse->agb;
    $viewModel->knr = $this->useCaseResponse->knr;
    $viewModel->userEmailInWebinarVorhanden = $this->useCaseResponse->userEmailInWebinarVorhanden;
    $viewModel->moodleCreateTnProblem = $this->useCaseResponse->moodleCreateTnProblem;
    $viewModel->moodleAnmeldungZuKursProblem = $this->useCaseResponse->moodleAnmeldungZuKursProblem;

    return $viewModel;
  }
}