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

class EmailXMLKurse extends Datamodul
{
  public $emailID;
  public $kursnummer;
  public $belegID;
  public $status;
  public $zahlart;
  public $eintritt;
  public $austritt;
  public $zahlplan;
  public $kursgebuehr;

  public $abw_kursgeb = 0;
  public $abw_kontonr;
  public $abw_blz;
  public $abw_bankbez;
  
  public $abw_kontoinh;
  public $abw_name;
  public $abw_vorname;
  public $abw_titel;
  public $abw_geschlecht;
  public $abw_gebdat;
  public $abw_bic;
  public $abw_iban;
  public $abw_strasse;
  public $abw_ort;
  public $abw_plz;
  public $abw_email;
  public $abw_telefon;
  public $abw_tnr = -1;
  public $abw_telefon2;
  public $abw_telefon3;
  public $abw_newslerlaubt;
  public $abw_newslbemerkung;
  public $dse_unterschrieben_datum;
  public $dse_unterschrieben_bearbeiter;
  public $dse_unterschrieben_weg;
  public $dse_widerrufen_datum;
  public $dse_widerrufen_bearbeiter;
  public $dse_widerrufen_weg;

  public $anzahl;
  public $anmeldeart;

  
  public $aryweitere = array();
  
  public $hotelAnm;

  
  public $beleghistorie1;
  public $beleghistorie2;
  public $beleghistorie3;
  public $beleghistorie4;
  public $beleghistorie5;
  public $beleghistorie6;
  public $beleghistorie7;
  public $beleghistorie8;
  public $beleghistorie9;
  public $beleghistorie10;
  public $beleghistorie11;
  public $beleghistorie12;
  public $beleghistorie13;
  public $beleghistorie14;
  public $beleghistorie15;
  public $beleghistorie16;
  public $guthabenverwenden;
  
  public $beratung_tag_id;
  
  public $gutschein_empfaenger;
  public $is_gutschein;
  public $gutschein_id;

  
  public $grillh_anz_erw;
  public $grillh_anz_kinder;

  
  public $fp_geschwistername;
  public $fp_firma;
  public $fp_teilnahme_text;
  public $fp_heimweg_text;
  public $fp_foto_jn;
  public $fp_ohne_aufsicht_jn;
  public $vegetarisch_jn;
  public $allergien_jn;
  public $allergien_text;
  public $krankheiten_text;

  public $nuronline;
  public $info2doz;
  public $abw_kennz;

  
  public $wunschdatvon;
  public $wunschdatbis;
  public $wunschuhrvon;
  public $wunschuhrbis;
  public $wunschort;
  public $wunschknr;
  public $wunschwebinar; 
  public $notizen;

  public function isEmpty()
  {
    $nocheck = array('abw_tnr', 'aryweitere');
    foreach (get_object_vars($this) as $var => $value) {
      if (!$this->isValueEmptyOrDefault($value) && !in_array($var, $nocheck)) {
        if (is_a($value, 'Datamodul')) {
          return $value->isEmpty();
        } else {
          return false;
        }
      }
    }

    return true;
  }

  public function addWeitere($pEmailXMLWeitere)
  {
    array_push($this->aryweitere, $pEmailXMLWeitere);
  }

  
  public function setWeiterStaemme($pEmailXMLWeitereAry)
  {
    for ($i = 0; $i < count($this->aryweitere); $i++) {
      if ($i < count($pEmailXMLWeitereAry)) {
        $this->aryweitere[$i]->emailxml = $pEmailXMLWeitereAry[$i];
      }
    }
  }

  
  public function getXmlValue($pVarname)
  {
    $datenTyp = $this->getTyp($pVarname);

    
    $dmzTypes = array(\DatamodulVarType::TYPE_BOOL_JN, \DatamodulVarType::TYPE_BOOL_WF, \DatamodulVarType::TYPE_WF_EMPTY);

    if (in_array($datenTyp, $dmzTypes)) {
      return $this->getDMZValue($pVarname);
    } else {
      return $this->getVarValue($pVarname);
    }
  }

  public function getXMLNode($pNodeTag = 'KURS')
  {
    $exceptions = array('aryweitere', 'hotelanm');
    
    $rootNode = new XMLNode($pNodeTag);
    for ($i = 0; $i < $this->getVarCount(); $i++) {
      $varname = $this->getVarname($i);
      if (in_array(StringOperations::strtolower($varname), $exceptions)) {
        continue;
      }
      $value = $this->getVarValue($varname);
      
      if ($value != '' || ($this->getTyp($varname) === \DatamodulVarType::TYPE_WF_EMPTY && $value === false)) {
        $rootNode->addChild(new XMLNode(StringOperations::strtoupper($varname), $this->getXmlValue($varname)));
        
      }
    }
    
    if (count($this->aryweitere) > 0) {
      $weiterenode = new XMLNode('WEITEREANM');
      foreach ($this->aryweitere as $weiternode) {
        $weiterenode->addChild($weiternode->getXMLNode());
      }
      $rootNode->addChild($weiterenode);
    }
    
    if ($this->hotelAnm != '' && !$this->hotelAnm->isEmpty()) {
      $rootNode->addChild($this->hotelAnm->getXMLNode());
    }

    return $rootNode;
  }

  public function getTyp($pFieldName)
  {
    switch ($pFieldName) {
      default:
        return parent::getTyp($pFieldName);
      case 'abw_tnr':
      case 'anzahl':
      case 'belegID':
      case 'zahlplan':
      case 'emailID':
      case 'beratung_tag_id':
      case 'grillh_anz_erw':
      case 'grillh_anz_kinder':
      case 'fp_firma':
      case 'abw_kennz':
        return \DatamodulVarType::TYPE_INT;
      case 'kursgebuehr':
      case 'abw_kursgeb':
        return \DatamodulVarType::TYPE_FLOAT;
      case 'guthabenverwenden':
        return \DatamodulVarType::TYPE_WF_EMPTY;
      case 'abw_gebdat':
      case 'wunschdatvon':
      case 'wunschdatbis':
        return \DatamodulVarType::TYPE_DATE;
      case 'dse_unterschrieben_datum':
      case 'dse_widerrufen_datum':
        return \DatamodulVarType::TYPE_DATETIME;
      case 'allergien_jn':
      case 'fp_foto_jn':
      case 'vegetarisch_jn':
      case 'fp_ohne_aufsicht_jn':
      case 'info2doz':
      case 'nuronline':
        return \DatamodulVarType::TYPE_BOOL_WF;
    }
  }
}