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


class BuchungsvorgangWEBBASys extends Buchungsvorgang
{
  
  public $_technischeProbleme = false;
















  
  





















  
  public function _getToolSettings($pZentraleEinstellungen)
  {
    $toolsettings = ToolSettingsAPI::getToolSettings(4);
    
    $pZentraleEinstellungen->suppressTNBestaetigung = $toolsettings->suppressInfoMail;
    $pZentraleEinstellungen->suppressASBestaetigung = !$toolsettings->bccAnmeldebestaetigungeMail;
    $pZentraleEinstellungen->addressASBestaetigung = $toolsettings->bccAnmeldebestaetigungeMailAdresse;
    $pZentraleEinstellungen->platzreservierung = $toolsettings->platzreservierung;
    $pZentraleEinstellungen->toolid = 4;
    $pZentraleEinstellungen->tnbestToFirstWeiterer = $toolsettings->sendAnmeldeInfoMailToFirstWeiterer;
    $pZentraleEinstellungen->tnbestToAllFirma = $toolsettings->sendAnmeldeInfoMailToAllFirma;
    $pZentraleEinstellungen->infoMailMultipleContent = $toolsettings->infoMailMultipleContent;
    $pZentraleEinstellungen->infoMailTextContent = $toolsettings->infoMailTextContent;
    $pZentraleEinstellungen->infoMailSendToAllKnownAdresses = $toolsettings->infoMailSendToAllKnownAdresses;
    $pZentraleEinstellungen->infoMailAnAbwZahler = $toolsettings->infoMailAnAbwZahler;
    $pZentraleEinstellungen->anmAnmBeginnDoAnm = $toolsettings->anmAnmBeginnDoAnm;
    $pZentraleEinstellungen->anmAnmSchlussDoAnm = $toolsettings->anmAnmSchlussDoAnm;
    $pZentraleEinstellungen->anmKursAbgeschlDoAnm = $toolsettings->anmKursAbgeschlDoAnm;
    $pZentraleEinstellungen->anmKursAusfallDoAnm = $toolsettings->anmKursAusfallDoAnm;
    $pZentraleEinstellungen->anmKursEndeDoAnm = $toolsettings->anmKursEndeDoAnm;
    $pZentraleEinstellungen->anmKursVollDoAnm = $toolsettings->anmKursVollDoAnm;
    $pZentraleEinstellungen->vornameSaeubern = $toolsettings->vornameSaeubern;
    $pZentraleEinstellungen->bestaetigungKursVorTn = $toolsettings->bestaetigungKursVorTn;
    $pZentraleEinstellungen->kontrolleNeuesAvKursVorTn = $toolsettings->kontrolleNeuesAvKursVorTn;
    $pZentraleEinstellungen->tnbestWithIcs = $toolsettings->tnbestWithIcs;

    return $pZentraleEinstellungen;
  }

  
  public function buchungStep2($pAnmeldungenEinzeln = false)
  {
    $statParams = array();
    for ($i = 0; $i < count($this->_kurse); $i++) {
      $alterStatus = $this->_kurse[$i]->getStatus();
      $neuerStatus = $this->_kurse[$i]->doBuchungStep2($this->_tninfo, $this->_epayinfo, $pAnmeldungenEinzeln);
      $this->kurse_anmstatus[$this->_kurse[$i]->getKursVarValue('kursnummer')] = $neuerStatus;

      if ($alterStatus != $neuerStatus) {
        $this->removeKursByStatus($alterStatus, $this->_kurse[$i]->getKursVarValue('kursnummer'));
        $this->addKursByStatus($neuerStatus, $this->_kurse[$i]);
      }
      
      
      if ($neuerStatus != ANMELDUNGONLINE_TECHNISCHEPROBLEME) {
        $this->_knrsToDelFromWarenkorb[] = $this->_kurse[$i]->getKursVarValue('kursnummer');
      } else {
        $this->_technischeProbleme = true;
      }
      $statParams = array_merge($statParams, $this->prepareKursStatistik($i, $neuerStatus));
    }

    
    $statParams = array_merge($statParams, $this->prepareTnStatistik($this->_tninfo->_teilnehmer, 'haupt'));
    $this->_tninfo->_weitere = array_values($this->_tninfo->_weitere); 
    for ($i = 0; $i < count($this->_tninfo->_weitere); $i++) {
      $statParams = array_merge($statParams, $this->prepareTnStatistik($this->_tninfo->_weitere[$i], 'weiter_' . ($i + 1)));
    }
    $urlparameter = new URLParameterAnmeldungArt();
    $statParams[] = new StatistikParameter('anmeldeart', $urlparameter->anmart);
    StatistikAPI::writeAnmeldung($statParams);
    if ($this->_technischeProbleme) {
      return false;
    }

    return true;
  }

  protected function prepareKursStatistik($pLfdNr, $pNeuerStatus)
  {
    
    $result = array();
    $result[] = new StatistikParameter('kursnr' . $pLfdNr, $this->_kurse[$pLfdNr]->getKursVarValue('kursnummer'));
    $result[] = new StatistikParameter('kursstatus' . $pLfdNr, $pNeuerStatus);

    return $result;
  }

  protected function prepareTnStatistik($pTn, $pKuerzel)
  {
    $result = array();
    if ($pTn->gebdat !== '') {
      $result[] = new StatistikParameter('gebdat_' . $pKuerzel, $pTn->gebdat);
    } elseif ($pTn->gebjahr !== '') {
      $result[] = new StatistikParameter('gebdat_' . $pKuerzel, DateTimeOperations::getValidDateString($pTn->gebjahr, false));
    }

    return $result;
  }

  
  public function cleanUpDmzIds()
  {
    $weitere = SessionOperations::getWeitereFromSession();
    for ($i = 1; $i <= count($weitere); $i++) {
      $varname = 'w_dmzidmehr' . $i;
      SessionOperations::setVarValueWk($varname, null);
    }
    $mitarbeiter = SessionOperations::getMitarbeiterFromSession();
    for ($i = 1; $i <= count($mitarbeiter); $i++) {
      $varname = 'w_dmzidma' . $i;
      SessionOperations::setVarValueWk($varname, null);
    }
    
  }

  public function cleanUp($pTechnischeProbleme = false)
  {
    parent::cleanUp();
    $this->cleanUpDmzIds();

    
    
    if (!$this->_technischeProbleme) {
      SessionOperations::cleanupSessionNachAnmeldung();
    }
    if (System::isEpaymentAvailable()) {
      SessionOperations::unsetEpaymentInSession();
    }
  }
}