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

namespace Kufer\KuferTools\Mitarbeiter\KursUebersicht\Detailsreiter\Termine\TermineLoeschen;

class TermineLoeschenUseCase extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Termine\TermineLoeschen\TermineLoeschenUseCase
{
  public static function getToolSectionId()
  {
    return 377;
  }

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

  public function hasAccess($pToolsectionId = null)
  {
    if (!parent::hasAccess($pToolsectionId)) {
      return false;
    }

    
    

    if (!$this->isRechtAllowed('377.1.3') || !$this->isRechtAllowed('28.0.3')) { 
      return false;
    }

    if (!$this->hatMitarbeiterZugriffAufKurstage($this->request->ktIds)) {
      return false;
    }

    return true;
  }

  private function hatMitarbeiterZugriffAufKurstage($kurstagIds)
  {
    $kursHelper = new \Kufer\KuferTools\Utils\DatamodulHelper\KursHelper\MitarbeiterKurse($this->toolSettings, $this->getUser());
    $kursnummern = $kursHelper->getIdsOhneFilter();

    $kurstage = $this->getKurstage();
    if (count($kurstage) !== count($kurstagIds)) {
      return false;
    }

    return \ArrayOperations::all($kurstage, function($kt) use ($kursnummern) {
      return in_array($kt->knr, $kursnummern);
    });
  }
}