<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

class WBAnmeldung extends DataMenuBasis
{
  public $toolsettings;

  public $clickpfad = '';

  
  public $warenkorb;

  
  public $dbwWk;

  public $kurse_anmstatus;

  public function __construct($urlparameter)
  {
    parent::__construct($urlparameter);
    $this->toolsettings = ToolSettingsAPI::getToolSettings(4);
    $this->setDBWorkWarenkorb();

    
    $this->warenkorb = $this->dbwWk->getEntries();
    if (!isset($this->dataarrayheader)) {
      $this->dataarrayheader = array(new Datamodul());
    }
    if (!isset($this->dataarraybody)) {
      $this->dataarraybody = array(new Datamodul());
    }
    if (!isset($this->dataarrayfooter)) {
      $this->dataarrayfooter = array(new Datamodul());
    }
  }

  protected function setDBWorkWarenkorb()
  {
    $this->dbwWk = new DBWorkWarenkorbKurseWB();
  }

  public function shownodata()
  {
    $this->dataarraynodata = array(new Datamodul());
    DataMenuBasis::shownodata();
  }

  public function shownocolumn()
  {
    $this->dataarraynocolumn = array(new Datamodul());
    DataMenuBasis::shownocolumn();
  }

  
  public function anmeldungabschliessen()
  {
  }

  
  public function _checkStep($ziel, $geprüft = 0)
  {
  }

  
  public function content()
  {
  }

  
  public function setClickPath()
  {
    $this->clickpfad = '';
  }

  public function getClickPath()
  {
    return $this->clickpfad;
  }

  
  public static function getWBAnmeldung($pUrlparameter, $pDbwWk = null)
  {
    $toolsettings = ToolSettingsAPI::getToolSettings(4);

    if (!isset($pUrlparameter->anmart)) {
      $pUrlparameter->anmart = 0;
    }

    
    if ($pUrlparameter->anmart != ANMELDEART_URL_BERATUNGSTAGE && $pUrlparameter->anmart != ANMELDEART_URL_GRILLHUETTEN && $pUrlparameter->anmart < 10) {
      if ($toolsettings->hotel) {
        if (!$toolsettings->hotelAnmFirma) {
          return new WBAnmeldungHotel($pUrlparameter);
        } else {
          return new WBAnmeldungHotelZwei($pUrlparameter);
        }
      }
      if (DBWorkBASysSettings::isKornwestheimEbz()) {
        return new WBAnmeldungZsa($pUrlparameter);
      } elseif ($pUrlparameter->anmart == ANMELDEART_URL_FERIENPROGRAMM && DBWorkBASysSettings::isBiberachVhs()) {
        return new WBAnmeldungFpBc($pUrlparameter);
      } elseif (DBWorkBASysSettings::isInnsbruckStadt()) {
        return new WBAnmeldungInnsbruckStadt($pUrlparameter);
      }

      
      if ($toolsettings->nurerlaubteanmeldearten == 1) {
        if (!isset($pDbwWk)) {
          $pDbwWk = new DBWorkWarenkorbKurseWB();
        }
        $webflags = $pDbwWk->getWebflags();

        if ($pUrlparameter->schritt <= 1) {
          
          $zuaendern = false;
          
          switch ($webflags) {
            case \Kurs::WEBFLAG_NORMAL:
              $pUrlparameter->anmart = ANMELDEART_URL_NORMAL;
              $zuaendern = true;
              break;
            case \Kurs::WEBFLAG_FIRMA:
              if ($pUrlparameter->anmart != ANMELDEART_URL_FIRMA2) {
                $pUrlparameter->anmart = ANMELDEART_URL_FIRMA;
              }
              $zuaendern = true;
              break;
            case \Kurs::WEBFLAG_ELTERNKIND:
              $pUrlparameter->anmart = ANMELDEART_URL_ELTERNKIND;
              $zuaendern = true;
              break;
            case \Kurs::WEBFLAG_PAAR:
              $pUrlparameter->anmart = ANMELDEART_URL_PAAR;
              $zuaendern = true;
              break;
            case \Kurs::WEBFLAG_MEHRFACH:
              $pUrlparameter->anmart = ANMELDEART_URL_MEHRFACH;
              $zuaendern = true;
              break;
          }
          if ($zuaendern) {
            $url = new URLParameterAnmeldungSofort();
            
            
            
            $url->anmart = $pUrlparameter->anmart;
            $url->schritt = 2;
            $url->implodeSettings();
            $_REQUEST['urlparameter'] = $url->stream;
            $_GET['urlparameter'] = $url->stream;
            $_GET['__schritt__'] = 1;
            $pUrlparameter->schritt = 2;
          }
        }
        if (!WBAnmeldung::_isAnmartOk($pUrlparameter->anmart, $webflags) && !$toolsettings->nurnormaleanmeldearten) {
          $url = new URLParameterAnmeldungSofort();
          
          
          $url->anmart = 1;
          $url->schritt = 1;
          $url->implodeSettings();
          $_REQUEST['urlparameter'] = $url->stream;
          $pUrlparameter->anmart = 1;
          $pUrlparameter->schritt = 1;
        }
      }
      if ($toolsettings->nurnormaleanmeldearten) {
        if ($pUrlparameter->anmart != ANMELDEART_URL_NORMAL) { 
          $url = new URLParameterAnmeldungSofort();
          
          
          $url->anmart = 1;
          $url->schritt = 2;
          $url->implodeSettings();
          $_REQUEST['urlparameter'] = $url->stream;
          $pUrlparameter->schritt = 2; 
        }
        $pUrlparameter->anmart = 1;
      }

      if (System::isEpaymentAvailable()) {
        $epaySchnittStelle = WbPluginEpayment::getEpaymentMethod();
        if (!is_null($epaySchnittStelle)) {
          $pUrlparameter->payOnline = true;
          SessionOperations::setEpaymentInSession($epaySchnittStelle);
        }
      }
    }
    switch ($pUrlparameter->anmart) {
      default: $pUrlparameter->schritt = 1; 
        
      case ANMELDEART_URL_NORMAL:
        return new WBAnmeldungNormal($pUrlparameter);
        
      case ANMELDEART_URL_BERATUNGSTAGE:
        return new WBAnmeldungNormalBeratungstage($pUrlparameter);
      case 2: 
        return new WBAnmeldungFirma($pUrlparameter);
      case 3: 
        return new WBAnmeldungKinder($pUrlparameter);
      case 4: 
        return new WBAnmeldungPaar($pUrlparameter);
      case 5: 
        if (SessionOperations::getVarValueAnm('simpleweitere')) {
          
          
          return new WBAnmeldungMehrfach($pUrlparameter);
        }
        
        elseif (SPLITMEHRFACHANMELDUNG == WB_SPLITMEHRFACHANMELDUNG_FALLS_ERMAESSIGT && !SessionOperations::isSofortEinbuchenWEBAllgemein()) {
          $tns = SessionOperations::getTeilnehmerFromSession();
          $tn = $tns[0];
          if ($tn->erm_proz > 0) {
            $pUrlparameter->payOnline = false;
            if (System::isEpaymentAvailable()) {
              SessionOperations::unsetEpaymentInSession();
            }

            return new WBAnmeldungMehrfachGesplittet($pUrlparameter);
          } else {
            return new WBAnmeldungMehrfach($pUrlparameter);
          }
        } elseif (SPLITMEHRFACHANMELDUNG && !SessionOperations::isSofortEinbuchenWEBAllgemein()) {
          $pUrlparameter->payOnline = false;
          if (System::isEpaymentAvailable()) {
            SessionOperations::unsetEpaymentInSession();
          }

          return new WBAnmeldungMehrfachGesplittet($pUrlparameter);
        } else {
          return new WBAnmeldungMehrfach($pUrlparameter);
        }
        
      case 6: 
        if (!$toolsettings->hotelAnmFirma) {
          return new WBAnmeldungHotel($pUrlparameter);
        } else {
          return new WBAnmeldungHotelZwei($pUrlparameter);
        }
        
      case 7: 
        return new WBAnmeldungFirmaZwei($pUrlparameter);
      case ANMELDEART_URL_GRILLHUETTEN:
        return new WBAnmeldungNormalGrillhuetten($pUrlparameter);
      case ANMELDEART_URL_NORMALFIRMA: 
        return new WBAnmeldungNormalFirma($pUrlparameter);
      case ANMELDEART_URL_ZSA: 
        return new WBAnmeldungZsa($pUrlparameter);
      case ANMELDEART_URL_FERIENPROGRAMM: 
        return new WBAnmeldungFpBc($pUrlparameter);
      case ANMELDEART_URL_WEBSHOP:
        return new WBAnmeldungWebShop($pUrlparameter);
      case ANMELDEART_URL_FIRMAHOTEL:
        return new WBAnmeldungFirmaHotel($pUrlparameter);
      case ANMELDEART_URL_STAMMHMITFIRMA:
        return new Kufer\Web\Webbasys\Includee\Datamenu\WBAnmeldungStammhMitFirma($pUrlparameter);
    }
  }

  
  public function _buildClickString($clickVar, $anmart, $schritt, $referenz = true, $last = false, $vorgExist = true)
  {
    $pfad = '';
    if (!empty($clickVar)) {
      
      
      
      if ($vorgExist) {
        $pfad .= "   <span class='trennzeichen'> " . CleanOperations::cleanStringContainingHtml($this->toolsettings->trennzeichenKategorie) . "</span>\n";
      }

      if ($referenz) {
        
        
        $schrittback = true;
        $pfad .= "   <a class='clickadresse' href='" . CleanOperations::cleanStringForHtml(INDEXSCRIPT) . '?urlparameter='
        . CleanOperations::cleanStringForHtml($this->urlparameter->getEmptyStreamWith(
          array('kathaupt', 'anmart', 'schritt', 'schrittback'),
          array('5', $anmart, $schritt, $schrittback)
        )) . "'> " . CleanOperations::cleanStringContainingHtml($clickVar) . '</a>';
      } 
      else {
        
        
        if ($last == true) {
          $pfad .= "   <span class='clickadrbold'>" . CleanOperations::cleanStringContainingHtml($clickVar) . "</span>\n";
        } else {
          $pfad .= "   <span class='clickadresse'> " . CleanOperations::cleanStringContainingHtml($clickVar) . "</span>\n";
        }
      } 
    } 

    return $pfad;
  }

  
  public function _anmeldungbestaetigenPersonenPart()
  {
    return '';
  }

  
  public function _anmeldungbestaetigenKursPart($pKurse)
  {
    return '';
  }

  
  public function anmeldungbestaetigen()
  {
    $retour = $this->_anmeldungbestaetigenPersonenPart();

    
    $kurse = $this->getKurseFromWarenkorb();

    $retour .= $this->_anmeldungbestaetigenKursPart($kurse);

    SessionOperations::setVarValueDruck('druckversion', $retour);

    
    $retour .= $this->_anmeldungbestaetigenFusszeile();

    echo $retour;
  }

  protected function getKurseFromWarenkorb()
  {
    $result = array();
    for ($i = 0; $i < count($this->warenkorb); $i++) {
      $result[$i] = $this->warenkorb[$i]->kurs;
    }

    return $result;
  }

  protected function _anmeldungbestaetigenFusszeile()
  {
    $this->getsight(70);
    $this->exportadapter = new ExpKursuebersicht();
    $this->exportadapter->export->initiate();
    $result = $this->getheader();
    $result .= $this->getbody();

    return $result;
  }

  
  public static function _isAnmartOk($pAnmart, $pWebflag)
  {
    switch ($pAnmart) {
      default:
        return false;
      case ANMELDEART_URL_NORMAL:
        return ($pWebflag & \Kurs::WEBFLAG_NORMAL) != 0;
      case ANMELDEART_URL_FIRMA:
      case ANMELDEART_URL_FIRMA2:
        return ($pWebflag & \Kurs::WEBFLAG_FIRMA) != 0;
      case ANMELDEART_URL_ELTERNKIND:
        return ($pWebflag & \Kurs::WEBFLAG_ELTERNKIND) != 0;
      case ANMELDEART_URL_PAAR:
        return ($pWebflag & \Kurs::WEBFLAG_PAAR) != 0;
      case ANMELDEART_URL_MEHRFACH:
        return ($pWebflag & \Kurs::WEBFLAG_MEHRFACH) != 0;
      case ANMELDEART_URL_BERATUNGSTAGE:
      case ANMELDEART_URL_GRILLHUETTEN:
        return true;
    }
  }

  
  public function ePaymentStart($pUrlparameter, $teilnehmer = null)
  {
    $wbAnmEPay = WBAnmeldungEPay::getWbAnmeldungEPay($pUrlparameter);
    $wbAnmEPay->content($teilnehmer);
  }

  public function ePaymentCommit($pUrlparameter)
  {
    $wbAnmEPay = WBAnmeldungEPay::getWbAnmeldungEPay($pUrlparameter);
    $wbAnmEPay->getBasisCheckoutDetails();
  }

  public function ePaymentExecute($pUrlparameter)
  {
    $wbAnmEPay = WBAnmeldungEPay::getWbAnmeldungEPay($pUrlparameter);
    $wbAnmEPay->doBasisCheckoutPayment();
  }

  public function doSchritt99($pUrlparameter)
  {
    $wbAnmEPay = WBAnmeldungEPay::getWbAnmeldungEPay($pUrlparameter);
    $wbAnmEPay->doSchritt99();
  }

  
  public static function getBankbezeichnung($pBankart, $pIban, $pBic, $pBlz)
  {
    $bankbez = '';
    if ($pBankart == 'SEPA') {
      $bankbez = BankDatenOperations::getBankbezeichnungAnhandIban($pIban);

      if ($bankbez == '') {
        $bankbez = BankDatenOperations::getBankbezeichnungAnhandBic($pBic);
      }
    } else {
      $bankbez = BankDatenOperations::getBankbezeichnungAnhandBlz($pBlz);
    }

    return $bankbez;
  }

  
  public function isAnmeldungBzglWkOk()
  {
    return !is_null($this->warenkorb) && count($this->warenkorb) > 0;
  }

  
  public function showSpecialStatus()
  {
  }
}