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

class WBAnmeldungPaar extends WBAnmeldungWeiterePersonen
{
  public function __construct($urlparameter)
  {
    $this->anmeldeart = 4;
    parent::__construct($urlparameter);
  }

  
  public function _checkStep($ziel, $geprüft = 0)
  {
    if (!is_numeric($ziel) || $ziel <= 0) {
      $ziel = 1;
    }

    if ($ziel >= 1 && $geprüft < 1) {
      $this->step = 1;
      SessionOperations::setVarValueWk('last_validated_step', 1);
    }

    if ($ziel >= 2 && $geprüft < 2) {
      $this->step = 2;
      SessionOperations::setVarValueWk('last_validated_step', 2);
    }

    if ($ziel >= 3 && $geprüft < 3) {
      $tmpurlparam = new URLParameterAnmeldungZusatzPerson();
      
      if ($ziel == 3 && $_SERVER['REQUEST_METHOD'] == 'POST' && $tmpurlparam->addhauptperson == 1) {
        $this->getTeilnehmerFromRequest2Session();
        $this->getBelegungFromRequest2Session();
      }
      $this->getSight(62);
      if (!$this->checkEingaben()) {
        $this->step = 2;
        $this->setBackToStep(2);

        return;
      }
      $this->step = 3;
      SessionOperations::setVarValueWk('last_validated_step', 3);
    }

    
    if ($ziel >= 4 && $geprüft < 4) {
      if ($ziel == 4 && $_SERVER['REQUEST_METHOD'] == 'POST') {
        $this->getTeilnehmerFromRequest2Session('teditpa', 'pa');
        $this->getBelegungWeitererFromRequest2Session('beditpa', 'pa');
        SessionOperations::setVarValueWk('gAnzahl_Partner', 1);
      }
      $check = $this->_checkEingabenWeiterePerson('body');
      if (!$check) {
        $this->step = 3;
        $this->setBackToStep(4);

        return;
      }
      $this->step = 4;
      SessionOperations::setVarValueWk('last_validated_step', 4);
    }
    if ($ziel >= 5 && $geprüft <= 5) {
      $this->step = 5;
      SessionOperations::setVarValueWk('last_validated_step', 5);
    }

    
    if ($ziel >= 6 && $geprüft <= 6) {
      $this->step = 6;
      SessionOperations::setVarValueWk('last_validated_step', 6);
    }
    if ($ziel >= 99 && $geprüft <= 99) {
      $this->step = 99;
      SessionOperations::setVarValueWk('last_validated_step', 99);
    }
  }

  
  public function content()
  {
    SessionOperations::setVarValueAnm(ANMELDEART, ANMELDEART_INTERN_PAAR);
    $isFehlerAufgetreten
        = (count($this->pflichtfeldFehlerArray) > 0
            || count($this->formatFehlerArray) > 0);
    switch ($this->step) {
      default:
      case 1:
        





        $this->showsightcomplete(60, new ExpTeilnehmer());
        break;
      case 2: 
        $this->dataarraybody = SessionOperations::getTeilnehmerFromSession();
        if ($isFehlerAufgetreten) {
          $this->warnungpflichtfelder(62, new ExpTeilnehmer());
        } else {
          $this->showsightcomplete(62, new ExpTeilnehmer());
        }
        break;
      case 3: 
        $this->dataarraybody = SessionOperations::getPartnerFromSession();
        if (count($this->dataarraybody) == 0) {
          if ($this->toolsettings->hauptTNPflichtfelderToPartner) {
            $this->dataarraybody = array($this->getPartnerObjectFromHauptTN());
          } else {
            $this->dataarraybody = array($this->getPersonObject());
          }
        }
        if ($isFehlerAufgetreten) {
          $this->warnungpflichtfelder(66, new ExpTeilnehmer());
          break;
        } else {
          $this->showsightcomplete(66, new ExpTeilnehmer());
        }
        break;
      case 4: 
        if (isset($this->urlparameter->payOnline) && $this->urlparameter->payOnline) {
          $this->ePaymentStart($this->urlparameter);
        } else {
          $this->dataarrayheader = SessionOperations::getTeilnehmerFromSession();
          $this->anmeldungbestaetigen();
        }
        break;
      case 5: 
        if (ePaymentApi::isAnyPayonlineInSession() || (isset($this->urlparameter->payOnline) && $this->urlparameter->payOnline)) {
          $this->ePaymentCommit($this->urlparameter);
        } else {
          $this->anmeldungabschliessen();
        }
        SessionOperations::setVarValueAnm(ANMELDEART, null);
        break;
      case 6: 
        if (isset($this->urlparameter->payOnline) && $this->urlparameter->payOnline) {
          $this->ePaymentExecute($this->urlparameter);
        }
        break;
      case 99:
        if (isset($this->urlparameter->payOnline) && $this->urlparameter->payOnline) {
          $this->doSchritt99($this->urlparameter);
        }
        break;
    }
  }

  public function getPartnerObjectFromHauptTN()
  {
    $this->getSight(62);
    $check = new WBAnmeldungCheck();
    $check->vorlage = $this->sight->body;
    $pflichtfelder = $check->getPflichtFelder();
    $teilnehmerAry = SessionOperations::getTeilnehmerFromSession();
    $hauptTN = reset($teilnehmerAry);
    
    $ignorefields = array('captcha', 'vorname', 'gebjahr', 'gebdat',
        'agb',
        'datenschutz',
        'blz',
        'konto',
        'bic',
        'iban',
        'bankart',
        'bankbez',
        'kontoinhaber'
    );

    $request_tmp = $_REQUEST;
    $_REQUEST = array();

    foreach ($pflichtfelder as $pflicht) {
      if ((!in_array($pflicht, $ignorefields)) && isset($hauptTN->{$pflicht})) {
        if ($hauptTN->getVarValue($pflicht) instanceof Kommunikation) {
          $_REQUEST['teditpa_' . $pflicht] = $hauptTN->getVarValue($pflicht)->wert;
        } else {
          $_REQUEST['teditpa_' . $pflicht] = $hauptTN->getVarValue($pflicht);
        }
      }
    }

    $this->getTeilnehmerFromRequest2Session('teditpa', 'pa');
    SessionOperations::setVarValueWk('gAnzahl_Partner', 1);
    $_REQUEST = $request_tmp;

    return SessionOperations::getPartnerFromSession();
  }

  
  protected function _getSightId()
  {
    return 66;
  }

  
  protected function _getSuffix()
  {
    return 'pa';
  }

  
  protected function _getWbAnmeldungCheck()
  {
    return new WBAnmeldungCheckPartner();
  }

  
  protected function _getSightId4Freifelder()
  {
    return 429;
  }
}