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


namespace Kufer\Web\KuferTools\Basis\TeilnehmerInfo\NewTeilnehmer;


abstract class NewTeilnehmerUseCase extends \Kufer\Web\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request, $response = null)
  {
    parent::__construct($request, $response ?? new NewTeilnehmerResponse());
  }

  public function action()
  {
    
    $teilnehmer = $this->getTeilnehmer();

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

  protected function getSearchToolId()
  {
    return $this->getToolId();
  }

  private function getTeilnehmer()
  {
    $dbwTeilnehmer = new \DBWorkTeilnehmer();
    $tnData = $dbwTeilnehmer->getNewObject();
    $searchAPI = new \Kufer\Web\KuferTools\Utils\FilterSearch\TeilnehmerSearchFilter();

    $fromObject = $searchAPI->getSearchMapFromSession('tool' . $this->getSearchToolId());
    
    if (isset($this->request->nachname) && !empty($this->request->nachname)) { 
      $tnData->name = $this->request->nachname;
    } else {
      $tnData->name = $fromObject['name'] ?? '';
    }

    if (isset($this->request->vorname) && !empty($this->request->vorname)) { 
      $tnData->vorname = $this->request->vorname;
    } else {
      $tnData->vorname = $fromObject['vorname'] ?? '';
    }

    $tnData->gebdat = ''; 

    return $tnData;
  }

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

    return $this->response;
  }

  protected function getResponseStrategies()
  {
    return array(
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseWss($this),
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseWithToolSettings($this)
    );
  }
}

class NewTeilnehmerRequest
{
  public $tnr;
  public $tguid;
  
  public $vorname;

  
  public $nachname;
}

class NewTeilnehmerResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $teilnehmer;
  public $columns;
}