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

namespace Kufer\KuferTools\Dozent\KursUebersicht\Detailsreiter\Honorar\HammelburgVhs\VertragPdf;

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

  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 (!$this->isVertragsDruckAllowed()) {
      return false;
    }

    return true;
  }

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

    return $vertragUtils->isVertragsDruckAllowed();
  }

  public function action()
  {
    $kurs = $this->getKurs($this->request->knr);
    $dozent = \SessionOperations::getCurrentWebToolsDozent();
    $kursort = $this->getKursort($kurs->ort);
    $benutzer = $this->getBenutzer($kurs);
    $aussenstelle = $this->getAussenstelle($benutzer->aussenstelle);

    $vertragPdf = new Vertrag($kurs, $dozent, $kursort, $benutzer, $aussenstelle);

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

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

    return $this->response;
  }

  
  private function getBenutzer($pKurs)
  {
    $maKennungPla = $pKurs->getVarValue('hpm');
    $maKennungVerw = $pKurs->getVarValue('verwaltung_ma');
    $dbwBenutzer = \DBWorkBASysUser::getDefaultInstance();

    if ($maKennungPla != '') {
      return $dbwBenutzer->getBASysUserByKennung($maKennungPla);
    }
    
    if ($maKennungVerw != '') {
      return $dbwBenutzer->getBASysUserByKennung($maKennungVerw);
    }

    
    
    $dbwBASysSettings = \DBWorkBASysSettings::getDefaultInstance();
    $basysSettings = $dbwBASysSettings->getSettings();

    $basysUser = $dbwBenutzer->getNewObject();

    if (isset($pKurs->aussenst) && $pKurs->aussenst != '') {
      $aussenstelle = $pKurs->aussenst;
    } else {
      $aussenstelle = $basysSettings->vhsbezeichnung;
    }

    $basysUser->aussenstelle = $aussenstelle;
    $basysUser->name = '';
    $basysUser->vorname = '';
    $basysUser->stelle = '';

    
    $basysUser->tel = $basysSettings->vhstelefon;
    $basysUser->fax = $basysSettings->vhsfax;
    $basysUser->email = $basysSettings->vhsemail;

    return $basysUser;
  }

  private function getKursort($pOrt)
  {
    $dbwKursort = \DBWorkKursorte::getDefaultInstance();

    return $dbwKursort->getKursortbymktext($pOrt);
  }

  private function getAussenstelle($pAussenstBez)
  {
    $dbwAussenst = \DBWorkHLAussenstellen::getDefaultInstance();
    $aussenstelle = $dbwAussenst->getAussenstelleByBezeichner($pAussenstBez);

    return $aussenstelle ?? new \Aussenstelle();
  }
}

class VertragDruckenRequest
{
  public $knr;
}

class VertragDruckenResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $vertragPdf;
}