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

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

use Kufer\KuferTools\Dozent\Kursplanung\KursBearbeiten;
use Kufer\Web\KuferTools\Utils\Dozent\KursBearbeitenPlanungUtils;

class KursBearbeitenPlanungUseCase extends KursBearbeiten\KursBearbeitenUseCase
{
  public function __construct($request, $response = null)
  {
    parent::__construct($request, $response ?? new KursBearbeitenPlanungResponse());
  }

  protected function isKursBearbeitbar(\Kurs $kurs): bool
  {
    return KursBearbeitenPlanungUtils::isKursInPlanung($this->toolSettings->kursstatusKursInPlanung, $kurs);
  }

  public function action()
  {
    $response = parent::action();

    
    $response->canKursAbgeben = $this->toolSettings->kursstatusNachKursInPlanung !== '';
    $response->kursAbgeben = $this->isKursAbgeben();

    return $response;
  }

  public function isKursAbgeben(): bool
  {
    if ($this->toolSettings->kursstatusNachKursInPlanung === '') {
      return false;
    }

    return $this->request->kursAbgeben;
  }
}

class KursBearbeitenPlanungRequest extends KursBearbeiten\KursBearbeitenRequest
{
  public $kursAbgeben = false;
}

class KursBearbeitenPlanungResponse extends KursBearbeiten\KursBearbeitenResponse
{
  public $canKursAbgeben;
  public $kursAbgeben;
}