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

namespace Kufer\KuferTools\Dozent\KursUebersicht\PdfListen\KurstageArbeitsbericht;

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

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

  public static function getToolSectionId()
  {
    return 334;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess()) {
      return false;
    }
    if (!\DBWorkBASysSettings::isBFI() || !$this->isRechtAllowed('334.1.3')) { 
      return false;
    }

    return true;
  }

  public function action()
  {
    $kurstageArbeitsbericht = $this->getKurstageArbeitsbericht();
    $kurstageArbeitsbericht->loadSettings();
    $kurstageArbeitsbericht = $this->setKurstageVonBis($kurstageArbeitsbericht);

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

  private function setKurstageVonBis($pKurstageArbeitsbericht)
  {
    if ($this->request->zeitraumBeschraenken) {
      $pKurstageArbeitsbericht->settings->kurstage->von = $this->request->ktVon;
      $pKurstageArbeitsbericht->settings->kurstage->bis = $this->request->ktBis;
    }

    return $pKurstageArbeitsbericht;
  }

  private function getKurstageArbeitsbericht()
  {
    if ($this->request->nurEigeneArbeitsberichte) {
      return new \KurstageArbeitsberichtAktDoz($this->request->knr, $this->getToolId());
    } else {
      return new \KurstageArbeitsbericht($this->request->knr, $this->getToolId());
    }
  }

  protected function getResponse($pKurstageArbeitsbericht)
  {
    $this->response->kurstageArbeitsbericht = $pKurstageArbeitsbericht;

    return $this->response;
  }
}

class KurstageArbeitsberichtRequest
{
  public $knr;
  public $zeitraumBeschraenken;
  public $ktVon;
  public $ktBis;
  public $nurEigeneArbeitsberichte;
}

class KurstageArbeitsberichtResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $kurstageArbeitsbericht;
}