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

namespace Kufer\Web\KuferTools\Basis\KursPlanung\KursKopie;

use Kufer\Web\KuferTools\Utils\DatamodulHelper\Kurse\KursKopie\KursKopieHelperFactory;


abstract class KursKopieUseCase extends \Kufer\Web\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new KursKopieResponse());
  }

  
  public function action()
  {
    $this->vorAction();
    $this->aktualisiereSeite();
    $response = $this->getResponse();
    
    
    $this->nachAction();

    return $response;
  }

  protected function vorAction()
  {
  }

  protected function nachAction()
  {
    \SessionOperations::setErsterAufrufInKuferTools(static::getToolId(), true);
  }

  private function aktualisiereSeite()
  {
    if (empty($this->request->seite)) {
      if ($this->request->einstieg || $this->request->aendereFilter) {
        $this->request->seite = 1;
      }
    }
  }

  
  protected function getResponse()
  {
    $this->handleResponseStrategies();
    $this->response->uebersichtAlsTabelle = isset($this->toolSettings->kursKopieUebersichtAlsTabelle) && $this->toolSettings->kursKopieUebersichtAlsTabelle;
    $this->response->datamodule = $this->response->kurse;

    return $this->response;
  }

  protected function getResponseStrategies()
  {
    $kurskopiehelper = KursKopieHelperFactory::getKursKopieHelperByToolID($this->getToolId(), $this->toolSettings, $this->getUser());
    $alleKnrs = $kurskopiehelper->getIdsMitFilter($this->getToolId(), $this->request->suchParameter, $this->request->einstieg);

    return array(
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseMitRahmen($this),
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseWss($this),
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseBlaettern($this, $alleKnrs, $this->toolSettings->kurseproseite, $this->request->seite),
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseKurseOnCurrentPage($this),
      new \Kufer\Web\KuferTools\Utils\ResponseStrategies\ResponseWithToolSettings($this)
    );
  }
}

class KursKopieRequest
{
  public $seite = 1;
  public $suchParameter;
  public $einstieg;
  public $aendereFilter;
}

class KursKopieResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $kurse = array();
  public $user;
  public $columns;
  public $blaettern;
  public $menuPunkte;
  public $uebersichtAlsTabelle;

  public $datamodule = array();
  public $panelButtonCallBacks = array();
  public $showCheckbox = false;
  public $verlinkePanelTitle = true;
}