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

class EPayNotifierDMZ extends EPayNotifier
{
  /**
   * Trägt die Statusänderung des E-Payments per DMZ über Feature ABGLEICH_EPAY_NOTIFY
   * in die epay_notify-Tabelle von KuferSQL ein, wenn der bisherige Status pending o.Ä. war
   * und nun ein finaler Status wie z.B. success per IPN vom E-Pay-Provider an KuferWEB übermittelt wurde.
   *
   * @param \EmailXML $pEmailXml Die zu übermittelnden Informationen, die den Teilnehmer betreffen.
   * @param \EPayInfo $pEPayInfo Die zu übermittelnden das E-Payment betreffenden Informationen wie z.B. die Transaktions-ID.
   * @param array(\EmailXMLKurse) $pKurse Die zu übermittelnden Informationen über die Kurse.
   * @param string $pDateiendung Wird nicht verwendet, aber die "Schwester"-Methoden haben diesen Parameter auch.
   * @return bool Wurden die Notify-Informationen erfolgreich übermittelt?
   */
  public function doNotify($pEmailXml, $pEPayInfo, $pKurse, $pDateiendung = '.xml', $pPayonline = '')
  {
    $zentralInstanz = & DatenDMZWriter::getInstance(true);
    foreach ($pKurse as $emailxmlkurs) {
      $zentralInstanz->add($this->target, $emailxmlkurs);
    }
    $tnInfo = $this->getTnInfoFromEmailXml($pEmailXml);
    //$this->postBookHookStep1(false, $pKurse, $tnInfo, $this->_zentraleEinstellungen, null);
    //SuccessfulAry durchschauen, ob alle Kurse successful waren und dann nur einmal insgesamt true bzw. false zurückgeben.
    $successfulAry = $zentralInstanz->send($tnInfo, $pEPayInfo, -1, null, true);
    foreach ($successfulAry as $uebermittlungsstatus) {
      if (!$uebermittlungsstatus) {
        return false;
      }
    }

    return true;
    //$this->postBookHookStep2($pKurse, $tnInfo);
  }
}

/* Falls wir irgendwann auch mal einen EPayNotifierDMZBak erstellen wollen, was aber aktuell nicht viel Sinn ergibt, weil E-Pay-Infos nicht in BAK-Dateien stehen
   und das hier aber genau die entscheidenden Informationen wären:
  class EPayNotifierDMZBak extends EPayNotifierDMZ
  {
    public function postBookHookStep1($pSuccessful, $pKurse, $pTnInfo, $pZentralSettings, $pBucher) {
      $pbh = new PostBookHooks();
      foreach( $pKurse as $kurs ) {
        $pbh->postBookHookStep1BucherDMZBak(true, $kurs, $pTnInfo, AnmeldungOperations::getZentraleEinstellungenFuerBuchung(), $pBucher);
      }
    }

    public function postBookHookStep2($pKurse, $pTnInfo) {
      $pbh = new PostBookHooks();
      return $pbh->postBookHookStep2BucherDMZBak($pKurse, $pTnInfo);
    }
  }

 */
