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


class EmailOperations
{
  
  public static function getToolEmailAddressForVhs($pEmail = '')
  {
    $valid = ValidierungWB::getInstance();

    $email = trim($pEmail);
    $toolsEmail = trim(self::getStandardToolsEmail());
    $vhsEmail = trim(self::getStandardEmail());

    if ($valid->isValidVar('email', $email) === true) {
      return $email;
    } elseif ($valid->isValidVar('email', $toolsEmail) === true) {
      return $toolsEmail;
    } else {
      return $vhsEmail;
    }
  }

  
  public static function getStandardEmail()
  {
    $allgsettings = AllgSettingsAPI::getAllgSettings();

    return $allgsettings->vhsemail;
  }

  
  public static function getStandardToolsEmail()
  {
    $pTool0Settings = ToolSettingsAPI::getToolSettings(0);

    return $pTool0Settings->vhsEmailTools;
  }

  
  public static function getVarName4ToolEmailSetting($pToolId, $pPageId, $pZusatzBGLU = '')
  {
    $vhsEmailTool = 'vhsEmailTool' . $pToolId;
    if ($pPageId !== '') {
      $vhsEmailTool .= 'Section' . $pPageId . $pZusatzBGLU;
    }

    return $vhsEmailTool;
  }

  
  public static function isValidEmail($pEmailObj)
  {
    return isset($pEmailObj) && self::isValidEmailAdresse($pEmailObj->wert);
  }

  public static function isValidEmailAdresse($emailadresse)
  {
    $validation = ValidierungBasis::getInstance();

    return $validation->isValidVar('email', $emailadresse);
  }

  
  public static function censorEMail($email)
  {
    $emailParts = explode('@', $email);
    $emailname = \StringOperations::substr_replace_char($emailParts[0], '*', 1);
    if (strrpos($emailParts[1], '.') == false) {
      $emaildomain = \StringOperations::substr_replace_char($emailParts[1], '*', 1);
    } else {
      $emaildomain = \StringOperations::substr_replace_char($emailParts[1], '*', 1, strrpos($emailParts[1], '.') - 1);
    }

    return $emailname . '@' . $emaildomain;
  }

  private static function getWeitereTeilnehmer($pKnr, $pTnInfo)
  {
    if (is_a($pTnInfo, 'TNInfoNeu')) {
      $weitere = $pTnInfo->getWeitereNeu($pKnr);
    } else {
      $weitere = $pTnInfo->_weitere;
    }

    return $weitere;
  }

  
  public static function sendEmailWegenUebertragungsproblemen($pArbeitsschritt, $pTeilnehmer, $pTNInfo, $pKursBuchung, $pEpayinfo)
  {
    $allgsettings = AllgSettingsAPI::getAllgSettings();
    if ($allgsettings->dmzErrorEmailActive) {
      $emailadr = ($allgsettings->dmzErrorEmailAddress != '') ? $allgsettings->dmzErrorEmailAddress : $allgsettings->vhsemail;

      if (!is_a($pKursBuchung, 'WeitereKursInfo')) {
        $kurs = $pKursBuchung->kurs;
      } else {
        $kurs = $pKursBuchung;
      }
      $tnrBetreff = (isset($pTeilnehmer->id) && $pTeilnehmer->id != '') ? ' (Nr.:' . $pTeilnehmer->id . ')' : '';
      $title = 'Übertragungsfehler bei der Übermittlung an KuferSQL: ' . $pTeilnehmer->vorname . ' ' . $pTeilnehmer->name . $tnrBetreff . ', Kursnummer: ' . $kurs->kursnummer;
      $content = '<p>Es gab ein <font color="#ff0000">Übertragungsproblem</font> in folgendem Arbeitsschritt: ' . $pArbeitsschritt . '.</p>';
      $content .= '<p><b>Hauptteilnehmer:</b><br>';
      $content .= \CleanOperations::cleanStringForHtml($pTeilnehmer->vorname . ' ' . $pTeilnehmer->name) . '</p>';
      $weitere = self::getWeitereTeilnehmer($kurs->kursnummer, $pTNInfo);
      $isAbw = false;
      if (count($weitere) > 0) {
        $content .= '<p><b>weitere Teilnehmer:</b><br>';
        foreach ($weitere as $weiterer) {
          $content .= \CleanOperations::cleanStringForHtml($weiterer->vorname . ' ' . $weiterer->name) . '<br>';
        }
        $content .= '</p>';
      }
      if (isset($kurs->abw_name) && ($kurs->abw_name != '')) {
        $content .= '<p><b>Abweichender Zahler:</b><br>' . \CleanOperations::cleanStringForHtml($kurs->abw_vorname . ' ' . $kurs->abw_name) . '</p>';
        $isAbw = true;
      }
      $content .= '<p><b>Kursdaten:</b><br>';
      $content .= \CleanOperations::cleanStringForHtml('Kursnummer: ' . $kurs->kursnummer) . '<br>';
      if ($kurs->kursgebuehr == 0 && $isAbw) {
        $content .= \CleanOperations::cleanStringForHtml('Kursgebühr: ' . $kurs->abw_kursgeb) . '<br>';
      } else {
        $content .= \CleanOperations::cleanStringForHtml('Kursgebühr: ' . $kurs->kursgebuehr) . '<br>';
      }
      $content .= \CleanOperations::cleanStringForHtml('Anmeldestatus: ' . $kurs->status) . '<br>';
      if (isset($kurs->zahlplan) && ($kurs->zahlplan != '')) {
        $content .= 'Zahlplan: ' . $kurs->zahlplan . '<br>';
      }
      if (isset($pEpayinfo) && $pEpayinfo != '') {
        $content .= '<font color="#ff0000">Zahlart: E-Payment';
        $content .= ' ' . SessionOperations::getVarValueAnm('epay_schnittstelle');
        $content .= '</font><br>';
      } else {
        $content .= 'Zahlart: ' . $kurs->zahlart . '<br>';
      }
      $content .= '</p>';
      $content .= '<p>Für genauere Informationen konsultieren Sie bitte die E-Mailbestätigung der Anmeldung, die Sie als Kopie erhalten, sofern Sie dies im Webadmin aktiviert haben.</p>';

      $sender = \Kufer\Mail\Sender\EMailSenderFactory::create();
      $addr = new \Kufer\Mail\Address\EMailAddress('Übertragungsfehler', $emailadr);
      $mail = new \Kufer\Mail\EMail\EMailHTML($title, $content);

      return $sender->sendFromEinrichtung($mail, array($addr), 'Übertragungsfehler')->hasSentAllMails();
    }

    return true; 
  }
}