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


class TNBestaetigungByStatusHTML extends Bestaetigung
{
  public function getHeader()
  {
    Logger::logg("\nheader für HTML Bestätigung-" . $this->anmeldeart . "\n");
  }

  public function getMessage($pTNInfo)
  {
    
    Logger::logg('Nachricht für HTML Bestätigung-' . $this->anmeldeart . " (). Sicht 76 wenn Anmeldeart F ansonsten Sicht 67\n");
    $dmbasis = new DataMenuBasis(new URLParameterBasis(false));
    $dmbasis->exportadapter = new ExpTeilnehmer();
    if ($this->anmeldeart === 'F') {
      $dmbasis->getSight(76);
      $dmbasis->dataarraynodata = array($pTNInfo);

      return $dmbasis->getnodata();
    } else {
      $dmbasis->getSight(67);
      $dmbasis->dataarraynocolumn = array($pTNInfo);

      return $dmbasis->getnocolumn();
    }
  }

  

  
  public function getTNPart($pTNInfo)
  {
    Logger::logg('TN - Teil für HTML Bestätigung-' . $this->anmeldeart . " () - Sicht 67 - Header\n");
    $dmbasis = new DataMenuBasis(new URLParameterBasis(false));
    $dmbasis->getSight($this->getSightIdForTnPart($this->anmeldeart));
    $dmbasis->exportadapter = new ExpTeilnehmer();
    $dmbasis->dataarrayheader = array($pTNInfo);
    $dmbasis->dataarraybody = array($pTNInfo);
    $dmbasis->dataarrayfooter = array($pTNInfo);

    return $dmbasis->getheader() . $dmbasis->getbody() . $dmbasis->getfooter();
  }

  protected function getSightIdForTnPart($pAnmeldeart)
  {
    $result = 67;
    if ($pAnmeldeart === 'F') {
      $result = 76;
    }

    return $result;
  }

  public function getWeiterePart($pWeitere)
  {
    Logger::logg('Weitere TN für HTML Bestätigung-' . $this->anmeldeart . " ()\n");
    if (count($pWeitere) == 0) {
      return '';
    }
    $dmbasis = new DataMenuBasis(null);
    $dmbasis->initializecompletesight();
    if ($this->anmeldeart === 'K') {
      $dmbasis->getSight(182);
    } else {
      $dmbasis->getSight(181);
    }
    $dmbasis->exportadapter = new ExpTeilnehmer();
    $dmbasis->dataarraybody = $pWeitere;

    return $dmbasis->getheader() . $dmbasis->getbody() . $dmbasis->getfooter();
  }

  public function getHotelPart($pHotel)
  {
    if ($pHotel == null || $pHotel->isEmpty()) {
      return '';
    }
    Logger::logg('Hotel für HTML Bestätigung-' . $this->anmeldeart . ' ()');
    $dmbasis = new DataMenuBasis(null);
    $dmbasis->initializecompletesight();
    $dmbasis->exportadapter = new ExpHotel();
    $dmbasis->dataarraybody = array($pHotel);
    $dmbasis->getsight(183);

    return $dmbasis->getheader() . $dmbasis->getbody() . $dmbasis->getfooter();
  }

  
  public function getKursPart($pKurse, $pStatus, $pTnInfoHauptTn = null)
  {
    Logger::logg('Kurspart für HTML Bestätigung-' . $this->anmeldeart . ' () ');

    $dmbasis = new DataMenuBasis(new URLParameterBasis(false));
    $dmbasis->initializecompletesight();
    $dmbasis->exportadapter = new ExpKursuebersicht();

    switch ($pStatus) {
      case ANMELDUNGONLINE_OK: $dmbasis->getSight(204); break;
      case ANMELDUNGONLINE_OFFLINE: $dmbasis->getSight(184); break;
      case ANMELDUNGONLINE_KURSVOLL: $dmbasis->getSight(185); break;
      case ANMELDUNGONLINE_AUSFALL: $dmbasis->getSight(186);break;
      case ANMELDUNGONLINE_KNRUNGUELTIG: $dmbasis->getSight(187);break;
      case ANMELDUNGONLINE_KURSENDE: $dmbasis->getSight(188);break;
      case ANMELDUNGONLINE_ANMELDESCHLUSS: $dmbasis->getSight(189);break;
      case ANMELDUNGONLINE_ABSCHLUSS: $dmbasis->getSight(190);break;
      case ANMELDUNGONLINE_ANMELDEBEGINN: $dmbasis->getSight(517);break;
      default: $dmbasis->getSight(191);break;
    }

    $dbwkurse = new DBWorkKurse();

    $kurse = array();
    foreach ($pKurse as $kursinfo) {
      array_push($kurse, $dbwkurse->getKurs($kursinfo->getKursVarValue('kursnummer')));
    }
    $dmbasis->dataarraybody = $kurse;

    return $dmbasis->getHeader() . $dmbasis->getBody() . $dmbasis->getFooter();
  }

  public function getFooter()
  {
    Logger::logg('Footer für HTML Bestätigung-' . $this->anmeldeart . " \n");

    $dmbasis = new DataMenuBasis(new URLParameterBasis(false));
    $dmbasis->getSight(70);
    $dmbasis->exportadapter = new ExpTeilnehmer();
    $dmbasis->dataarrayfooter = array(new Datamodul());

    return $dmbasis->getfooter();
  }

  public function getBestaetigungOhneHeaderOhneFooter($pTNInfo, $pWeitere, $pHotel, $pKurse, $pMessage = '', $pHauptTnPart = '')
  {
    $text = '';
    if ($pMessage != '') {
      $text .= '<p><b>' . CleanOperations::cleanStringContainingHtml($pMessage) . '</b><br>';
    }


    if ($this->zentraleEinstellungen != null && $this->zentraleEinstellungen->bestaetigungKursVorTn == true) {
      $text .= $this->getMessage($pTNInfo);
    }

    $tnPart = $pHauptTnPart;
    $tnPart .= $this->getWeiterePart($pWeitere);
    $tnPart .= $this->getHotelPart($pHotel);
    $kursPart = '';
    foreach ($pKurse as $status => $kurse) {
      $kursPart .= $this->getKursPart($kurse, $status);
      

      
    }

    if ($this->zentraleEinstellungen != null && $this->zentraleEinstellungen->bestaetigungKursVorTn == true) {
      $text .= $kursPart . $tnPart;
    } else {
      $text .= $tnPart . $kursPart;
    }

    return $text;
  }

  public function getBestaetigung($pTNInfo, $pWeitere, $pHotel, $pKurse, $pMessage = '', $pIsCopy = false)
  {
    $text = $this->getHeader();
    $hauptTnPart = $this->getTNPart($pTNInfo);
    $text .= $this->getBestaetigungOhneHeaderOhneFooter($pTNInfo, $pWeitere, $pHotel, $pKurse, $pMessage, $hauptTnPart);
    $text .= $this->getFooter();

    return $text;
  }
}