<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

namespace Kufer\Web\KuferTools\Hausmeister\Raumbelegung\Stundenplan\Ausgabe;


class PrintStundenplanGrafikUseCase extends \Kufer\Web\KuferTools\Basis\PdfListen\PrintPdfListen\PrintPdfListenBySettingsUseCase
{
  public function hasAccess($pToolSectionId = null)
  {
    $accessZurToolSection = \Kufer\Web\KuferTools\Basis\UseCase\ToolUseCase::hasAccess();
    if (!$accessZurToolSection) {
      return false;
    }

    
    if (!$this->listObj) {
      $fehlerText = 'Schwerer Fehler: Liste ' . $this->request->listName . ' konnte nicht erzeugt werden.';
      \Logger::logg($fehlerText, 110);

      return false;
    }

    return true;
  }

  public static function getToolSectionId()
  {
    return 15;
  }

  public static function getToolId()
  {
    return 5;
  }

  protected function _isPrintAllowed()
  {
    return $this->listObj->isAllowedToPrint($this->getToolId(), 'totalraumidstr_');
  }

  public function action()
  {
    
    if (!$this->_printAllowed4User) {
      $fehlerText = ' Keine Zugriffsberechtigung auf einen Kurs oder mehrere Kurse für Liste ' . $this->request->listName . '.';
      \Logger::logg($fehlerText, 120);
    } else {
      $this->listObj->loadSettings();
    }

    return $this->getResponse();
  }

  
  protected function _getPdfDrucklistenObj()
  {
    $userId = $this->getUser()->getIdentifier();

    return new \Kufer\Web\KuferTools\Basis\PdfListen\GrafikPdfListen(self::getToolId(), self::getToolSectionId(), $userId);
  }

  protected function _getPdfListe()
  {
    $this->request->id = $this->computeIdsFromSchablone($this->request->schablonId);

    return \DruckListeFactory::create($this->request->listName, $this->getToolId(), $this->request->id, $this->request->id, $this->request->schablonId);
  }

  
  private function computeIdsFromSchablone($pSchablonId)
  {
    $dbwschablraum = new \DBWorkBelplan_SchablRaum();
    $raeume = $dbwschablraum->getRaeume4Schablone($pSchablonId);

    $selectedIds = array();
    foreach ($raeume as $raum) {
      $selectedIds[] = $raum->raumnr;
    }
    
    return implode(':', $selectedIds);
  }
}