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


class AnwesenheitsUserAPI
{
  
  public static function getAnwesenheiten4KursPage($pTool, $pPageId, $pKnr, $pShowMoreFilterOptions = true, $pFirmaTnr = null, $pVonFilter = '')
  {
    $toolId = $pTool->getToolId();
    $toolSettings = ToolSettingsAPI::getToolSettings($toolId);

    



    $dbwKTage = new DBWorkKurseTageWT();
    
    $kurstagary = $dbwKTage->getKurstagebyKursNR($pKnr, -1);
    $anzahlkurstage = count($kurstagary);
    

    $bisDat = '';
    $vonDat = '';
    if ($anzahlkurstage > 0) {
      $firstkurstag = $kurstagary[0];
      $lastkurstag = $kurstagary[$anzahlkurstage - 1];
      $vonDat = $firstkurstag->datum;
      $bisDat = $lastkurstag->datum;
    }


    
    

    
    $dbwAnw = new DBWorkAnwesenheit();

    $ktageInfo = $dbwAnw->getAnwesenheitKurstagInfo($pKnr, $vonDat, $bisDat, false); 

    if (count($ktageInfo) == 0) {
      $page = new PageWTDefault('Anwesenheiten', $pPageId, $pTool);
      $menu = new Menu();
      $page->setContent(HTMLOperations::getInfoBox('Zum Kurs ' . CleanOperations::cleanStringForHtml($pKnr) . ' k&ouml;nnen keine Anwesenheiten angezeigt werden, '
                                                         . 'da keine Kurstage gefunden wurden.', 'Keine Kurstage gefunden')
                              . BR_WT . BR_WT . $menu->getBackLink(ToolsAPI::getLastHistoryEntry()));

      return $page;
    }

    
    $stati = array();

    $anwesenheitInfo = new \Kufer\Web\Classes\Db\AnwesenheitFilter(
      $pKnr,
      $stati,
      $vonDat,
      $bisDat,
      true,
      false,
      $pFirmaTnr
    );
    $belegungInfo = $dbwAnw->getAnwesenheitBelegungInfo($anwesenheitInfo);

    $verhaltenInfo = $dbwAnw->getAnwesenheitsVerhaltenInfo($belegungInfo, $ktageInfo);

    $anwesenheitInfoFromDb = $dbwAnw->getAnwesenheiten($pKnr, $vonDat, $bisDat, $stati, -1, false, $pFirmaTnr);


    
    



    $anwRatioEnabl = $toolSettings->useAnwInAnwKontr;
    $anwCountEnabl = $toolSettings->useAnwTageInAnwKontr;
    $abwCountEnabl = $toolSettings->useAbwInAnwKontr;
    if ($anwRatioEnabl || $abwCountEnabl) {
      foreach ($belegungInfo as $belegung) {
        if ($anwRatioEnabl) {
          $belegung->inProzent = $dbwAnw->getAnwProzent($belegung->belegid, $vonDat, $bisDat, $pKnr, '');
        }
        if ($anwCountEnabl) {
          $belegung->tageDa = $dbwAnw->getAnwTage($belegung->belegid, $vonDat, $bisDat, $pKnr, '');
        }
        if ($abwCountEnabl) {
          $belegung->tageWeg = $dbwAnw->getAbwTage($belegung->belegid, $vonDat, $bisDat, $pKnr, '');
        }
      }
    }

    
    
    $readOnly = true; 
    $statusMessage = '';
    $page = new PageAnwesenheit4KursDozent(
      'Anwesenheiten',
      $pPageId,
      $pTool,
      $pKnr,
      $anwesenheitInfoFromDb,
      $ktageInfo,
      $belegungInfo,
      $verhaltenInfo,
      $anwRatioEnabl,
      $anwCountEnabl,
      $abwCountEnabl,
      $readOnly,
      $pShowMoreFilterOptions,
      $pVonFilter
    );
    $page->statusMessage = $statusMessage;

    return $page;
  }
}