public function getTransactionList($merchantList = null, \DateTime $dStartDate = null, \DateTime $dEndDate = null)
{
$merchantIdMap = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
$nowDate = new \DateTime();
$dStartDate = clone $dStartDate;
$dStartDate->setTime(0, 0, 0);
$dEndDate = clone $dEndDate;
$dEndDate->setTime(23, 59, 59);
$valuesFromExport = array();
$valuesFromExport[] = new \Oara\Curl\Parameter('username', $this->_credentials["user"]);
$valuesFromExport[] = new \Oara\Curl\Parameter('password', $this->_credentials["password"]);
$valuesFromExport[] = new \Oara\Curl\Parameter('startDate', $dStartDate->format("d-M-Y"));
$valuesFromExport[] = new \Oara\Curl\Parameter('endDate', $dEndDate->format("d-M-Y"));
$transactions = array();
$urls = array();
$urls[] = new \Oara\Curl\Request('http://ws-external.afnt.co.uk/apiv1/AFFILIATES/affiliatefuture.asmx/GetTransactionListbyDate?', $valuesFromExport);
$urls[] = new \Oara\Curl\Request('http://ws-external.afnt.co.uk/apiv1/AFFILIATES/affiliatefuture.asmx/GetCancelledTransactionListbyDate?', $valuesFromExport);
$exportReport = $this->_client->get($urls);
for ($i = 0; $i < \count($urls); $i++) {
$xml = self::loadXml($exportReport[$i]);
if (isset($xml->error)) {
throw new \Exception('Error connecting with the server');
}
if (isset($xml->TransactionList)) {
foreach ($xml->TransactionList as $transaction) {
$date = new \DateTime(self::findAttribute($transaction, 'TransactionDate'));
if (isset($merchantIdMap[(int) self::findAttribute($transaction, 'ProgrammeID')]) && $date->format("Y-m-d H:i:s") >= $dStartDate->format("Y-m-d H:i:s") && $date->format("Y-m-d H:i:s") <= $dEndDate->format("Y-m-d H:i:s")) {
$obj = array();
$obj['merchantId'] = self::findAttribute($transaction, 'ProgrammeID');
$obj['date'] = $date->format("Y-m-d H:i:s");
if (self::findAttribute($transaction, 'TrackingReference') != null) {
$obj['custom_id'] = self::findAttribute($transaction, 'TrackingReference');
}
$obj['unique_id'] = self::findAttribute($transaction, 'TransactionID');
if ($i == 0) {
$interval = $date->diff($nowDate);
if ($interval->format('%a') > 5) {
$obj['status'] = \Oara\Utilities::STATUS_CONFIRMED;
} else {
$obj['status'] = \Oara\Utilities::STATUS_PENDING;
}
} else {
if ($i == 1) {
$obj['status'] = \Oara\Utilities::STATUS_DECLINED;
}
}
$obj['amount'] = \Oara\Utilities::parseDouble(self::findAttribute($transaction, 'SaleValue'));
$obj['commission'] = \Oara\Utilities::parseDouble(self::findAttribute($transaction, 'SaleCommission'));
$leadCommission = \Oara\Utilities::parseDouble(self::findAttribute($transaction, 'LeadCommission'));
if ($leadCommission != 0) {
$obj['commission'] += $leadCommission;
}
$transactions[] = $obj;
}
}
}
}
return $transactions;
}