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

namespace Kufer\Web\Classes\Export\ExportCalculation;

use webbasys\includee\api\SeitenwahlAPI;

class ExportCalcBlaettern extends ExportCalc
{
  
  private $seitenwahlAPI;
  
  private $blaetternAry;

  public function __construct(?array $blaetternAry, ?SeitenwahlAPI $seitenwahlAPI)
  {
    $this->blaetternAry = $blaetternAry;
    if (is_null($seitenwahlAPI)) {
      $seitenwahlAPI = new SeitenwahlAPI(1, 1);
    }
    $this->seitenwahlAPI = $seitenwahlAPI;
  }

  public function resolveVar(string $varname, ?\Datamodul $datamodul = null): string
  {
    switch (\StringOperations::strtolower($varname)) {
      case 'blaettern_zentral':
        return $this->resolveVar('blaettern_rueck_compl')
               . $this->resolveVar('blaettern_mitte_compl')
               . $this->resolveVar('blaettern_vorw_compl');
      case 'blaettern_rueck_compl':
        return $this->getBlaetternButton('rueck', $this->blaetternAry);
      case 'blaettern_mitte_compl':
        return $this->getBlaetternButton('mitte', $this->blaetternAry);
      case 'blaettern_vorw_compl':
        return $this->getBlaetternButton('vorw', $this->blaetternAry);
      case 'blaettern_rueck_link':
        return \CleanOperations::cleanStringForHtml($this->blaetternAry[4]);
      case 'blaettern_vorw_link':
        return \CleanOperations::cleanStringForHtml($this->blaetternAry[5]);
      case 'blaettern_mitte_seite_aktuell':
        return \CleanOperations::cleanInt($this->blaetternAry[0]);
      case 'blaettern_mitte_seite_gesamt':
        return \CleanOperations::cleanInt($this->blaetternAry[1]);
      case 'blaettern_mitte_index_von':
        return \CleanOperations::cleanInt($this->blaetternAry[2]);
      case 'blaettern_mitte_index_bis':
        return \CleanOperations::cleanInt($this->blaetternAry[3]);
      
      case 'seitenauswahl_list':
        return $this->seitenwahlAPI->getSeitenwahlList();
      
      case 'seitenauswahl_form':
        return $this->seitenwahlAPI->getSeitenwahlForm();
      
      case 'suchleiste_komplett':
        $strleiste = "<div class='leisteunten'>"
                        . "<div class='suchleiste'>"
                          . $this->seitenwahlAPI->getSeitenwahlForm()
                        . '</div>';
        $strleiste .= "<div class='auswahlleiste'>";

        $strleiste .= $this->resolveVar('blaettern_rueck_compl')
                       . $this->resolveVar('kurseblaettern_vorw_compl')
                       . $this->resolveVar('kurseblaettern_mitte_compl')
                       . $this->resolveVar('seitenauswahl_list')
                        . '</div>'
                      . '</div>';

       return $strleiste;
      
      case 'seitenauswahl_first_link':
        return \CleanOperations::cleanStringForHtml($this->seitenwahlAPI->getSeitenWahlLink('first'));
      case 'seitenauswahl_last_link':
        return \CleanOperations::cleanStringForHtml($this->seitenwahlAPI->getSeitenWahlLink('last'));
      case 'seitenauswahl_first':
        return $this->seitenwahlAPI->getSeitenEndButtons('first');
      case 'seitenauswahl_last':
        return $this->seitenwahlAPI->getSeitenEndButtons('last');
      default:
        return $this->getDefaultVarValue($varname, $datamodul);
    }
  }

  private function getBlaetternButton(string $pTyp, array $blaetternAry): string
  {
    switch ($pTyp) {
      case 'rueck':
        return $this->getBlaetternButtonRueckwaerts($blaetternAry);
      case 'mitte':
        return $this->getBlaetternButtonMitte($blaetternAry);
      case 'vorw':
        return $this->getBlaetternButtonVorwaerts($blaetternAry);
      default:
        return '';
    }
  }

  private function getBlaetternButtonRueckwaerts(array $blaetternAry): string
  {
    if ($blaetternAry[4] == '') {
      return '';
    }
    $layoutDir = \Kufer\Web\Classes\KwResourceLocator::getInstance()->locateLayoutDirRelative();
    $btn_rueck = \HTMLOperations::CreateImageTag(
      $layoutDir . 'button_rueckwaerts.gif',
      'Rückwärts, Schnelltaste -',
      '',
      'blaettern',
      'title="Vorherige Seite"'
    );

    return "<span class='blaetterntasten_rueckwaerts'>"
            . "<a class='blaetterntasten' href='" . \CleanOperations::cleanStringForHtml($blaetternAry[4]) . "' accesskey='-'>"
            . $btn_rueck
            . '</a>'
            . "</span>\n";
  }

  private function getBlaetternButtonMitte(array $blaetternAry): string
  {
    if ($blaetternAry[0] == '' && $blaetternAry[1] == '') {
      return '';
    }

    return "<span class='anzahl'>"
            . 'Seite ' . \CleanOperations::cleanInt($blaetternAry[0]) . ' von ' . \CleanOperations::cleanInt($blaetternAry[1])
            . "</span>\n";
  }

  private function getBlaetternButtonVorwaerts(array $blaetternAry): string
  {
    if ($blaetternAry[5] == '') {
      return '';
    }
    $layoutDir = \Kufer\Web\Classes\KwResourceLocator::getInstance()->locateLayoutDirRelative();
    $btn_vorw = \HTMLOperations::CreateImageTag(
      $layoutDir . 'button_vorwaerts.gif',
      'Vorwärts, Schnelltaste +',
      '',
      'blaettern',
      'title="Nächste Seite"'
    );

    return "<span class='blaetterntasten_vorwaerts'>"
            . "<a class='blaetterntasten' href='" . \CleanOperations::cleanStringForHtml($blaetternAry[5]) . "' accesskey='+'>"
            . $btn_vorw
            . '</a>'
            . "</span>\n";
  }
}