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


class TNBestaetigungEMailProKurs extends TNBestaetigungEMail
{
  
  public $_multipleContent = false;
  
  public $_textContentType = false;

  public function __construct($pAnmeldeart, $pZentraleEinstellungen, $pMultipleContent = false, $pTextContentType = false)
  {
    parent::__construct($pAnmeldeart, $pZentraleEinstellungen);
    $this->_multipleContent = $pMultipleContent;
    $this->_textContentType = $pTextContentType;
  }

  
  public function getKursPart($pKurse, $pStatus, $pTnInfoHauptTn = null)
  {
    $kurs = $pKurse[0];

    if (!$kurs->darfTNBestVersenden()) {
      return '';
    }

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

    switch ($pStatus) {
      case ANMELDUNGONLINE_OK: $dmbasis->getSight(195); break;
      case ANMELDUNGONLINE_OFFLINE: $dmbasis->getSight(196); break;
      case ANMELDUNGONLINE_KURSVOLL: $dmbasis->getSight(197); break;
      case ANMELDUNGONLINE_AUSFALL: $dmbasis->getSight(198);break;
      case ANMELDUNGONLINE_KNRUNGUELTIG: $dmbasis->getSight(199);break;
      case ANMELDUNGONLINE_KURSENDE: $dmbasis->getSight(200);break;
      case ANMELDUNGONLINE_ANMELDESCHLUSS: $dmbasis->getSight(201);break;
      case ANMELDUNGONLINE_ABSCHLUSS: $dmbasis->getSight(202);break;
      case ANMELDUNGONLINE_ANMELDEBEGINN: $dmbasis->getSight(518);break;
      default: $dmbasis->getSight(203);break;
    }

    $dbwkurse = new DBWorkKurse(1);
    $kurse = array();
    array_push($kurse, $dbwkurse->getKurs($kurs->getKursVarValue('kursnummer')));
    $dmbasis->dataarraybody = $kurse;

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

  
  public function getBestaetigung($pTNInfo, $pWeitere, $pHotel, $pKurse, $pMessage = '', $pIsCopy = false)
  {
    static::$isCopy = (bool)$pIsCopy;
    $text = $this->getHeader();
    $text .= $this->getMessage($pTNInfo);
    $text .= $this->getTNPart($pTNInfo);
    $text .= $this->getWeiterePart($pWeitere);
    $text .= $this->getHotelPart($pHotel);
    $footer = $this->getFooter();
    foreach ($pKurse as $status => $kurse) {
      foreach ($kurse as $kurs) {
        
        $kurspart = $this->getKursPart(array($kurs), $status, $pTNInfo);
        if ($kurspart !== '') {
          Logger::logg('sende Bestätigung für Kurs '
                      . $kurs->getKursVarvalue('kursnummer') . ' ('
                      . $pTNInfo->getVarValue('name') . ')', 3);


          $email = new smtpMail();
          $email->SetVar2Value('to', $pTNInfo->getVarValueEx('email', 'kommunikation'));
          $email->SetVar2Value('subject', StringOperations::getBestaetigungSubject($text . $kurspart . $footer));
          $email->SetVar2Value('body', StringOperations::getBestaetigungBody($text . $kurspart . $footer));
          if ($this->_textContentType) {
            $email->SetVar2Value('contenttype', SMTP_CONTENTTYPE_TEXT);
          } else {
            $email->SetVar2Value('contenttype', SMTP_CONTENTTYPE_HTML);
          }
          $email->SetVar2Value('doNotSplitHTMLBody', !$this->_multipleContent);

          $tmpfileFilename = '';
          if ($this->zentraleEinstellungen->tnbestWithIcs && $status == ANMELDUNGONLINE_OK) {
            $settings = ToolSettingsAPI::getToolSettings(0);
            $fileUploadPath = $settings->fileUploadPath;
            if (StringOperations::substr($fileUploadPath, -1) != DIRECTORY_SEPARATOR) {
              $fileUploadPath .= DIRECTORY_SEPARATOR;
            }

            if ($kurs->getKursVarvalue('status') == 'A' || $kurs->getKursVarvalue('status') == 'T' || $kurs->getKursVarvalue('status') == 'P' || $kurs->getKursVarvalue('status') == '') {
              static $dbwkt = null;
              if (is_null($dbwkt)) {
                $dbwkt = new DBWorkKurseTage();
              }
              $kurstage = $dbwkt->getKurstagebyKursNR($kurs->getKursVarvalue('kursnummer'));

              if (count($kurstage) > 0) {
                $tmpfileFilename = IcsAPI::createIcsFile($kurstage, $fileUploadPath);
                $email->addAttachment($tmpfileFilename);
              }
            }
          }

          if ($email->sendMail()) {
            Logger::logg('sende Bestätigungskopie für Kurs '
                      . $kurs->getKursVarValue('kursnummer') . ' ('
                      . $pTNInfo->getVarValue('name') . ')' . ' Aussenstelle: '
                      . $kurs->getKursVarValue('aussenstelle'), 3);
            $kopieerfolgreich = $kurs->sendBestaetigungKopie($text . $kurspart . $footer);
            
            
            $nicht = (!$kopieerfolgreich) ? ' nicht' : '';
            LoggerAnmeldung::logg('Bestätigung für Kurs '
                      . $kurs->getKursVarValue('kursnummer') . ' erfolgreich an '
                      . $pTNInfo->getVarValueEx('email', 'kommunikation')
                      . ' versendet, Kopie' . $nicht . ' erfolgreich', 4);
          } else {
            LoggerAnmeldung::logg('Bestätigung für Kurs '
                    . $kurs->getKursVarValue('kursnummer') . ' nicht erfolgreich an '
                    . $pTNInfo->getVarValueEx('email', 'kommunikation')
                    . ' versendet', 4);
          }
          if ($tmpfileFilename != '') {
            unlink($tmpfileFilename);
          }
        }
      }
    }
    static::$isCopy = false;

    return '';
  }
}