<?php

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

class SperrzeitAPI
{
  
  public static function insertSperrzeit($pSperrzeit)
  {
    $allgsettings = AllgSettingsAPI::getAllgSettings();
    if (SessionOperations::isReplikat()) {
      if ($allgsettings->dmzEnabled) {
        return static::_insertSperrzeitDmz($pSperrzeit);
      } else {
        return static::_insertSperrzeitReplikat($pSperrzeit);
      }
    } else {
      return static::_insertSperrzeitDirekt($pSperrzeit);
    }
  }

  
  protected static function _insertSperrzeitDirekt($pSperrzeit)
  {
    $dbwOrtVerf = new DBWorkOrtVerf(1, true);
    $id = $dbwOrtVerf->insertSperrzeit($pSperrzeit, false);

    return $id > 0;
  }

  
  protected static function _insertSperrzeitReplikat($pSperrzeit)
  {
    $dbwOrtVerf = new DBWorkOrtVerf(1, true);
    $id = $dbwOrtVerf->insertSperrzeit($pSperrzeit, false);

    return $id > 0;
  }

  
  private static function _insertSperrzeitDmz($pSperrzeit)
  {
    try {
      $sperrzeitBvNode = XMLNode::getXMLNode($pSperrzeit, 'sperrzeit', array(), true);
      $message = new XMLNode('sperrzeiten');
      $message->addChild($sperrzeitBvNode);

      $abgleichAPI = new AbgleichAPI();
      $abgleichAPI->sendeNachricht(AbgleichAPI::ABGLEICH_SPERRZEITINSERT, new Nutzlast($message));

      self::_insertSperrzeitDirekt($pSperrzeit);

      return true;
    } catch (AbgleichApiException $aae) {
      Logger::logg('Sperrzeit einfügen - folgende Exception ist aufgetreten: ' . $aae->getMessage() . "\n" . ' [' . $aae->getTraceAsString() . ']', 200);

      return false;
    }
  }
}