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

namespace Kufer\KuferTools\Allgemein\Dashboard\Utils\DashboardEintraege;

class DashboardTnKurstageDemnaechst extends DashboardBase
{
  public static function canBeUsed()
  {
    $settings = static::getDashboardSettings();

    $userid = \SessionOperations::getUserIdentifier();
    $dbwTools = new \DBWorkTools(1, true);

    return $settings->show_tn_kurstage && $dbwTools->isToolAllowed($userid, 20) && \SecurityOperations::privilegAllowed($userid, 20, '293.0.1');
  }

  public function getTitle()
  {
    return 'Ihre nächsten Kurstage';
  }

  private function getDateVars()
  {
    $dateArray = array();
    $dateArray['heutigesDatum'] = \DateTimeOperations::getDateNow();
    $dateArray['morgenDatum'] = \DateTimeOperations::addDays($dateArray['heutigesDatum'], 1);
    $dateArray['letzterTagRestlicheWo'] = \DateTimeOperations::getLastDayOfWeek($dateArray['heutigesDatum']);
    $dateArray['naechsteWo'] = \DateTimeOperations::addDays($dateArray['heutigesDatum'], 7);
    $dateArray['ersterTagNaechstenWo'] = \DateTimeOperations::getFirstDayOfWeek($dateArray['naechsteWo']);
    $dateArray['letzterTagNaechstenWo'] = \DateTimeOperations::getLastDayOfWeek($dateArray['naechsteWo']);

    $dateArray['heuteDatumKomplettkurz'] = \DateTimeOperations::getWeekDayShort($dateArray['heutigesDatum']) . ', ' . $dateArray['heutigesDatum'];
    $dateArray['morgenDatumKomplettkurz'] = \DateTimeOperations::getWeekDayShort($dateArray['morgenDatum']) . ', ' . $dateArray['morgenDatum'];

    return $dateArray;
  }

  public function getContent()
  {
    $dateVars = $this->getDateVars();
    $ktHeute = count($this->getKursetage($dateVars['heutigesDatum'], $dateVars['heutigesDatum']));
    $ktMorgen = count($this->getKursetage($dateVars['morgenDatum'], $dateVars['morgenDatum']));
    $ktRestlWo = count($this->getKursetage($dateVars['heutigesDatum'], $dateVars['letzterTagRestlicheWo']));
    $ktNaechsteWo = count($this->getKursetage($dateVars['ersterTagNaechstenWo'], $dateVars['letzterTagNaechstenWo']));

    return '<p><a href="index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $dateVars['heutigesDatum'] . '&search_datum_bis=' . $dateVars['heutigesDatum'] . '">'
          . 'Heute am ' . $dateVars['heuteDatumKomplettkurz'] . ($ktHeute == 1 ? ' findet' : ' finden') . ' für Sie ' . ($ktHeute == 0 ? 'kein' : $ktHeute) . ' ' . (($ktHeute <= 1) ? 'Kurstag' : 'Kurstage') . ' statt.'
        . '</a></p>'
        . '<p><a href="index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $dateVars['morgenDatum'] . '&search_datum_bis=' . $dateVars['morgenDatum'] . '" >'
          . 'Morgen am ' . $dateVars['morgenDatumKomplettkurz'] . ($ktMorgen <= 1 ? ' findet' : ' finden') . ' für Sie ' . ($ktMorgen == 0 ? 'keine' : $ktMorgen) . ' ' . (($ktMorgen <= 1) ? 'Kurstag' : 'Kurstage') . ' statt.'
        . '</a></p>'
        . '<p><a href="index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $dateVars['heutigesDatum'] . '&search_datum_bis=' . $dateVars['letzterTagRestlicheWo'] . '" >'
          . 'Die restliche Woche ' . ($ktRestlWo <= 1 ? 'findet für Sie' : 'finden für Sie insgesamt') . ' ' . ($ktRestlWo == 0 ? 'keinen' : $ktRestlWo) . ' ' . (($ktRestlWo <= 1) ? 'Kurstag' : 'Kurstage') . ' statt.'
        . '</a></p>'
        . '<p><a href="index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $dateVars['ersterTagNaechstenWo'] . '&search_datum_bis=' . $dateVars['letzterTagNaechstenWo'] . '">'
          . 'Nächste Woche ' . (($ktNaechsteWo <= 1) ? 'findet für Sie' : 'finden für Sie insgesamt') . ' ' . ($ktNaechsteWo == 0 ? 'kein' : $ktNaechsteWo) . ' ' . (($ktNaechsteWo <= 1) ? 'Kurstag' : 'Kurstage') . ' statt.'
        . '</a></p>';
  }

  private function getKursetage($pVonDat, $pBisDat)
  {
    $ktForTn = new \Kufer\KuferTools\Teilnehmer\KursUebersicht\TermineUebersicht\Utils\KurstageForTeilnehmer();

    return $ktForTn->getIdsInRange($pVonDat, $pBisDat);
  }

  public function getButtons()
  {
    $dateVars = $this->getDateVars();

    $heutigesDatum = $dateVars['heutigesDatum'];
    $morgenDatum = $dateVars['morgenDatum'];
    $letzterTagRestlicheWo = $dateVars['letzterTagRestlicheWo'];
    $ersterTagNaechstenWo = $dateVars['ersterTagNaechstenWo'];
    $letzterTagNaechstenWo = $dateVars['letzterTagNaechstenWo'];

    $buttons = array();
    $buttons[] = function() use ($heutigesDatum) {
      return new \Kufer\KuferTools\Basis\Button\HtmlButton('Heute', '', 'index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $heutigesDatum . '&search_datum_bis=' . $heutigesDatum, 'search', '');
    };
    $buttons[] = function() use ($morgenDatum) {
      return new \Kufer\KuferTools\Basis\Button\HtmlButton('Morgen', '', 'index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $morgenDatum . '&search_datum_bis=' . $morgenDatum, 'search', '');
    };
    $buttons[] = function() use ($heutigesDatum, $letzterTagRestlicheWo) {
      return new \Kufer\KuferTools\Basis\Button\HtmlButton('Restliche Woche', '', 'index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $heutigesDatum . '&search_datum_bis=' . $letzterTagRestlicheWo, 'search', '');
    };
    $buttons[] = function() use ($ersterTagNaechstenWo, $letzterTagNaechstenWo) {
      return new \Kufer\KuferTools\Basis\Button\HtmlButton('Nächste Woche', '', 'index.php?tool_id=20&action=setFilterTermineUebersicht&search_datum_von=' . $ersterTagNaechstenWo . '&search_datum_bis=' . $letzterTagNaechstenWo, 'search', '');
    };

    return $buttons;
  }
}