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

namespace Kufer\KuferTools\Veranstalter\KursUebersichtAndererVeranstalter\Detailsreiter\Termine;

class TermineUseCase extends \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\Termine\TermineUseCase
{
  public static function getToolId()
  {
    return \ToolsAPI::TOOL_KURSUEBERSICHT_ANDERER_VERANSTALTER_VA;
  }

  public static function getToolSectionId()
  {
    return 643;
  }

  protected function getMainReiterId()
  {
    return 640;
  }

  public function action()
  {
    $kurs = $this->getKurs($this->request->knr);
    $termine = $this->getKurstage($kurs);
    $termine = $this->aktualisiereKurstage($termine);

    
    $hasRecht4KursAnpassen = $this->isRechtAllowed('632.0.4');
    $nichtPassendeKursdaten = array();
    
    
    
    if ($hasRecht4KursAnpassen
            && (isset($this->request->eintraegeGeloescht) && $this->request->eintraegeGeloescht
            || isset($this->request->pruefeObKursZuKurstagePasst) && $this->request->pruefeObKursZuKurstagePasst)) {
      $nichtPassendeKursdaten = \PasstKursZuKurstageAPI::passenKursdatenZuKurstagen($this->request->knr);
      $rechte = \PasstKursZuKurstageAPI::getRechte4KursBearbeitenVeranstalter($this->getToolId(), $this->getUser());

      $nichtPassendeKursdaten = array_filter($nichtPassendeKursdaten, function($field) use ($rechte) {
        return isset($rechte[$field['name']]) && $rechte[$field['name']];
      });
    }

    return $this->getResponse($kurs, $termine, $nichtPassendeKursdaten, $hasRecht4KursAnpassen);
  }

  protected function getButtons()
  {
    
    $datensaetzeVorhanden = !empty($this->response->termine);
    $buttonsObj = new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\VaKurseAndererVeranstalterTermineReiterButtons($this, $this->request, $this->response);
    $buttonsArray = $buttonsObj->getButtons($datensaetzeVorhanden);
    $selectionDependentButtons = array('Alle markieren');
    $this->response->markierenButtons = $this->markierenButtonNotwendig($buttonsArray, $selectionDependentButtons);

    return $buttonsArray;
  }

  protected function getResponse($kurs, $termine, $pNichtPassendeKursdaten = array(), $pHasRecht4KursAnpassen = false)
  {
    $response = parent::getResponse($kurs, $termine);
    $response->statusCode = $this->request->statusCode;
    $response->eintraegeGeloescht = $this->request->eintraegeGeloescht;
    $response->nichtPassendeKursdaten = $pNichtPassendeKursdaten;
    $response->hasRecht4KursAnpassen = $pHasRecht4KursAnpassen;

    return $response;
  }
}