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

namespace Kufer\KuferTools\Firma\MitarbeiterUebersicht\MitarbeiterUebersicht;

class MitarbeiterUebersichtPresenterBLAK extends MitarbeiterUebersichtPresenter
{
  protected function getBerufsgruppe($datamodul)
  {
    static $dbwkennz = null;
    if (\is_null($dbwkennz)) {
      
      $dbwkennz = \DBWorkKennz::getDefaultInstance();
    }

    return 'Berufsgruppe: ' . $dbwkennz->_getBerufsgruppen4TN('komma', $datamodul['teilnehmer']->id);
  }

  
  protected function getEinzelkurs($belegung, $teilnehmer)
  {
    $viewModel = new MitarbeiterKurseViewModelBLAK();
    $viewModel->belegung = $belegung;
    $viewModel->belegung->belegungsDetailsAllowed = $this->useCaseResponse->belegungsDetailsAllowed;
    $viewModel->belegung->referer = urlencode($this->getAktuelleURLRelative());
    $viewModel->belegung->refererLabel = urlencode(\StringOperations::htmlentities('Zurück zur Mitarbeiterübersicht'));

    $punkteInfo = $this->getPunkteInfo($belegung->knr, $teilnehmer->getIdentifier());
    $viewModel->belegung->belegungsstatus = $this->getBelegungsstatus($punkteInfo);
    $punktestatus = $this->getPunktestatus($belegung->knr, $teilnehmer->id, $punkteInfo);
    $viewModel->belegung->punktestatus = $punktestatus;
    $viewModel->belegung->punktestatusTitle = $this->getPunktestatusTitle($punktestatus);
    $viewModel->belegung->punkte = $this->getPunkte($punkteInfo, $punktestatus);
    $viewModel->belegung->punkteOkAm = $this->getPunkteBestaetigtAM($punkteInfo);

    $kursView = new MitarbeiterKurseViewBLAK($viewModel);

    return $kursView->getBody();
  }

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

    return $dbwhlstatuskz->getFieldbyID($pPunkteInfo->status, 'kennz', 'text');
  }

  private function getPunktestatusTitle($pPunkteStatus)
  {
    return \CleanOperations::cleanStringForHtml(\BelegungOperations::getDisplayTitle4PunkteStatus($pPunkteStatus));
  }

  private function getPunktestatus($pKnr, $pTnr, $pPunkteInfo)
  {
    return \BelegungOperations::getDisplayString4PunkteStatus($pTnr, $pKnr, $pPunkteInfo->pkt_ok_stat, $pPunkteInfo->status, $pPunkteInfo->punkte);
  }

  
  private function getPunkte($pPunkteInfo, $pPunkteStatus)
  {
    if ($pPunkteStatus != '?') {
      return $pPunkteInfo->punkte;
    }

    return null;
  }

  
  private function getPunkteBestaetigtAM($pPunkteInfo)
  {
    if ($pPunkteInfo->pkt_ok_am != '') {
      return $pPunkteInfo->pkt_ok_am;
    }

    return null;
  }

  
  private function getPunkteInfo($pKnr, $pTnr)
  {
    static $dbwBelegung = null;
    if ($dbwBelegung == null) {
     
      $dbwBelegung = \DBWorkBelegung::getDefaultInstance();
    }

    return $dbwBelegung->getPunkteInfo4KnrTnr($pKnr, $pTnr);
  }
}