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

class EPayNotifySingletonFactory
{
  /**
   * Je nach Betriebsart muss die Notification des E-Payment-Providers auf andere Art an KuferSQL geschickt werden.
   * Hier wird die richtige Art selektiert und zurückgegeben.
   * @return \EPayNotifierEmail|\EPayNotifierDMZSofortEinbuchen|\EPayNotifierDMZ|\EPayNotifierOffOnline|\EPayNotifierDatei
   */
  public static function ermittleNotifier()
  {
    $zentraleEinstellungen = AnmeldungOperations::getZentraleEinstellungenFuerBuchung();
    $target = $zentraleEinstellungen->target;
    switch ($zentraleEinstellungen->uebermittlungsart) {
      case ANMELDUNGPER_FILE:
        return new EPayNotifierDatei($zentraleEinstellungen);
      case ANMELDUNGPER_ONLINE:
          $conInfo = DBConnectionInfo::getInstance();
          if (!$conInfo->db_replikat || (REPLIKATMITONLINEBUCHUNG && $conInfo->db_hybrid)) {
            return new EPayNotifierOffOnline($zentraleEinstellungen);
          }
          // no break
      case ANMELDUNGPER_DMZ:
        if (SessionOperations::isDmzBetrieb()) {
          if (SessionOperations::isSofortEinbuchen()) {
            return new EPayNotifierDMZSofortEinbuchen($zentraleEinstellungen);
          } else {
            return new EPayNotifierDMZ($zentraleEinstellungen);
          }
        }
        // no break
      case ANMELDUNGPER_MAIL:
      default:
        return new EPayNotifierEmail($zentraleEinstellungen);
    }
  }
}
