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


class DBWorkEMailXMLKurse extends DBWorkStrict
{
  public function __construct($pDBTyp = 1, $pNewInstance = false)
  {
    parent::__construct($pDBTyp, $pNewInstance);
    $this->select = 'xmlku.id, xmlku.emailID, xmlku.kursnummer, xmlku.belegID, xmlku.status, xmlku.zahlart, xmlku.kursgebuehr, '
            . 'xmlku.abw_kursgeb, xmlku.abw_kontonr, xmlku.abw_blz, xmlku.abw_bankbez, xmlku.abw_kontoinh, xmlku.abw_bic, xmlku.abw_iban, xmlku.abw_tnr, '
            . 'xmlku.abw_name, xmlku.abw_vorname, xmlku.abw_titel, xmlku.abw_geschlecht, xmlku.abw_gebdat, xmlku.anzahl, '
            . 'xmlku.beleghistorie1, xmlku.beleghistorie2, xmlku.beleghistorie3, xmlku.beleghistorie4, xmlku.beleghistorie5, '
            . 'xmlku.beleghistorie6, xmlku.beleghistorie7, xmlku.beleghistorie8, xmlku.beleghistorie9,xmlku.beleghistorie10 ,xmlku.beleghistorie11, xmlku.beleghistorie12, '
            . 'xmlku.beleghistorie13, xmlku.beleghistorie14, xmlku.beleghistorie15, xmlku.beleghistorie16, xmlku.zahlplan, xmlku.abw_strasse, xmlku.abw_ort, '
            . 'xmlku.abw_plz, xmlku.abw_email, xmlku.abw_telefon, xmlku.guthabenverwenden, xmlku.beratung_tag_id, xmlku.gutschein_empfaenger, '
            . 'xmlku.is_gutschein, xmlku.gutschein_id, xmlku.anmeldeart, xmlku.grillh_anz_erw, xmlku.grillh_anz_kinder, xmlku.fp_geschwistername, xmlku.fp_firma, '
            . 'xmlku.fp_foto_jn, xmlku.fp_ohne_aufsicht_jn, xmlku.vegetarisch_jn, xmlku.allergien_jn, xmlku.abw_telefon2, xmlku.abw_telefon3, xmlku.abw_newslerlaubt, xmlku.info2doz, xmlku.nuronline, '
            . 'xmlku.dse_unterschrieben_datum, xmlku.dse_unterschrieben_bearbeiter , xmlku.dse_unterschrieben_weg , xmlku.dse_widerrufen_datum , xmlku.dse_widerrufen_bearbeiter , xmlku.dse_widerrufen_weg, '
            . $this->clob('fp_teilnahme_text') . ', ' . $this->clob('fp_heimweg_text') . ', ' . $this->clob('allergien_text') . ', ' . $this->clob('krankheiten_text') . ', '
            . $this->clob('abw_newslbemerkung');
  }

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

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

  
  public function getCurrentRow($pRefreshCache = false)
  {
    $tmp = $this->getNewObject();
    $tmp->id = $this->getDatamodulValue('id');
    $tmp->emailID = $this->getDatamodulValue('emailID');
    $tmp->kursnummer = $this->getDatamodulValue('kursnummer');
    $tmp->belegID = $this->getDatamodulValue('belegID');
    $tmp->status = $this->getDatamodulValue('status');
    $tmp->zahlart = $this->getDatamodulValue('zahlart');
    $tmp->kursgebuehr = $this->getDatamodulValue('kursgebuehr');
    $tmp->abw_kursgeb = $this->getDatamodulValue('abw_kursgeb');
    $tmp->abw_kontonr = $this->getDatamodulValue('abw_kontonr');
    $tmp->abw_blz = $this->getDatamodulValue('abw_blz');
    $tmp->abw_bankbez = $this->getDatamodulValue('abw_bankbez');
    $tmp->abw_kontoinh = $this->getDatamodulValue('abw_kontoinh');
    $tmp->abw_bic = $this->getDatamodulValue('abw_bic');
    $tmp->abw_iban = $this->getDatamodulValue('abw_iban');
    $tmp->abw_tnr = $this->getDatamodulValue('abw_tnr');
    $tmp->abw_name = $this->getDatamodulValue('abw_name');
    $tmp->abw_vorname = $this->getDatamodulValue('abw_vorname');
    $tmp->abw_titel = $this->getDatamodulValue('abw_titel');
    $tmp->abw_geschlecht = $this->getDatamodulValue('abw_geschlecht');
    $tmp->abw_gebdat = $this->getDatamodulValue('abw_gebdat');
    $tmp->anzahl = $this->getDatamodulValue('anzahl');
    $tmp->beleghistorie1 = $this->getDatamodulValue('beleghistorie1');
    $tmp->beleghistorie2 = $this->getDatamodulValue('beleghistorie2');
    $tmp->beleghistorie3 = $this->getDatamodulValue('beleghistorie3');
    $tmp->beleghistorie4 = $this->getDatamodulValue('beleghistorie4');
    $tmp->beleghistorie5 = $this->getDatamodulValue('beleghistorie5');
    $tmp->beleghistorie6 = $this->getDatamodulValue('beleghistorie6');
    $tmp->beleghistorie7 = $this->getDatamodulValue('beleghistorie7');
    $tmp->beleghistorie8 = $this->getDatamodulValue('beleghistorie8');
    $tmp->beleghistorie9 = $this->getDatamodulValue('beleghistorie9');
    $tmp->beleghistorie10 = $this->getDatamodulValue('beleghistorie10');
    $tmp->beleghistorie11 = $this->getDatamodulValue('beleghistorie11');
    $tmp->beleghistorie12 = $this->getDatamodulValue('beleghistorie12');
    $tmp->beleghistorie13 = $this->getDatamodulValue('beleghistorie13');
    $tmp->beleghistorie14 = $this->getDatamodulValue('beleghistorie14');
    $tmp->beleghistorie15 = $this->getDatamodulValue('beleghistorie15');
    $tmp->beleghistorie16 = $this->getDatamodulValue('beleghistorie16');

    $tmp->zahlplan = $this->getDatamodulValue('zahlplan');
    $tmp->abw_strasse = $this->getDatamodulValue('abw_strasse');
    $tmp->abw_ort = $this->getDatamodulValue('abw_ort');
    $tmp->abw_plz = $this->getDatamodulValue('abw_plz');
    $tmp->abw_email = $this->getDatamodulValue('abw_email');
    $tmp->abw_telefon = $this->getDatamodulValue('abw_telefon');
    $tmp->guthabenverwenden = $this->getDatamodulValue('guthabenverwenden');
    $tmp->beratung_tag_id = $this->getDatamodulValue('beratung_tag_id');
    $tmp->gutschein_empfaenger = $this->getDatamodulValue('gutschein_empfaenger');
    $tmp->is_gutschein = $this->getDatamodulValue('is_gutschein');
    $tmp->gutschein_id = $this->getDatamodulValue('gutschein_id');
    $tmp->anmeldeart = $this->getDatamodulValue('anmeldeart');
    $tmp->grillh_anz_erw = $this->getDatamodulValue('grillh_anz_erw');
    $tmp->grillh_anz_kinder = $this->getDatamodulValue('grillh_anz_kinder');
    $moreFields = array('fp_geschwistername', 'fp_firma', 'fp_teilnahme_text', 'fp_heimweg_text', 'fp_foto_jn',
        'fp_ohne_aufsicht_jn', 'vegetarisch_jn', 'allergien_jn', 'allergien_text', 'krankheiten_text',
        'abw_telefon2', 'abw_telefon3', 'abw_newslerlaubt', 'abw_newslbemerkung', 'info2doz', 'nuronline', 'dse_unterschrieben_datum',
        'dse_unterschrieben_bearbeiter', 'dse_unterschrieben_weg', 'dse_widerrufen_datum', 'dse_widerrufen_bearbeiter', 'dse_widerrufen_weg');
    foreach ($moreFields as $varName) {
      $tmp->{$varName} = $this->getDatamodulValue($this->translateVarName($varName));
    }

    return $tmp;
  }

  public function canupdate($varname)
  {
    switch ($varname) { default: return DBWork::canupdate($varname);
      case 'aryweitere': return false;
      case 'hotelAnm': return false;
    }
  }

  public function getXMLMailKurse($pId)
  {
    $id = $this->dboperation->getInt4Sql($pId);
    $this->dboperation->clear();
    $this->dboperation->query("SELECT $this->select FROM emailxmlkurse xmlku WHERE xmlku.id=" . $id);

    return $this->getFirstRow();
  }

  
  public function getXMLMailKurseByEmailId($pEmailId)
  {
    $id = $this->dboperation->getInt4Sql($pEmailId);
    $this->dboperation->clear();
    $this->dboperation->query("SELECT $this->select FROM emailxmlkurse xmlku WHERE xmlku.emailid=" . $id);

    return $this->getFirstRow();
  }

  
  public function insertXMLMailKurs($xmlmailkurs)
  {
    $xmlmailkurs->id = $this->insertRecord('emailxmlkurse', 'id', '', true);
    $this->saveChanging('emailxmlkurse', '', '', $xmlmailkurs->id, 'id', 'I');
    $orgxmlmailkurs = $this->getXMLMailKurse($xmlmailkurs->id);
    $this->updateObject($xmlmailkurs, $orgxmlmailkurs, 'emailxmlkurse', 'id', 'A');
    $this->setActionIDs();
    if ($this->verifyXMLMailKurs($xmlmailkurs)) {
      return $xmlmailkurs->id;
    } else {
      return false;
    }
  }

  
  public function verifyXMLMailKurs($xmlmailkurs)
  {
    
    $verifyObject = $this->getXMLMailKurse($xmlmailkurs->id);

    
    $noCheck = array('aryweitere', 'hotelAnm', 'kursgebuehr', 'beratung_tag_id'
        , 'zahlplan', 'grillh_anz_erw', 'grillh_anz_kinder', 'abw_kennz' 
    );

    
    for ($i = 0; $i < $xmlmailkurs->getVarCount(); $i++) {
      
      $varname = $xmlmailkurs->getVarName($i);

      
      if (!in_array($varname, $noCheck)) {

        
        
        if (!$this->checkEquality($xmlmailkurs, $verifyObject, $varname)) {
          Logger::logg(__CLASS__ . "Fehler bei Variable $varname :" . '(original)'
              . $xmlmailkurs->getVarValue($varname) . '!='
              . $verifyObject->getVarValue($varname) . '(ausgelesen)', 100);

          return false;
        }
      }
    }

    return true;
  }

  
  public function updateEmailXMLKurse($pEmailXMLKurse)
  {
    $orgEmailXMLKurse = $this->getXMLMailKurse($pEmailXMLKurse->id);
    $this->updateObject($pEmailXMLKurse, $orgEmailXMLKurse, 'emailxmlkurse', 'id', 'U', false);
    $this->setActionIDs();
  }
}