<?php

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

namespace Kufer\KuferTools\Teilnehmer\KursUebersicht\Terminplan;

class TerminplanUseCase extends \Kufer\KuferTools\Basis\KursUebersicht\Terminplan\TerminplanUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new TerminplanResponse());
  }

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

  public static function getToolSectionId()
  {
    return 304;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess()) {
      return false;
    }
    if (!$this->isRechtAllowed('293.0.2') && !$this->isRechtAllowed('300.0.5')) {
      return false;
    }

    return true;
  }

  public function action()
  {
    if (!empty($this->request->belegIds)) {
      $kurse = $this->getKurse();
      $this->setzeZeitraum($kurse);
    }
    $auswahlMonat = $this->getAuswahlMonat();
    $auswahlJahr = $this->getAuswahlJahr();
    $auswahlQuartal = $this->getAuswahlQuartal();

    return $this->getResponse($auswahlMonat, $auswahlJahr, $auswahlQuartal);
  }

  
  private function getAuswahlMonat()
  {
    $result = '';
    $aktuellerMonat = \DateTimeOperations::getMonth(\DateTimeOperations::getDateNow());
    for ($i = 1; $i <= 12; $i++) {
      $result .= \HTMLOperations::createOptionTag($i, $i, $i == $aktuellerMonat);
    }

    return $result;
  }

  
  private function getAuswahlJahr()
  {
    $result = '';
    $aktuellesJahr = \DateTimeOperations::getYear(\DateTimeOperations::getDateNow());
    for ($i = $aktuellesJahr - 1; $i <= (int)$aktuellesJahr + 1; $i++) {
      $result .= \HTMLOperations::createOptionTag($i, $i, $i == $aktuellesJahr);
    }

    return $result;
  }

  
  private function getAuswahlQuartal()
  {
    $result = '';
    $aktuellesQuartal = \DateTimeOperations::getQuartal(\DateTimeOperations::getDateNow());
    for ($i = 1; $i <= 4; $i++) {
      $result .= \HTMLOperations::createOptionTag($i, $i, $i == $aktuellesQuartal);
    }

    return $result;
  }

  protected function getResponse($auswahlMonat, $auswahlJahr, $auswahlQuartal)
  {
    $this->response->belegIds = $this->request->belegIds;
    $this->response->ktIds = $this->request->ktIds;
    $this->response->auswahlMonat = $auswahlMonat;
    $this->response->auswahlJahr = $auswahlJahr;
    $this->response->auswahlQuartal = $auswahlQuartal;

    return $this->response;
  }
}

class TerminplanResponse extends \Kufer\KuferTools\Basis\KursUebersicht\Terminplan\TerminplanResponse
{
  public $auswahlMonat;
  public $auswahlJahr;
  public $auswahlQuartal;
}