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

namespace Kufer\KuferTools\Veranstalter\Anmeldung\HandleGetGebuehr4Ajax;

use Kufer\KuferTools\Utils\DatamodulHelper\TeilnehmerHelper\TeilnehmerHelper;

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

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess($pToolSectionId)) {
      return false;
    }
    $knr = \SessionOperations::getVarValueWTIntern('anmeldung_knr', -1);
    if ($knr != -1) {
      
      
      $kurshelper = new \Kufer\KuferTools\Utils\DatamodulHelper\KursHelper\VeranstalterAnmeldungKurse($this->toolSettings, $this->getUser(), array());
      $allowedKnrs = $kurshelper->getIdsMitFilter($this->getToolId());
      if (in_array($knr, $allowedKnrs) == false) {
        return false;
      }
    }
    $tnr = \SessionOperations::getVarValueWTIntern('anmeldung_tnr', -1);
    if ($tnr != -1) {
      $tnhelper = TeilnehmerHelper::createVeranstalterAnmeldungTeilnehmerUebersicht($this->toolSettings, $this->getUser());
      $allowedTnrs = $tnhelper->getIdsOhneFilter();
      if (in_array($tnr, $allowedTnrs) == false) {
        return false;
      }
    }

    return true;
  }

  public static function getToolSectionId()
  {
    return 634;
  }

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

  public function action()
  {
    $gebuehr = $this->getGebuehr4Ajax();

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

  private function getKurs()
  {
    $knr = \SessionOperations::getVarValueWTIntern('anmeldung_knr', -1);
    $dbwKurse = new \DBWorkKurse(1, true);
    if ($knr != -1) {
      return $dbwKurse->getKurs($knr, true);
    } else {
      return $dbwKurse->getNewObject();
    }
  }

  private function getTeilnehmer()
  {
    $tnr = \SessionOperations::getVarValueWTIntern('anmeldung_tnr', -1);
    $dbwTeilnehmer = new \DBWorkTeilnehmer(1, true);
    if ($tnr >= 0) {
      return $dbwTeilnehmer->getTeilnehm($tnr, true);
    } else {
      return $dbwTeilnehmer->getNewObject();
    }
  }

  
  private function getGebuehr4Ajax()
  {
    $pAnmForm = $this->request->anmForm;
    $pAnzahlWeitere = $this->request->weitereTN;
    $pNachlass = $this->request->nachlass;
    $tn = $this->getTeilnehmer();
    $kurs = $this->getKurs();

    $gebuehr = \APIGebuehren::getGebuehren($tn->id, $kurs->id, $pAnmForm, $pAnzahlWeitere);
    $isNachlassAufteilbar = \APIGebuehren::isNachlassAufteilbarInEinzelpreise($pNachlass, $tn->id, $kurs->id, $pAnmForm, $pAnzahlWeitere);

    return \JsonOperations::encode4Ajax(array($gebuehr, $isNachlassAufteilbar));
  }

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

    return $this->response;
  }
}

class HandleGetGebuehr4AjaxRequest
{
  public $anmForm;
  public $weitereTN;
  public $nachlass;
}

class HandleGetGebuehr4AjaxResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $gebuehr;
}