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

namespace Kufer\Web\KuferTools\Mitarbeiter\RaumUebersicht\RaumDetails\RaumGrafik;

use Kufer\Web\KuferTools\Utils\FilterSettings\IFilterSettings;
use Kufer\Web\KuferTools\Utils\FilterSettings\Kursorte\KursorteFilterSettingsHelper;

class RaumGrafikUseCase extends \Kufer\Web\KuferTools\Basis\Raumbelegung\Raumdetails\RaumGrafik\RaumGrafikUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_RAUMBELEGUNG_MA;
  }

  public static function getToolSectionId()
  {
    return 421;
  }

  protected function createFilterSettings(): IFilterSettings
  {
    return KursorteFilterSettingsHelper::createMitarbeiterRaumUebersicht($this->getUser(), $this->toolSettings);
  }

  
  protected function getKursIdsAry4ToolKursplanungMA()
  {
    $user = $this->getUser();
    $dbwKurse = new \DBWorkKurseWT();
    $dbwKurse->newSearch();
    $dbwTools = new \DBWorkTools();
    $kursIdsAry4User = array();
    if ($dbwTools->isToolAllowed($user->getIdentifier(), \ToolsAPI::TOOL_KURSPLANUNG_MA)) {
      $toolSettings8 = \ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_KURSPLANUNG_MA);
      $kursHelper = \Kufer\Web\KuferTools\Utils\DatamodulHelper\Kurse\KursHelperFactory::getKursHelperByToolID(\ToolsAPI::TOOL_KURSPLANUNG_MA, $toolSettings8);
      $kursIdsAry4User = array_flip($kursHelper->getIdsOhneFilter());
    }

    return $kursIdsAry4User;
  }

  
  protected function getKursDetailsLink($pKnr, $pKursDetailsAllowed, $pReferer, $pRefererLabel, $pKursIdsAry4ToolKursplanungMA = array())
  {
    $kursDetailsLink = '';
    if ($pKursDetailsAllowed) {
      if (isset($pKursIdsAry4ToolKursplanungMA[$pKnr])) {
        $kursDetailsLink = 'index.php?tool_id=8&action=kursdetails&knr=' . $pKnr . '&referer=' . $pReferer
          . '&refererLabel=' . $pRefererLabel;
      }
    }

    return $kursDetailsLink;
  }

  
  protected function isKursDetailsAllowed()
  {
    $rechteAry = array_map(function($val) { return "377.$val"; }, range(1.1, 1.9, .1));

    return ($this->isRechtAllowed('421.0.1') && \ToolsAPI::rechteOR($rechteAry, \ToolsAPI::TOOL_KURSPLANUNG_MA));
  }
}