Files
taome/modules/colissimo/lib/Request/ColissimoGenerateLabelRequest.php
2020-10-07 10:37:15 +02:00

143 lines
3.4 KiB
PHP

<?php
/**
* Class ColissimoGenerateLabelRequest
*/
class ColissimoGenerateLabelRequest extends AbstractColissimoRequest
{
const WS_TYPE = 'CURL';
const WS_PATH = '/sls-ws/SlsServiceWSRest/2.0/generateLabel?';
const WS_CONTENT_TYPE = 'application/json';
/** @var array $output */
protected $output;
/** @var array $senderAddress */
protected $senderAddress;
/** @var array $addresseeAddress */
protected $addresseeAddress;
/** @var array $shipmentOptions */
protected $shipmentOptions;
/** @var array $shipmentServices */
protected $shipmentServices;
/** @var array $customsOptions */
protected $customsOptions;
/** @var array $fields */
protected $fields;
/**
* @param array $output
* @return ColissimoGenerateLabelRequest
*/
public function setOutput($output)
{
$this->output = $output;
return $this;
}
/**
* @param array $senderAddress
* @return ColissimoGenerateLabelRequest
*/
public function setSenderAddress($senderAddress)
{
$this->senderAddress = $senderAddress;
return $this;
}
/**
* @param array $addresseeAddress
* @return ColissimoGenerateLabelRequest
*/
public function setAddresseeAddress($addresseeAddress)
{
$this->addresseeAddress = $addresseeAddress;
return $this;
}
/**
* @param array $shipmentOptions
* @return ColissimoGenerateLabelRequest
*/
public function setShipmentOptions($shipmentOptions)
{
$this->shipmentOptions = $shipmentOptions;
return $this;
}
/**
* @param array $shipmentServices
* @return ColissimoGenerateLabelRequest
*/
public function setShipmentServices($shipmentServices)
{
$this->shipmentServices = $shipmentServices;
return $this;
}
/**
* @param array $customsOptions
* @return ColissimoGenerateLabelRequest
*/
public function setCustomsOptions($customsOptions)
{
$this->customsOptions = $customsOptions;
return $this;
}
/**
* @param array $customField
* @return ColissimoGenerateLabelRequest
*/
public function addCustomField($customField)
{
foreach ($customField as $key => $field) {
$this->fields['customField'][$key] = array(
'key' => $field['key'],
'value' => $field['value'],
);
}
return $this;
}
/**
* @return mixed|void
*/
public function buildRequest()
{
$this->request['outputFormat'] = $this->output;
$this->request['letter']['service'] = $this->shipmentServices;
$this->request['letter']['parcel'] = $this->shipmentOptions;
if (!empty($this->customsOptions)) {
$this->request['letter']['customsDeclarations'] = $this->customsOptions;
}
$this->request['letter']['sender'] = $this->senderAddress;
$this->request['letter']['addressee'] = $this->addresseeAddress;
$this->request['fields'] = $this->fields;
}
/**
* @param mixed $responseHeader
* @param mixed $responseBody
* @return mixed
* @throws Exception
*/
public function buildResponse($responseHeader, $responseBody)
{
return ColissimoGenerateLabelResponse::buildFromResponse($responseHeader, $responseBody);
}
}