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

namespace Kufer\KuferTools\Dozent\KursUebersicht\Detailsreiter\Termine;

class DozTermineUseCase extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Termine\TermineUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_KURSUEBERSICHT_DOZ;
  }

  public static function getToolSectionId()
  {
    return 4;
  }

  protected function getMainReiterId()
  {
    return 334;
  }

  protected function getDatamodulHelper($kurs): \Kufer\KuferTools\Utils\DatamodulHelper\KursTageHelper\KurstageZuKurs
  {
    return new \Kufer\KuferTools\Utils\DatamodulHelper\KursTageHelper\DozKurstageZuKurs($this->toolSettings, $this->getUser(), $this->request, $kurs);
  }

  protected function getButtons()
  {
    $buttonsObj = new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\DozTermineReiterButtons($this, $this->request, $this->response);

    return $buttonsObj->getButtons();
  }

  protected function getResponse($kurs, $termine)
  {
    $response = parent::getResponse($kurs, $termine);
    $response->markierenButtons = $this->bieteMarkierenAn();

    return $response;
  }

  protected function getKurstage($kurs)
  {
    if ((\DBWorkBASysSettings::isMVHS())) { 
      if (!\SessionOperations::isAdmin()) {
        $this->request->termineDozentRadio = 'eigene';
      }
    } elseif ($this->toolSettings->eigeneTermineDozent && !isset($this->request->termineDozentRadio)) {
      $this->request->termineDozentRadio = 'eigene';
    }
    $kurstage = parent::getKurstage($kurs);

    return \Kufer\KuferTools\Utils\DatamodulHelper\KursTageHelper\DozentenKurstage::erweitereKurstageUmRechnungsstatus($kurstage, $this->getUser());
  }

  public function zeigeTerminAbsagenButton()
  {
    return $this->isRechtAllowed('4.0.2');
  }

  public function zeigeTerminAbrechnenButton()
  {
    if (\DBWorkBASysSettings::isMVHS()) {
      static $vertragUtils = null;
      if (is_null($vertragUtils)) {
        $vertragUtils = \Kufer\KuferTools\Dozent\KursUebersicht\Detailsreiter\Honorar\Vertrag\Utils\VertragUtilsDefaultDruckenAkzeptierenAblehnen::getVertragUtils($this->request->knr);
      }

      return $vertragUtils->isVertragBereitsAkzeptiert();
    }

    return false;
  }

  public function zeigeHonorarReiterButton()
  {
    return \DBWorkBASysSettings::isMVHS() && $this->isRechtAllowed('334.1.5');
  }

  public function bieteMarkierenAn()
  {
    return $this->zeigeTerminAbsagenButton() || $this->zeigeTerminAbrechnenButton();
  }
}