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

namespace Kufer\KuferTools\Dozent\KursUebersicht\Detailsreiter\Teilnehmer\Bescheinigung;

class BescheinigungUseCase extends \Kufer\KuferTools\Dozent\KursUebersicht\EinzelKursUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new BescheinigungResponse());
  }

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

  public static function getToolSectionId()
  {
    return 3;
  }

  public function hasAccess($pToolSectionId = null)
  {
    
    
    
    if (!parent::hasAccess()) {
      return false;
    }
    
    if (!$this->isRechtAllowed('3.0.2')) {
      return false;
    }

    return true;
  }

  public function action()
  {
    $kurs = $this->getKurs($this->request->knr);
    $belegungen = $this->getBelegungen($kurs);

    return $this->getResponse($kurs, $belegungen);
  }

  private function getBelegungen($kurs)
  {
    $dbwBelegungen = new \DBWorkBelegung(1, true);
    $dbwBelegungen->newSearch();
    $dbwBelegungen->fromobject->status = $this->toolSettings->tnstatus;
    $belegungen = $dbwBelegungen->getBelegungenbyKursNR($kurs->id);

    $result = array();
    if (count($this->request->belegungNummern) > 0) {
      foreach ($belegungen as $belegung) {
        if (in_array($belegung->id, $this->request->belegungNummern)) {
          $result[] = $belegung;
        }
      }
    } else {
      $result = $belegungen;
    }

    return $result;
  }

  protected function getResponse($kurs, $belegungen)
  {
    $this->response->kurs = $kurs;
    $this->response->belegungen = $belegungen;

    return $this->response;
  }
}

class BescheinigungRequest
{
  public $knr;
  public $belegungNummern = array();
}

class BescheinigungResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $kurs;
  public $belegungen;
}