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

namespace Kufer\Web\KuferTools\Mitarbeiter\TeilnehmerInfo\Detailsreiter\TeilnehmerDetails;


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

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

  public static function getToolSectionId()
  {
    return 42;
  }

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

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

  protected function getTeilnehmer()
  {
    $tnr = (int)$this->request->tnr;
    $dbwTeilnehmer = new \DBWorkTeilnehmer();

    return $dbwTeilnehmer->getTeilnehm($tnr, true);
  }

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

    $persErweiterungStrategy = new \Kufer\Web\KuferTools\Utils\PersonenErweiternStrategies\ErweitereTeilnehmerStrategy();
    $tn = $persErweiterungStrategy->fillAll(array($this->response->teilnehmer), $this->getToolId(), '', 'index.php?tool_id=' . $this->getToolId() . '&action=teilnehmerdetails&tnr=' . $this->response->teilnehmer->id, 'Zurück');
    $this->response->teilnehmer = $tn[0];

    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 TeilnehmerDetailsRequest
{
  public $tnr;
}

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