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

namespace Kufer\KuferTools\Dozent\KursUebersicht\Detailsreiter\Honorar\GilchingVhs\HonorarPdf;

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

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

  public static function getToolSectionId()
  {
    return 320;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess()) {
      return false;
    }
    if (!\DBWorkBASysSettings::isGilchingVhs()) {
      return false;
    }
    if (!$this->isVertragsDruckAllowed()) {
      return false;
    }

    return true;
  }

  private function isVertragsDruckAllowed()
  {
    $vertragUtils = \Kufer\KuferTools\Dozent\KursUebersicht\Detailsreiter\Honorar\Vertrag\Utils\VertragUtilsGlindeVhs::getVertragUtils($this->request->knr);

    return $vertragUtils->isVertragsDruckAllowed();
  }

  public function action()
  {
    return $this->getResponse();
  }

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

    $dbwDozKurs = new \DBWorkDozentenHonorar();
    $this->response->dozKurs = $dbwDozKurs->getHonorarbyKNRDozentNR($this->request->knr, $this->getUser()->dnr);

    return $this->response;
  }

  protected function getResponseStrategies()
  {
    return array(
        new \Kufer\KuferTools\Utils\ResponseStrategies\ResponseMitRahmen($this)
    );
  }
}

class HonorarAbrechnungDialogRequest
{
  public $knr;
}

class HonorarAbrechnungDialogResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $dozKurs;
}