<?php

namespace Eurostop\Loyalty;

class LoyaltyWebServiceInterfacePlugin extends \SoapClient
{

    /**
     * @var array $classmap The defined classes
     */
    private static $classmap = array (
      'Customer' => 'Eurostop\\Loyalty\\Customer',
      'ArrayOfCustomerAccount' => 'Eurostop\\Loyalty\\ArrayOfCustomerAccount',
      'CustomerAccount' => 'Eurostop\\Loyalty\\CustomerAccount',
      'ArrayOfCustomerAddress' => 'Eurostop\\Loyalty\\ArrayOfCustomerAddress',
      'CustomerAddress' => 'Eurostop\\Loyalty\\CustomerAddress',
      'ArrayOfCustomerAttribute' => 'Eurostop\\Loyalty\\ArrayOfCustomerAttribute',
      'CustomerAttribute' => 'Eurostop\\Loyalty\\CustomerAttribute',
      'ArrayOfCustomer' => 'Eurostop\\Loyalty\\ArrayOfCustomer',
      'SubmittedCustomer' => 'Eurostop\\Loyalty\\SubmittedCustomer',
      'ArrayOfSubmittedCustomerAccount' => 'Eurostop\\Loyalty\\ArrayOfSubmittedCustomerAccount',
      'SubmittedCustomerAccount' => 'Eurostop\\Loyalty\\SubmittedCustomerAccount',
      'ArrayOfSubmittedCustomerAddress' => 'Eurostop\\Loyalty\\ArrayOfSubmittedCustomerAddress',
      'SubmittedCustomerAddress' => 'Eurostop\\Loyalty\\SubmittedCustomerAddress',
      'ArrayOfSubmittedCustomerAttribute' => 'Eurostop\\Loyalty\\ArrayOfSubmittedCustomerAttribute',
      'SubmittedCustomerAttribute' => 'Eurostop\\Loyalty\\SubmittedCustomerAttribute',
      'ArrayOfSubmittedCustomer' => 'Eurostop\\Loyalty\\ArrayOfSubmittedCustomer',
      'CustomerAttributeType' => 'Eurostop\\Loyalty\\CustomerAttributeType',
      'ArrayOfCustomerAttributeType' => 'Eurostop\\Loyalty\\ArrayOfCustomerAttributeType',
      'DataRetrievalResultOfCustomere5gmbhXd' => 'Eurostop\\Loyalty\\DataRetrievalResultOfCustomere5gmbhXd',
      'CodedRetrievedDataItemOfCustomerDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\CodedRetrievedDataItemOfCustomerDtoKJ8WzcEX',
      'RetrievedDataItemOfCustomerDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\RetrievedDataItemOfCustomerDtoKJ8WzcEX',
      'CodedRetrievedDataItemOfCustomerAccountDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\CodedRetrievedDataItemOfCustomerAccountDtoKJ8WzcEX',
      'RetrievedDataItemOfCustomerAccountDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\RetrievedDataItemOfCustomerAccountDtoKJ8WzcEX',
      'RetrievedDataItemOfCustomerAddressDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\RetrievedDataItemOfCustomerAddressDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\SubmittedDataItemOfSubmittedCustomerDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerAccountDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\SubmittedDataItemOfSubmittedCustomerAccountDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerAddressDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\SubmittedDataItemOfSubmittedCustomerAddressDtoKJ8WzcEX',
      'SubmittedDataItemOfSubmittedCustomerAttributeDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\SubmittedDataItemOfSubmittedCustomerAttributeDtoKJ8WzcEX',
      'DataSubmissionResult' => 'Eurostop\\Loyalty\\DataSubmissionResult',
      'ArrayOfValidationError' => 'Eurostop\\Loyalty\\ArrayOfValidationError',
      'ValidationError' => 'Eurostop\\Loyalty\\ValidationError',
      'DataRetrievalResultOfCustomerAttributeTypee5gmbhXd' => 'Eurostop\\Loyalty\\DataRetrievalResultOfCustomerAttributeTypee5gmbhXd',
      'CodedRetrievedDataItemOfCustomerAttributeTypeDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\CodedRetrievedDataItemOfCustomerAttributeTypeDtoKJ8WzcEX',
      'RetrievedDataItemOfCustomerAttributeTypeDtoKJ8WzcEX' => 'Eurostop\\Loyalty\\RetrievedDataItemOfCustomerAttributeTypeDtoKJ8WzcEX',
      'ArrayOfDataProcessingResult' => 'Eurostop\\Loyalty\\ArrayOfDataProcessingResult',
      'DataProcessingResult' => 'Eurostop\\Loyalty\\DataProcessingResult',
      'ArrayOfDataProcessingStatus' => 'Eurostop\\Loyalty\\ArrayOfDataProcessingStatus',
      'DataProcessingStatus' => 'Eurostop\\Loyalty\\DataProcessingStatus',
      'GetCustomerByIdentifier' => 'Eurostop\\Loyalty\\GetCustomerByIdentifier',
      'GetCustomerByIdentifierResponse' => 'Eurostop\\Loyalty\\GetCustomerByIdentifierResponse',
      'GetCustomersByAttribute' => 'Eurostop\\Loyalty\\GetCustomersByAttribute',
      'GetCustomersByAttributeResponse' => 'Eurostop\\Loyalty\\GetCustomersByAttributeResponse',
      'GetCustomersByDate' => 'Eurostop\\Loyalty\\GetCustomersByDate',
      'GetCustomersByDateResponse' => 'Eurostop\\Loyalty\\GetCustomersByDateResponse',
      'SubmitCustomer' => 'Eurostop\\Loyalty\\SubmitCustomer',
      'SubmitCustomerResponse' => 'Eurostop\\Loyalty\\SubmitCustomerResponse',
      'SubmitCustomers' => 'Eurostop\\Loyalty\\SubmitCustomers',
      'SubmitCustomersResponse' => 'Eurostop\\Loyalty\\SubmitCustomersResponse',
      'GetCustomerAttributeTypes' => 'Eurostop\\Loyalty\\GetCustomerAttributeTypes',
      'GetCustomerAttributeTypesResponse' => 'Eurostop\\Loyalty\\GetCustomerAttributeTypesResponse',
      'FlagDataProcessingToRetryByReference' => 'Eurostop\\Loyalty\\FlagDataProcessingToRetryByReference',
      'FlagDataProcessingToRetryByReferenceResponse' => 'Eurostop\\Loyalty\\FlagDataProcessingToRetryByReferenceResponse',
      'FlagDataProcessingToRetryByToken' => 'Eurostop\\Loyalty\\FlagDataProcessingToRetryByToken',
      'FlagDataProcessingToRetryByTokenResponse' => 'Eurostop\\Loyalty\\FlagDataProcessingToRetryByTokenResponse',
      'RunDataProcessingByReference' => 'Eurostop\\Loyalty\\RunDataProcessingByReference',
      'RunDataProcessingByReferenceResponse' => 'Eurostop\\Loyalty\\RunDataProcessingByReferenceResponse',
      'RunDataProcessingByToken' => 'Eurostop\\Loyalty\\RunDataProcessingByToken',
      'RunDataProcessingByTokenResponse' => 'Eurostop\\Loyalty\\RunDataProcessingByTokenResponse',
    );

    /**
     * @param array $options A array of config values
     * @param string $wsdl The wsdl file to use
     */
    public function __construct(array $options = array(), $wsdl = null)
    {
      foreach (self::$classmap as $key => $value) {
        if (!isset($options['classmap'][$key])) {
          $options['classmap'][$key] = $value;
        }
      }
      $options = array_merge(array (
      'stream_context' => NULL,
      'features' => 1,
    ), $options);
      if (!$wsdl) {
        $wsdl = 'https://retailtest.trotters.co.uk:6500/e-interface/loyalty?wsdl';
      }
      parent::__construct($wsdl, $options);
    }

    /**
     * @param GetCustomerByIdentifier $parameters
     * @return GetCustomerByIdentifierResponse
     */
    public function GetCustomerByIdentifier(GetCustomerByIdentifier $parameters)
    {
      return $this->__soapCall('GetCustomerByIdentifier', array($parameters));
    }

    /**
     * @param GetCustomersByAttribute $parameters
     * @return GetCustomersByAttributeResponse
     */
    public function GetCustomersByAttribute(GetCustomersByAttribute $parameters)
    {
      return $this->__soapCall('GetCustomersByAttribute', array($parameters));
    }

    /**
     * @param GetCustomersByDate $parameters
     * @return GetCustomersByDateResponse
     */
    public function GetCustomersByDate(GetCustomersByDate $parameters)
    {
      return $this->__soapCall('GetCustomersByDate', array($parameters));
    }

    /**
     * @param SubmitCustomer $parameters
     * @return SubmitCustomerResponse
     */
    public function SubmitCustomer(SubmitCustomer $parameters)
    {
      return $this->__soapCall('SubmitCustomer', array($parameters));
    }

    /**
     * @param SubmitCustomers $parameters
     * @return SubmitCustomersResponse
     */
    public function SubmitCustomers(SubmitCustomers $parameters)
    {
      return $this->__soapCall('SubmitCustomers', array($parameters));
    }

    /**
     * @param GetCustomerAttributeTypes $parameters
     * @return GetCustomerAttributeTypesResponse
     */
    public function GetCustomerAttributeTypes(GetCustomerAttributeTypes $parameters)
    {
      return $this->__soapCall('GetCustomerAttributeTypes', array($parameters));
    }

    /**
     * @param FlagDataProcessingToRetryByReference $parameters
     * @return FlagDataProcessingToRetryByReferenceResponse
     */
    public function FlagDataProcessingToRetryByReference(FlagDataProcessingToRetryByReference $parameters)
    {
      return $this->__soapCall('FlagDataProcessingToRetryByReference', array($parameters));
    }

    /**
     * @param FlagDataProcessingToRetryByToken $parameters
     * @return FlagDataProcessingToRetryByTokenResponse
     */
    public function FlagDataProcessingToRetryByToken(FlagDataProcessingToRetryByToken $parameters)
    {
      return $this->__soapCall('FlagDataProcessingToRetryByToken', array($parameters));
    }

    /**
     * @param RunDataProcessingByReference $parameters
     * @return RunDataProcessingByReferenceResponse
     */
    public function RunDataProcessingByReference(RunDataProcessingByReference $parameters)
    {
      return $this->__soapCall('RunDataProcessingByReference', array($parameters));
    }

    /**
     * @param RunDataProcessingByToken $parameters
     * @return RunDataProcessingByTokenResponse
     */
    public function RunDataProcessingByToken(RunDataProcessingByToken $parameters)
    {
      return $this->__soapCall('RunDataProcessingByToken', array($parameters));
    }

}
