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

namespace Kufer\Web\KuferTools\Dozent\Kursplanung\TerminKopieren;

use Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenFormularRequest;
use Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenFormularResponse;

class TerminKopierenFormularUseCase extends \Kufer\Web\KuferTools\Dozent\Kursplanung\TerminHinzufuegen\TerminHinzufuegenFormularUseCase
{
  public function hasAccess($pToolSectionId = null)
  {
    if (!\Kufer\Web\KuferTools\Basis\UseCase\ToolUseCase::hasAccess()) {
      return false;
    }
    if (!$this->isRechtAllowed('10.0.6')) {
      return false;
    }

    return true;
  }

  
  public function action()
  {
    
    if (!is_null($this->request->origKtId) && $this->request->origKtId != '') {
      $dbwKursTage = new \DBWorkKurseTage(1, true, true);
      $neuerKurstag = $dbwKursTage->getKurstag($this->request->origKtId, true);

      $kurstageByDatum = $dbwKursTage->getKurstageByKursnr($this->request->knr);
      $lastKursTag = array_pop($kurstageByDatum);
      
      $neuerKurstag->datum = \DateTimeOperations::getNextDate($lastKursTag->datum, 1);

      $dozent = $this->getDozent($this->request->knr);
      $neuerKurstag->dnr = $dozent->id;
      $neuerKurstag->dozent = $dozent;
    } else {
      
      $neuerKurstag = $this->getKurstagObj($this->request->knr);
      \Logger::logg('Termin Kopieren: Kurstag konnte nicht vorbelegt werden, weil keine Kurstag id ausgewählt wurde. ', 50);
    }

    return $this->getResponse($neuerKurstag);
  }

  protected function getUeberschrift(\Kurstag $pKurstag): string
  {
    return 'Kopieren eines ' . $this->response->sprachSettings->Kurstag['Singular']['Genitiv'] . ' zu '
            . $this->response->sprachSettings->Kurs['Singular_mit_Artikel']['Dativ'] . ' ' . $pKurstag->knr . ': ' . $pKurstag->kurs->kurzbez;
  }

  protected function getDozent(string $pKnr): \Dozent
  {
    return \SessionOperations::getCurrentWebToolsDozent();
  }
}

class TerminKopierenFormularRequest extends TerminHinzufuegenFormularRequest
{
  public $origKtId;
}