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


namespace Kufer\Web\KuferTools\Basis\TeilnehmerInfo\UpdateTeilnehmer\HandleTeilnehmerUpdate;

use Kufer\Web\KuferTools\Basis\UseCase\EinzelTeilnehmerUseCase;
use Kufer\Web\KuferTools\Utils\Teilnehmerhandler\TeilnehmerUpdater;

abstract class HandleTeilnehmerUpdateUseCase extends EinzelTeilnehmerUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new HandleTeilnehmerUpdateResponse());
  }

  public function action()
  {
    $origTeilnehmer = $this->getTeilnehmer();
    $teilnehmerUpdater = new TeilnehmerUpdater($this->toolSettings);
    list($statusCode, $wrongFields) = $teilnehmerUpdater->handleTeilnehmerUpdate($this->request->wssHandler, $this->request->columnValues, $origTeilnehmer);
    \SessionOperations::setVarValueWTIntern('newTnStatusCode', $statusCode);
    \SessionOperations::setVarValueWTIntern('newTnWrongFields', $wrongFields);

    return $this->getResponse();
  }

  protected function getResponse()
  {
    $this->response->tnr = $this->getRequestedId();
    $this->response->tguid = $this->getRequestedGuid();

    return $this->response;
  }
}

class HandleTeilnehmerUpdateRequest extends \Kufer\Web\KuferTools\Basis\UseCase\XsrfRequest
{
  public $tnr;
  public $tguid;
  public $columnValues;
  public $wssHandler;
}

class HandleTeilnehmerUpdateResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $tnr;
  public $tguid;
}