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

namespace Kufer\Web\KuferTools\Firma\KursUebersicht\Detailsreiter\Teilnehmer;

use Kufer\KuferTools\Utils\DatamodulHelper\BelegungsHelper\BelegungsHelper;
use Kufer\KuferTools\Utils\DatamodulHelper\BelegungsHelper\FirmaBelegungen;
use Kufer\KuferTools\Utils\DatamodulHelper\BelegungsHelper\FirmaReiterTeilnehmerBelegungen;

class TeilnehmerUseCase extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Teilnehmer\TeilnehmerUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new TeilnehmerResponse());
  }

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

  public static function getToolSectionId()
  {
    return 771;
  }

  protected function getMainReiterId()
  {
    return 336;
  }

  protected function getMainReiterIdSection(): int
  {
    return 10;
  }

  protected function getRequestedId()
  {
    return $this->request->belegId;
  }

  public function getKurs($knr)
  {
    $belegung = (new FirmaBelegungen($this->toolSettings, $this->getUser()->tnr))->getDatamodulById($this->request->belegId);

    return parent::getKurs($belegung->knr);
  }

  protected function getAllowedIds()
  {
    return (new FirmaBelegungen($this->toolSettings, $this->getUser()->tnr))->getIdsOhneFilter();
  }

  protected function getBelegungsHelper(\Kurs $kurs): BelegungsHelper
  {
    return new FirmaReiterTeilnehmerBelegungen($this->toolSettings, $this->request, $kurs->id, $this->getUser()->tnr);
  }

  protected function getButtons()
  {
    $buttonsObj = new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\FaTeilnehmerReiterButtons($this, $this->request, $this->response);
    $buttonsArray = $buttonsObj->getButtons();
    $selectionDependentButtons = array('E-Mail', 'SMS');
    $this->response->markierenButtons = $this->markierenButtonNotwendig($buttonsArray, $selectionDependentButtons);

    return $buttonsArray;
  }

  protected function getResponse($kurs, $belegungen, $belegungenOhneFilter)
  {
    parent::getResponse($kurs, $belegungen, $belegungenOhneFilter);
    $this->response->changedBelegungen = $this->request->changedBelegungen;
    $this->response->statusMessage = $this->request->statusMessage;
    $this->response->belegung = \DBWorkBelegung::getDefaultInstance()->getBelegung($this->request->belegId);

    return $this->response;
  }
}

class TeilnehmerRequest extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Teilnehmer\TeilnehmerRequest
{
  public $changedBelegungen;
  public $statusMessage;
  public $belegId;
}

class TeilnehmerResponse extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Teilnehmer\TeilnehmerResponse
{
  public $changedBelegungen;
  public $statusMessage;
  public $belegung;
}