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

namespace Kufer\Web\KuferTools\Basis\TeilnehmerInfo\Detailsreiter\Bankverbindungen;

abstract class BankverbindungenUseCase extends \Kufer\Web\KuferTools\Basis\UseCase\EinzelTeilnehmerUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new BankverbindungenResponse());
  }

  public function action()
  {
    $stammBv = $this->getStammBv();

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

  private function getStammBv()
  {
    $dbwStammBv = new \DBWorkStammBv();

    return $dbwStammBv->getStammBvByTnr($this->request->tnr);
  }

  abstract protected function isbearbeitbar();

  protected function getResponse($stammBv)
  {
    $this->handleResponseStrategies();
    $bearbeitbar = $this->isbearbeitbar();
    if ($bearbeitbar) {
      $bearbeitenColumn = new \Column();
      $bearbeitenColumn->datamodul = 'stammbv';
      $bearbeitenColumn->fieldname = 'bearbeiten';

      $loeschenColumn = new \Column();
      $loeschenColumn->datamodul = 'stammbv';
      $loeschenColumn->fieldname = 'loeschen';
      array_unshift($this->response->columns, $bearbeitenColumn, $loeschenColumn);
    }
    $this->response->stammBv = $stammBv;
    $this->response->bearbeitbar = $bearbeitbar;
    $this->response->reiterButtons = $this->getButtons();
    $this->response->statusMsg = $this->request->statusMsg;

    $this->response->teilnehmer = $this->getTeilnehmer();

    return $this->response;
  }

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

  protected function getButtons()
  {
    $buttonsObj = new \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\BankverbindungenReiterButtons($this, $this->request, $this->response);
    $buttonsArray = $buttonsObj->getButtons();
    $selectionDependentButtons = array('Abmelden');
    $this->response->markierenButtons = $this->markierenButtonNotwendig($buttonsArray, $selectionDependentButtons);

    return $buttonsArray;
  }
}

class BankverbindungenRequest
{
  public $knr;
  public $termineDatumBereich;
  public $termineDatumVon;
  public $termineDatumBis;
  public $termineUhrzeitBereich;
  public $termineUhrzeitVon;
  public $termineUhrzeitBis;
  public $termineDozent;
  public $termineDozentRadio;
  public $termineOrt;
  public $termineBemerkung;
  public $termineStatus;
  public $tnr;
  public $tguid;
  public $statusMsg;
}

class BankverbindungenResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $stammBv;
  public $bearbeitbar;
  public $statusMsg;
  public $kurs;
  public $termine;
  public $columns;
  public $teilnehmer;

  
  
  public $reiterButtons;
  public $markierenButtons;
}