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

namespace Kufer\Web\Classes\Datamodul;

use Kufer\Web\Classes\Identifier\Identifier;

class TnAusbildungVonSchablone extends \Datamodul
{
  
  public $tnr;

  
  public $hlid;

  
  public $fach;

  
  public $fremdsprache;

  
  public $agbart;

  
  public $anzahl;

  
  public $anzahlart;

  
  public $noteja;

  
  public $zeitraum;

  
  public $von;

  
  public $bis;

  
  public $jahr = 0;

  
  public $lfdnr = 0;

  
  public $hinterlegung;

  public function getDatamodulByName($datamodulname)
  {
    switch ($datamodulname) {
    default: return parent::getDatamodulByName($datamodulname);
    case 'hlausbschabl':
      $dbwHlAusbSchabl = \Kufer\Web\Classes\Db\DBWorkHLAusbildungsSchablone::getDefaultInstance();
      if (empty($this->id)) {
        return $dbwHlAusbSchabl->getNewObject();
      }

      $filterAusbSchabl = \Kufer\Web\Classes\Dbfilter\HLAusbildungSchablonenSQLFilter::create();
      $filterAusbSchabl->equalsId($this->hlid);

      return $dbwHlAusbSchabl->findFirstByFilter($filterAusbSchabl) ?? new HLAusbildungsSchablone();
    }
  }

  
  public function getTyp($pFieldName)
  {
    switch ($pFieldName) {
      default: return parent::getTyp($pFieldName);
      case 'id':
      case 'tnr':
      case 'hlid':
      case 'fach':
      case 'jahr':
      case 'agbart':
      case 'anzahl':
      case 'anzahlart':
      case 'lfdnr':
        return \DatamodulVarType::TYPE_INT;
      case 'fremdsprache':
      case 'noteja':
        return \DatamodulVarType::TYPE_BOOL_WF;
    }
  }

  public static function fromHLAusbildungsSchabloneDet(HLAusbildungsSchabloneDet $ausbDet): self
  {
    $result = new self();
    $result->hlid = $ausbDet->ausbildung_schablone_id;
    $result->fach = $ausbDet->fach;
    $result->fremdsprache = $ausbDet->fremdsprache;
    $result->agbart = $ausbDet->agbart;
    $result->zeitraum = $ausbDet->zeitraum;
    $result->anzahl = $ausbDet->anzahl;
    $result->anzahlart = $ausbDet->anzahlart;
    $result->noteja = $ausbDet->noteja;

    return $result;
  }

  public function getTnIdentifier(): Identifier
  {
    return new Identifier($this->tnr, null);
  }

  public function setTnIdentifier(Identifier $id): void
  {
    $this->tnr = $id->getId();
  }

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