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

namespace Kufer\Web\Classes\Datamodul;

use Kufer\Web\Classes\Db\DBWorkKursBetreuer;
use Kufer\Web\Classes\Dbfilter\KursBetreuerSQLFilter;

class KursAusstellung extends \Datamodul
{
  
  public $knr;

  
  public $oeffnungmovon;

  
  public $oeffnungmobis;

  
  public $oeffnungdivon;

  
  public $oeffnungdibis;

  
  public $oeffnungmivon;

  
  public $oeffnungmibis;

  
  public $oeffnungdovon;

  
  public $oeffnungdobis;

  
  public $oeffnungfrvon;

  
  public $oeffnungfrbis;

  
  public $oeffnungsavon;

  
  public $oeffnungsabis;

  
  public $oeffnungsovon;

  
  public $oeffnungsobis;

  
  public $lagerraumvorhanden;

  
  public $lagerraumapnr;

  
  public $lagerraumaptyp;

  
  public $lagerraumbemerkung;

  public function getTyp($pFieldName)
  {
    if (\StringOperations::startsWith($pFieldName, 'oeffnung')) {
      return \DatamodulVarType::TYPE_TIME;
    }

    switch ($pFieldName) {
      default: return parent::getTyp($pFieldName);
      case 'lagerraumapnr':
        return \DatamodulVarType::TYPE_INT;
      case 'lagerraumvorhanden':
        return \DatamodulVarType::TYPE_BOOL_WF;
    }
  }

  public function getDatamodulName(): string
  {
    return 'kursausstellung';
  }

  public function getDatamodulByName($datamodulname)
  {
    switch ($datamodulname) {
      default:
        return parent::getDatamodulName();
      case 'ansprechpartner':
        return $this->getAnsprechpartner() ?? array();
    }
  }

  
  private $cacheAnsprechpartner;

  
  public function getAnsprechpartner(bool $refreshCache = false): array
  {
    if (is_null($this->cacheAnsprechpartner) || $refreshCache) {
      $filter = KursBetreuerSQLFilter::create();
      $filter->equalsKursId($this->knr);
      $kursbetreuer = DBWorkKursBetreuer::getDefaultInstance()->findByFilter($filter);
      $this->cacheAnsprechpartner = array_filter(array_map(static function(KursBetreuer $kursBetreuer) {
        return \DBWorkPersonen::findStammdatenByIdAndType($kursBetreuer->nr, $kursBetreuer->typ);
      }, $kursbetreuer));
    }

    return $this->cacheAnsprechpartner;
  }
}