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

namespace Kufer\KuferTools\Veranstalter\KursUebersicht\Detailsreiter\Teilnehmer\BelegungBearbeitenDialog;

class BelegungBearbeitenDialogUseCase extends \Kufer\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new BelegungBearbeitenDialogResponse());
  }

  public static function getToolId()
  {
    return \ToolsAPI::TOOL_KURSUEBERSICHT_VA;
  }

  public static function getToolSectionId()
  {
    return 618;
  }

  public function action()
  {
    $dbwBelegung = new \DBWorkBelegung();
    $belegung = $dbwBelegung->getBelegung($this->request->belid);

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

  protected function getResponse($belegung)
  {
    $this->handleResponseStrategies();
    $this->response->belegung = $belegung;
    $this->updateColumnStatus();

    return $this->response;
  }

  protected function getResponseStrategies()
  {
    return array(
        new \Kufer\KuferTools\Utils\ResponseStrategies\ResponseWss($this)
    );
  }

  protected function updateColumnStatus()
  {
    foreach ($this->response->columns as $column) {
      if ($column->fieldname === 'status') {
        $column->canedit = $column->canedit && in_array($this->response->belegung->status, $this->getBearbeitebareStatus())
                && !\APIGebuehren::hasKursFortlaufendeGebuehren($this->response->belegung->knr);
      }
    }
  }

  
  protected function getBearbeitebareStatus()
  {
    return array('A', 'I', 'P', 'S', 'U', 'W');
  }
}

class BelegungBearbeitenDialogRequest
{
  public $belid;
}

class BelegungBearbeitenDialogResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $belegung;
  public $columns;
}