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

namespace Kufer\Web\KuferTools\Mitarbeiter\KursUebersicht\Detailsreiter\Termine\TerminBearbeiten\KursAnpassenNachTerminBearbeiten;

class KursAnpassenNachTerminBearbeitenUseCase extends \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Termine\TerminBearbeiten\KursAnpassenNachTerminBearbeiten\KursAnpassenNachTerminBearbeitenUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_KURSPLANUNG_MA;
  }

  public static function getToolSectionId()
  {
    return 378;
  }

  public function hasAccess($pToolSectionId = null)
  {
    
    if (!parent::hasAccess()) {
      return false;
    }
    
    if (count(array_filter(array('28.0.1', '28.0.2', '28.0.3', '28.0.5'), array($this, 'isRechtAllowed'))) === 0) {
      return false;
    }

    return true;
  }

  
  protected function preKursUpdateHook($data, $kurs)
  {
    list($data, $kurs) = parent::preKursUpdateHook($data, $kurs);
    $hasChanges = \ArrayOperations::any($data, \FunctionOperations::getAttribute('checked'));
    if ($hasChanges) {
      $kennung = $this->getMitarbeiterKennung();
      if (!empty($kennung)) {
        $data[] = $this->createItem('bearbeiter', $kennung, true);
      }
    }

    return array($data, $kurs);
  }

  protected function getRechte4KursBearbeiten(): array
  {
    return \PasstKursZuKurstageAPI::getRechte4KursBearbeitenMitarbeiter($this->getToolId(), $this->getUser());
  }

  private function getMitarbeiterKennung(): string
  {
    return \SessionOperations::getCurrentWebToolsMitarbeiterOrEmpty()->kennung;
  }
}