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

class WBAnmeldungMehrfach extends WBAnmeldungWeiterePersonen
{
  public function __construct($urlparameter)
  {
    $this->anmeldeart = 5;
    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);
    }

    
    $simpleweitere = false;

    
    if ($ziel >= 3) {
      $tmpurlparam = new URLParameterAnmeldungZusatzPerson();

      
      if (SessionOperations::getVarValueAnm('simpleweitere') == 1
              && ($tmpurlparam->addhauptperson != 1 
               || SessionOperations::GetVarValueIntern('lastRequest') === md5(implode('#', $_REQUEST)))) {
        $simpleweitere = true;
        $this->step = 4;
      }

      
      if ($geprüft < 3 && !$simpleweitere) {
        if ($ziel == 3 && $_SERVER['REQUEST_METHOD'] == 'POST' && $tmpurlparam->addhauptperson == 1) {
          $this->getTeilnehmerFromRequest2Session();
          $this->getBelegungFromRequest2Session();
          
          if (PostOperations::getVarValue('tedit_mehrfachsimpel') != '' && is_numeric(PostOperations::getVarValue('tedit_mehrfachsimpel'))
               && PostOperations::getVarValue('tedit_mehrfachsimpel') > 0) {
            SessionOperations::setVarValueAnm('simpleweitere', 1);
            SessionOperations::setVarValueWk('gAnzahl_Mehrfach', PostOperations::getVarValue('tedit_mehrfachsimpel'));
            $simpleweitere = true;
            SessionOperations::setVarValueIntern('lastRequest', md5(implode('#', $_REQUEST)));
            
          } else {
            SessionOperations::setVarValueAnm('simpleweitere', false);
          }
        }
        $this->getSight(62);
        if (!$this->checkEingaben()) {
          $this->step = 2;
          $this->setBackToStep(2);

          return;
        }
        SessionOperations::setVarValueWk('last_validated_step', 3);
      }

      if ($simpleweitere) {
        $this->step = 4;
      } else {
        
        if ((3 == $ziel && $_SERVER['REQUEST_METHOD'] == 'POST' && $tmpurlparam->addperson == 1)
          || (4 == $ziel && isset($_REQUEST['teditmehr_name']) && trim($_REQUEST['teditmehr_name']) != '')) {
          $this->getTeilnehmerFromRequest2Session('teditmehr', 'mehr');
          $this->getBelegungWeitererFromRequest2Session('beditmehr', 'mehr');
          $this->addPerson = true;
          $ziel = 3;
          $this->step = 3;
          $this->setBackToStep(3);
        } elseif ($tmpurlparam->delperson != '') {
          if (!static::$alreadyDeleted) {
            $this->delWeiterePersonFromSession(
              $tmpurlparam->delperson,
              $this->getPersonObject(),
              'gAnzahl_Mehrfach',
              'w',
              'mehr'
            );
            static::$alreadyDeleted = true;
          }
          $this->step = 3;

          return;
        }
        $check = $this->_checkEingabenWeiterePerson('footer', 'gAnzahl_Mehrfach');
        if (!$check) {
          if ($tmpurlparam->addhauptperson != 1) {
            $this->addPerson = true; 
          }
          $this->step = 3;

          return;
        }
        $this->step = 3;
        
        
      }
    }

    
    
    if ($ziel >= 4 && $geprüft <= 4) { 
      if ($simpleweitere) {
        
        $ziel = 5;
      } else {
        $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_MEHRFACH);
    $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: 
        if ($this->addPerson) {
          if ($isFehlerAufgetreten) {
            $this->warnungpflichtfelder(105, new ExpTeilnehmer());
            break;
          } else {
            $this->addWeiterePerson2Session(
              $this->getPersonObject(),
              'gAnzahl_Mehrfach',
              'w',
              'mehr'
            );
            $this->delEditPersonFromSession($this->getPersonObject(), 'w', 'mehr');
          }
        }
        
        if ($isFehlerAufgetreten
            || SessionOperations::getVarValueWk('gAnzahl_Mehrfach', 0) < 1) {
          $this->getMehrfachMenu(true);
        } else {
          $this->getMehrfachMenu();
        }
        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);
        
        SessionOperations::setVarValueAnm('simpleweitere', 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 getMehrfachMenu($pNichtWeiter = false)
  {
    $this->dataarrayheader = SessionOperations::getTeilnehmerFromSession();
    $this->dataarraybody = SessionOperations::getMehrfachPersonFromSession();
    $this->dataarrayfooter = SessionOperations::getTeilnehmerFromSession('mehr');
    $this->nrOfMainBodyElements = count($this->dataarraybody);
    $this->showsightcomplete(65, new ExpTeilnehmerRekursiv(), $pNichtWeiter);
  }

  
  protected function _getSightId()
  {
    return 65;
  }

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

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

  
  protected function _getSightId4Freifelder()
  {
    return 427;
  }
}