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


class DBWorkTeilnehmer2 extends DBWorkGenerated
{
  private $_personExpander;

  public function __construct($pDBTyp = 1, $pNewInstance = false)
  {
    parent::__construct($pDBTyp, $pNewInstance);
    $tnObj = $this->getNewObject();
    $this->_personExpander = new ExpandPersonData($this->getTableName(), $tnObj, $this, array('schul_nr', 'ausbildungvon', 'ausbildungbis', 'ausbildungsschablone'));
    $this->_dataModulFields = $this->_personExpander->getDataModulFields();
    $this->select = $this->_personExpander->select;
  }

  
  public function getNewObject()
  {
    return new Teilnehmer();
  }

  public function getTableName(): string
  {
    return 'teilnehm2';
  }

  public function canupdate($varname)
  {
    $noupdate = array('nr', 'id', 'acceptdat_tnb'); 
    if (in_array($varname, $noupdate)) {
      return false;
    }

    return in_array($varname, $this->_dataModulFields);
  }

  public function translateVarName($varname)
  {
    switch ($varname) {
      default: return DBWork::translateVarName($varname);
      case 'id': return 'nr';
    }
  }

  
  public function getByIds($pIdAry, $pTeilnehmAry = null, $pRefreshCache = false)
  {
    return $this->_personExpander->getByIds($pIdAry, $pTeilnehmAry, $pRefreshCache);
  }

  public function insertOrUpdateTeilnehm2($pTeilnehm, $pDontProtocol = false, $pDmzBetrieb = false)
  {
    
    
    
    
    $orig = $this->getOne($pTeilnehm->id, 'nr', '', false);

    if ($orig->isEmpty()) {
      $this->insertTeilnehm2($pTeilnehm, $pDontProtocol, $pDmzBetrieb);
    } else {
      $this->updateTeilnehm2($pTeilnehm, $pDontProtocol, $pDmzBetrieb);
    }

    return $pTeilnehm->id;
  }

  
  public function updateTeilnehm2($pTeilnehm, $pDontProtocol = false, $pDmzBetrieb = false)
  {
    
    
    $orig = $this->getOne($pTeilnehm->id, 'nr', '', false);

    if ($orig->isEmpty()) {
      throw new InvalidArgumentException('In der teilnehm2 gibt es keinen Datensatz mit Nr ' . $pTeilnehm->id);
    }
    $orig->id = $pTeilnehm->id;
    $this->updateObject($pTeilnehm, $orig, 'teilnehm2', 'id', 'U', $pDontProtocol, $pDmzBetrieb);
    $this->setActionIDs();
  }

  public function insertTeilnehm2($pTeilnehm, $pDontProtocol = false, $pDmzBetrieb = false)
  {
    $cleanId = $this->dboperation->getInt4Sql($pTeilnehm->id);
    $this->dboperation->clear();
    $this->dboperation->execute('INSERT INTO ' . $this->getTableName() . ' (nr) VALUES (' . $cleanId . ')');
    if (!$pDontProtocol) {
      $this->saveChanging('teilnehm2', '', '', $pTeilnehm->id, 'id', 'I', $pDmzBetrieb);
    }
    
    
    $orig = $this->getOne($pTeilnehm->id, 'nr', '', false);

    $this->updateObject($pTeilnehm, $orig, 'teilnehm2', 'id', 'A', $pDontProtocol, $pDmzBetrieb);
    $this->setActionIDs();

    return $pTeilnehm->id;
  }
}