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

namespace Kufer\KuferTools\Mitarbeiter\KursUebersicht\KursDetails\KursBearbeiten;

use Kufer\KuferTools\Utils\KursHandler\KursUpdaterMitarbeiterWss;
use Kufer\KuferTools\Utils\KursHandler\KursUpdaterWss;

class KursBearbeitenAbsendenUseCase extends \Kufer\KuferTools\Mitarbeiter\KursUebersicht\EinzelKursUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new KursBearbeitenAbsendenResponse());
  }

  public static function getToolSectionId()
  {
    return 432;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess()) {
      return false;
    }
    if (!$this->isRechtAllowed('377.0.8')) {
      return false;
    }
    if (!$this->request->isXsrfOk && !$this->request->isRefresh) {
      return false;
    }

    return true;
  }

  public function action()
  {
    $user = static::getUser();

    $kursUpdateHandler = new KursUpdaterMitarbeiterWss(
      $this->request->knr,
      $this->getToolId(),
      $this->getToolSectionId(),
      $this->request->wssHandler,
      $this->request->columnValues
    );
    $statusMessageContainer = null;

    if (!$this->request->isRefresh) {
      $kursUpdateHandler->doUpdate($user);
      $statusMessageContainer = $kursUpdateHandler->getStatusMessageContainer();
    }

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

  protected function getResponse($pStatusMessageContainer)
  {
    $this->handleResponseStrategies();
    $this->response->knr = $this->request->knr;
    $this->response->statusMessageContainer = $pStatusMessageContainer;

    return $this->response;
  }
}

class KursBearbeitenAbsendenRequest
{
  public $isRefresh;
  public $isXsrfOk;
  public $knr;
  public $columnValues;
  public $wssHandler;
}

class KursBearbeitenAbsendenResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $knr;
  public $statusMessageContainer;
}