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


class ASBestSingletonFactory
{
  
  public static function &getInstanceForAS($pAS, $pZentraleEinstellungen)
  {
    
    static $bestaetigungen = array();

    $logger = Logger::getInstance();
    $logger->logg("ASBestätigung für $pAS angefordert", 2);

    if (!isset($bestaetigungen[$pAS])) {
      $logger->logg("erzeuge neue ASBestätigung für Aussenstelle $pAS <br>", 2);
      $bestaetigungen[$pAS] = ASBestSingletonFactory::getNewBestForAS($pAS, $pZentraleEinstellungen);
    }

    return $bestaetigungen[$pAS];
  }

  
  public static function getNewBestForAS($pAS, $pZentraleEinstellungen)
  {
    
    $keine = $pZentraleEinstellungen->suppressASBestaetigung;
    $logger = Logger::getInstance();

    $target = $pZentraleEinstellungen->addressASBestaetigung; 
    if ($pAS != '') {
      $logger->logg(__CLASS__ . "AS eingetragen - $pAS <br>");

      $dbas = new DBWorkHLAussenstellen();
      $as = $dbas->getAussenstelleByBezeichner($pAS);
      if ($as == null) {
        
        $logger->logg('Beim Kurs ist AS ' . $pAS . ' gesetzt, die gibt es aber nicht in der Hinterlegung=> wie zentral');
      } else {
        switch ($as->webbestaetigas) {
            case 0: $logger->logg('wie zentral');
                    $keine = $pZentraleEinstellungen->suppressASBestaetigung;
                    break;
            case 1: $logger->logg('keine');
                    $keine = true;
                    break;
            case 2: $logger->logg('versenden an ');
                    $keine = false;
                    $target = $as->webbestaetigasemail;
                    break;
          }
      }
    } 

    if ($keine) {
      return new ASBestaetigungKeine();
    } else {
      return new ASBestaetigung(
        $target,
        $pZentraleEinstellungen->nurEineBestKopie,
        $pZentraleEinstellungen->infoMailMultipleContent,
        $pZentraleEinstellungen->infoMailTextContent
      );
    }
  }
}