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

namespace Kufer\KuferTools\Utils\DatamodulHelper\KursHelper;

class VeranstalterKurseDerMitarbeiter extends KursHelper
{
  private function getVeranstalterDnr()
  {
    return \Kufer\KuferTools\Veranstalter\Utils\VeranstalterUtils::getVeranstalterDnr($this->user);
  }

  private function getTnrsVonMitarbeiterUndLeiter($veranstalterDnr)
  {
    $dbwBeziehung = new \DBWorkBeziehung(1, true);

    return $dbwBeziehung->getMitarbeterUndLeiterTeilnehmerNummernVonVeranstalterArray(array($veranstalterDnr));
  }

  
  protected function getKursnummern($dbwKurse)
  {
    $dnr = $this->getVeranstalterDnr();
    $leiterUndMitarbeiterTnrs = $this->getTnrsVonMitarbeiterUndLeiter($dnr);

    return $dbwKurse->getKursNummernByTeilnehmerIDs($leiterUndMitarbeiterTnrs);
  }

  protected function setzeSortierung($dbwKurse, $pRequestEinstieg = false, $pSortKriteria = array())
  {
    $dbwKurse = parent::setzeSortierung($dbwKurse);

    $i = '';
    $kriterium = 1;
    for ($x = 0; $x < 2; $x++) {
      if (\RequestOperations::isDefined('einstieg')) {
        \SessionOperations::setVarValueWTIntern('sortKurse_kr' . $kriterium . '_' . '51', '');
      }

      if (\RequestOperations::isDefined('sort' . $kriterium)) {
        $sortKurse = \RequestOperations::getVarValue('sort' . $kriterium);
        \SessionOperations::setVarValueWTIntern('sortKurse_kr' . $kriterium . '_' . '51', $sortKurse);
      } else {
        $sortKurse = \SessionOperations::getVarValueWTIntern('sortKurse_kr' . $kriterium . '_' . '51');
      }

      $dbField = $this->getDbField($sortKurse);
      if ($dbField != '') {
        $dbwKurse->{"orderbyasc$i"} = $this->isAscending($sortKurse);
        $dbwKurse->{"orderby$i"} = $this->getDbField($sortKurse);
      }

      $i = 2;
      $kriterium = 2;
    }

    return $dbwKurse;
  }

  private function isAscending($sortKurse)
  {
    switch ($sortKurse) {
      case 'beginnauf':
      case 'kursauf':
      case 'beginnzeitauf':
      case 'ortauf':
      case 'aussenstelleauf':
        return true;
      default:
        return false;
    }
  }

  private function getDbField($sortKurse)
  {
    switch ($sortKurse) {
      case 'beginnauf':
      case 'beginnab':
        return 'beginn_dat';
      case 'kursauf':
      case 'kursab':
        return 'nr';
      case 'beginnzeitauf':
      case 'beginnzeitab':
        return 'beginn';
      case 'ortauf':
      case 'ortab':
        return 'ort';
      case 'aussenstelleauf':
      case 'aussenstelleab':
        return 'aussenst';
      default:
        return '';
    }
  }

  protected function setzeEinstellungen($dbwKurse)
  {
    $dbwKurse = parent::setzeEinstellungen($dbwKurse);
    $dbwKurse->beratungstageKurseAusblenden = false;

    return $dbwKurse;
  }
}