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

namespace Kufer\KuferTools\Utils\DatamodulHelper\KursTageHelper;

class LehrplanKurstage extends KursTageHelper
{
  protected function getKurstageIds($dbwKurseTage)
  {
    return $dbwKurseTage->getKurstageIdsByDozID($this->user->dnr);
  }

  protected function setzeEinstellungen($dbwKurseTage)
  {
    $dbwKurseTage->fromobject->kurs->semester = $this->toolSettings->semlist;
    $dbwKurseTage->toobject->kurs->semester = '';
    if (isset($this->toolSettings->keineAusgefallenenKurse) && $this->toolSettings->keineAusgefallenenKurse) {
      $dbwKurseTage->dbwkurse->justNoAusfall = true;
    }
    if (isset($this->toolSettings->keineAbgeschlossenenKurse) && $this->toolSettings->keineAbgeschlossenenKurse) {
      $dbwKurseTage->dbwkurse->justNoAbschluss = true;
    }
    if (isset($this->toolSettings->keineHauptkurse) && $this->toolSettings->keineHauptkurse) {
      $dbwKurseTage->dbwkurse->keineHauptkurse = true;
    }
    $dbwKurseTage->fromobject->ausfall = $this->toolSettings->ktstatus;
    $dbwKurseTage->toobject->ausfall = $this->toolSettings->ktstatus;
    $dbwKurseTage->toobject->nodoztool = true;

    return $dbwKurseTage;
  }

  protected function setzeSortierung($dbwKurseTage)
  {
    $dbwKurseTage->orderby = $this->toolSettings->sortkt;
    $dbwKurseTage->orderbyasc = $this->toolSettings->sortktasc;
    $dbwKurseTage->setOrderAktuellesSemester($this->toolSettings);

    return $dbwKurseTage;
  }

  protected function setzeFilter($dbwKurseTage, $pToolId)
  {
    $searchAPI = new \LehrplanSucheAPI();
    $dbwKurseTage->fromobject = $searchAPI->getFromObjectBySession($dbwKurseTage->fromobject, 'tool' . $pToolId);
    $dbwKurseTage->toobject = $searchAPI->getToObjectBySession($dbwKurseTage->toobject, 'tool' . $pToolId);

    $dtop = new \DateTimeOperations();

    if ($dbwKurseTage->fromobject->datum == '') {
      $dbwKurseTage->fromobject->datum = $dtop->getDateByParam(6); 
    }

    if ($dbwKurseTage->toobject->datum == '') {
      $dbwKurseTage->toobject->datum = $dtop->getDateByParam(7); 
    }

    if ($dbwKurseTage->fromobject->zeit_ende == '') {
      $dbwKurseTage->fromobject->zeit_ende = $dtop->getFloatasTimeString(STARTZEIT, true);
    }

    if ($dbwKurseTage->toobject->zeit_beg == '') {
      $dbwKurseTage->toobject->zeit_beg = $dtop->getFloatasTimeString(ENDEZEIT, true);
    }

    return $dbwKurseTage;
  }

  
  public function getIdsMitFilter($pToolId)
  {
    $dbwKurseTage = $this->getDBWork();
    $dbwKurseTage = $this->setzeEinstellungen($dbwKurseTage);
    $dbwKurseTage = $this->setzeSortierung($dbwKurseTage);
    $dbwKurseTage = $this->setzeFilter($dbwKurseTage, $pToolId);

    return $this->getKurstageIds($dbwKurseTage);
  }
}