<?php

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

namespace Kufer\KuferTools\Utils\WssField;

use Kufer\Web\Classes\Identifier\Identifier;

class WssFieldBelegungInteraktivFirmenMitarbeiter extends WssField
{
  protected function getValue($datamodulWert, $isFormular = false)
  {
    if (is_null($datamodulWert->knr) || trim($datamodulWert->knr) === '') {
      return '';
    }

    static $dbwKurse = null;
    static $dbwteilnehmer = null;

    if (is_null($dbwteilnehmer)) {
      $dbwteilnehmer = \DBWorkTeilnehmer::getDefaultInstance();
    }
    if (is_null($dbwKurse)) {
      $dbwKurse = \DBWorkKurseWT::getDefaultInstance();
      $dbwKurse->fromobject = $datamodulWert->kurs_fromobject;
      $dbwKurse->toobject = $datamodulWert->kurs_toobject;
    }

    $value = '';
    $teilnehmerAry = $dbwteilnehmer->getTeilnehmerByFirmaKurs($datamodulWert->tnr, $datamodulWert->knr, false, $datamodulWert->tnStatus);
    $value .= '<ul class="treeviewList" style="margin: 0;">';
    $value .= '<li>'
            . '     <span class="liste_mitarbeiter">Mitarbeiter anzeigen</span>';
    foreach ($teilnehmerAry as $teilnehmer) {
      $value .= '<ul>'
              . '<li>'
              . '<div class="liste_mitarbeiter">'
              . '<span class="liste_mitarbeiter_namevorname" style="white-space: nowrap; float: left; width: 175px;">' . \CleanOperations::cleanStringForHtml($teilnehmer->namevorname) . '</span>' . $this->getPunkteBlak($datamodulWert, $teilnehmer->getIdentifier())
              . '</div>';
      $value .= $this->getMitarbeiterKurse($datamodulWert, $dbwKurse, $teilnehmer);
      $value .= '</li>'
              . '</ul>';
    }
    $value .= '</li>';
    $value .= '</ul>';

    return $value;
  }

  protected function getMitarbeiterKurse($datamodulWert, $dbwKurse, $teilnehmer)
  {
    $result = '';
    $showBisDato = true;

    if ($datamodulWert->showMitarbeiterKurse) {
      $kursAry = $dbwKurse->getKurseByTeilnehmerFirma($teilnehmer->id, $datamodulWert->tnr);
      $result .= '<br /><ul>';
      foreach ($kursAry as $kurs) {
        if ($datamodulWert->knr != $kurs->id) {
          
          
          if ($showBisDato) {
            $bisDato = '<li class="bold weiterema"><strong>bis dato auch noch belegt:</strong> </li>';
            $showBisDato = false;
            $classKU = 'erster_kurs';
          } else {
            $classKU = 'nobisdato';
            $bisDato = '';
          }
          $result .= $bisDato;
          $result .= '<li class="tool_21_mitarbeiterkurs ' . $classKU . '">'
              . \CleanOperations::cleanStringForHtml($kurs->nr_anzeige . ' ' . $kurs->kurzbez) . '</li>';
        }
      }
      $result .= '</ul>';
    }

    return $result;
  }

  
  protected function getPunkteBlak($datamodulWert, $pTnId)
  {
    $result = '';
    if (\DBWorkBASysSettings::isBlak()) {
      static $dbwBelegung = null;
      if (is_null($dbwBelegung)) {
        $dbwBelegung = \DBWorkBelegung::getDefaultInstance();
      }

      $pkteInfo = $dbwBelegung->getPunkteInfo4KnrTnr($datamodulWert->knr, $pTnId);
      $pkteStatus = \BelegungOperations::getDisplayString4PunkteStatus($pTnId->getId(), $datamodulWert->knr, $pkteInfo->pkt_ok_stat, $pkteInfo->status, $pkteInfo->punkte);

      
      static $dbwhlstatuskz = null;
      if (is_null($dbwhlstatuskz)) {
        $dbwhlstatuskz = \DBWorkHLStatusKZ::getDefaultInstance();
        $dbwhlstatuskz->prepareListcompare();
      }

      
      $result .= '<span style="min-width: 130px;" class="belegungsstatus_blak"> - ' . \CleanOperations::cleanStringForHtml($dbwhlstatuskz->getFieldbyID($pkteInfo->status, 'kennz', 'text')) . '</span>';
      $result .= '<span class="punkte"> - Punkte:  ' . \CleanOperations::cleanStringForHtml($pkteInfo->punkte) . '</span>' . "\n";
      if (!empty($pkteInfo->punkte)) {
        $result .= '<span class="pkt_ok_stat" title="' . \BelegungOperations::getDisplayTitle4PunkteStatus($pkteStatus) . '">  '
                   . $pkteStatus . '</span>' . "\n";
      }
      if ($pkteInfo->pkt_ok_am != '') {
        $result .= '<span class="pkt_ok_am"> Punkte bestätigt am:  ' . \CleanOperations::cleanStringForHtml($pkteInfo->pkt_ok_am) . '</span>' . "\n";
      }
    }

    return $result;
  }

  protected function encodeValue($value)
  {
    return $this->purifyHtml($value);
  }
}