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

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

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


class KursUebersichtUseCase extends \Kufer\Web\KuferTools\Basis\KursUebersicht\KursUebersichtUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new KursUebersichtResponse());
  }

  public static function getToolSectionId()
  {
    return 9;
  }

  public static function getToolId()
  {
    return 3;
  }

  public function action()
  {
    $result = parent::action();
    $result->toolSettings = $this->toolSettings;
    $result->kursNichtBearbeitbar = $this->request->kursNichtBearbeitbar;

    return $result;
  }

  
  

  protected function getButtons()
  {
    $buttonFactory = new \Kufer\Web\KuferTools\Basis\Button\ButtonFactory();
    $buttons = array();
    if ($this->isRechtAllowed('9.0.4')) {
      $buttonBezeichnung = 'Neuen Kurs planen';
      if (\DBWorkBASysSettings::isSalzburgBildungswerk()) {
        $buttonBezeichnung = 'Neues Angebot planen';
      }
      $buttons[] = array($buttonFactory->getNeuenKursPlanenButton(3, $buttonBezeichnung));
    }

    if ($this->isRechtAllowed('9.0.3')) {
      
      $anzahlEintraege = count($this->response->kurse);
      $this->addFilterButton($buttons, $buttonFactory, $anzahlEintraege, 'Filter');
    }

    return $buttons;
  }

  protected function getPanelButtonCallBacks()
  {
    $buttons = array();
    $buttonFactory = new \Kufer\Web\KuferTools\Basis\Button\ButtonFactory();

    if ($this->isRechtAllowed('9.0.1')) {
      $buttons[] = function($kurs) use ($buttonFactory) {
        if (KursBearbeitenPlanungUtils::isKursBearbeitbar(
          $this->toolSettings->kursstatusKursIstBearbeitbar,
          $this->toolSettings->kursstatusKursIstNichtBearbeitbar,
          $this->toolSettings->kursstatusKursInPlanung,
          $kurs
        )) {
          return $buttonFactory->getKursBearbeitenButton($this->getToolId(), $kurs->id);
        } elseif (KursBearbeitenPlanungUtils::isKursInPlanung($this->toolSettings->kursstatusKursInPlanung, $kurs)) {
          return $buttonFactory->getKursBearbeitenPlanungButton($this->getToolId(), $kurs->id);
        }

        return null; 
      };
    }

    if ($this->isRechtAllowed('9.0.2')) {
      $buttons[] = function($kurs) use ($buttonFactory) {
        if (KursBearbeitenPlanungUtils::isTerminBearbeitbar(
          $this->toolSettings->kursstatusKursIstBearbeitbar,
          $this->toolSettings->kursstatusKursIstNichtBearbeitbar,
          $this->toolSettings->kursstatusKursInPlanung,
          $kurs
        )) {
          return $buttonFactory->getTermineBearbeitenButton(3, $kurs->id);
        }

        return null;
      };
    }

    if ($this->isRechtAllowed('9.0.5')) {
      $kurskopiehelper = \Kufer\Web\KuferTools\Utils\DatamodulHelper\Kurse\KursKopie\KursKopieHelperFactory::getKursKopieHelperByToolID($this->getToolId(), $this->toolSettings);
      $alleKnrs = $kurskopiehelper->getIdsOhneFilter();

      $buttons[] = function($kurs) use ($alleKnrs) {
        if (in_array($kurs->id, $alleKnrs)) {
          $link = 'index.php?tool_id=3&action=kursvorschlag&knr=' . urlencode($kurs->id);

          return new \Kufer\Web\KuferTools\Basis\Button\HtmlButton('Kurs kopieren', 'kursvorschlag', $link, 'exchange', 'Kurs kopieren');
        } else {
          return null;
        }
      };
    }

    return $buttons;
  }

  protected function verlinkePanelHeaderAllowed()
  {
    return $this->isRechtAllowed('9.0.1');
  }

  protected function getUeberschrift()
  {
    $kursHelper = $this->getKursHelper();
    $dbwKurse = $kursHelper->getFilter($this->getToolId(), $this->request->suchParameter, $this->request->einstieg);

    $vonDate = $dbwKurse->fromobject->beginn_dat;
    $bisDate = $dbwKurse->toobject->beginn_dat;

    if ($vonDate == '' || $bisDate == '') {
      $dbwSemester = new \DBWorkHLSemester();
      $zeitraum = $dbwSemester->getZeitraum($this->toolSettings->semlist);
      if ($vonDate == '') {
        $vonDate = $zeitraum['von'];
      }
      if ($bisDate == '') {
        $bisDate = $zeitraum['bis'];
      }
    }

    $bezeichnungKursplanung = 'Kursplanung';
    if (\DBWorkBASysSettings::isSalzburgBildungswerk()) {
      $bezeichnungKursplanung = 'Veranstaltungsangebote';
    }

    if ($vonDate == '' || $bisDate == '') {
      return 'Meine ' . $bezeichnungKursplanung;
    } else {
      return 'Meine ' . $bezeichnungKursplanung . ' im Zeitraum von ' . $vonDate . ' bis ' . $bisDate;
    }
  }
}

class KursUebersichtRequest extends \Kufer\Web\KuferTools\Basis\KursUebersicht\KursUebersichtRequest
{
  public $kursNichtBearbeitbar;
}

class KursUebersichtResponse extends \Kufer\Web\KuferTools\Basis\KursUebersicht\KursUebersichtResponse
{
  public $toolSettings;
  public $kursNichtBearbeitbar;
}