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

namespace Kufer\KuferTools\Utils\Ummelden;

class UmmeldenDirekt extends Ummelden
{
  protected function doUmmeldung($belegungsArray, $zielKursNr)
  {
    $ummeldenStatus = new UmmeldenStatus();
    foreach ($belegungsArray as $belegung) {
      $ummeldenResult = $this->handleEinzelneUmmeldung($belegung, $zielKursNr);
      if ($ummeldenResult) {
        $ummeldenStatus->successStatus[] = $belegungsArray[$belegung->id];
      } else {
        $ummeldenStatus->errorStatus[] = $belegungsArray[$belegung->id];
      }
    }

    return $ummeldenStatus;
  }

  private function handleEinzelneUmmeldung($belegung, $zielKursNr)
  {
    $anmeldeStaticSight = new \AnmeldeStaticSight();
    $belegungFromDb = $this->dbwBelegung->getBelegung($belegung->id);

    $tmpSession = $_SESSION;
    $bemerkung = 'KuferTools umgemeldet aus ' . $belegungFromDb->knr;
    $anmeldevorgangAr = $anmeldeStaticSight->doAnmeldung($belegung->teilnehmer->id, $zielKursNr, null, $bemerkung);
    $_SESSION = $tmpSession;

    if (isset($anmeldevorgangAr[0]) && $anmeldevorgangAr[0]) {
      $this->dbwBelegung->doUmmeldeStorno($belegung->id, $belegung->austritt, $zielKursNr);

      return true;
    } else {
      return false;
    }
  }

  protected function getHindernisGruende($belegung, $zielKursNr)
  {
    $hindernisGruendeHelper = new \Kufer\KuferTools\Utils\HindernisGruende\HindernisGruende();

    return $hindernisGruendeHelper->getHindernisGruende($belegung, $zielKursNr);
  }
}