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

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

class HandleTnUmmeldungUseCase extends \Kufer\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new HandleTnUmmeldungResponse());
  }

  public static function getToolSectionId()
  {
    return 630;
  }

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

  public function hasAccess($pToolsectionId = null)
  {
    if (!parent::hasAccess($pToolsectionId)) {
      return false;
    } elseif (!$this->request->isXsrfOk && !$this->request->isRefresh) {
      return false;
    }

    return true;
  }

  public function action()
  {
    $statusMessage = $this->handleUmmeldenTN();

    return $this->getResponse($statusMessage);
  }

  public function jquerySelectionToBelegung($selectionArray)
  {
    $belegungsArray = array();
    foreach ($selectionArray as $selection) {
      $belegung = new \Belegung();
      $belegung->id = $selection->vonBelegId;
      $belegung->tnr = $selection->id;
      $belegung->knr = $this->request->knr;
      $belegung->kurs = new \Kurs();
      $belegung->kurs->id = $this->request->knr;
      $belegung->eintritt = $selection->eintritt;
      $belegung->austritt = $selection->austritt;
      $belegung->teilnehmer = new \Teilnehmer();
      $belegung->teilnehmer->id = $selection->id;
      $belegung->teilnehmer->name = $selection->name;
      $belegung->teilnehmer->vorname = $selection->vorname;
      $belegung->teilnehmer->name_vorname = $selection->name . ' ' . $selection->vorname;
      $belegung->teilnehmer->strasse = $selection->strasse;
      $belegung->teilnehmer->ort = $selection->ort;
      $belegungsArray[] = $belegung;
    }

    return $belegungsArray;
  }

  protected function handleUmmeldenTN()
  {
    $zielKursNr = $this->request->neuerKnr;

    $teilnehmerObjAry = array();
    if (\PostOperations::isDefined('teilnehmerObjAry') && \PostOperations::getVarValue('teilnehmerObjAry') != '') {
      $teilnehmerObjAry = \JsonOperations::getFromStringBase64(\PostOperations::getVarValue('teilnehmerObjAry'));
    }

    $belegungen = $this->jquerySelectionToBelegung($teilnehmerObjAry);
    $ummelden = \Kufer\KuferTools\Utils\Ummelden\Ummelden::getUmmeldenArt($this->getToolId());

    return $ummelden->ummelden($belegungen, $zielKursNr);
  }

  protected function getResponse($statusMessage)
  {
    $this->response->statusMessage = $statusMessage;

    return $this->response;
  }
}

class HandleTnUmmeldungRequest
{
  public $neuerKnr;
  public $knr;
  public $isRefresh;
  public $isXsrfOk;
}

class HandleTnUmmeldungResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $statusMessage;
}