public function getTransactionList($merchantList = null, \DateTime $dStartDate = null, \DateTime $dEndDate = null)
{
$totalTransactions = array();
$diff = $dStartDate->diff($dEndDate)->days;
$merchantIdList = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
$auxDate = clone $dStartDate;
for ($i = 0; $i <= $diff; $i++) {
$totalAuxTransactions = array();
$transactionList = $this->getSales($auxDate->format("Y-m-d"), 0, $this->_pageSize);
if ($transactionList->total > 0) {
$iteration = self::calculeIterationNumber($transactionList->total, $this->_pageSize);
$totalAuxTransactions = \array_merge($totalAuxTransactions, $transactionList->saleItems->saleItem);
for ($j = 1; $j < $iteration; $j++) {
$transactionList = $this->getSales($auxDate->format("Y-m-d"), $j, $this->_pageSize);
$totalAuxTransactions = \array_merge($totalAuxTransactions, $transactionList->saleItems->saleItem);
unset($transactionList);
\gc_collect_cycles();
}
}
$leadList = $this->_apiClient->getLeads($auxDate->format("Y-m-d"), 'trackingDate', null, null, null, 0, $this->_pageSize);
if ($leadList->total > 0) {
$iteration = self::calculeIterationNumber($leadList->total, $this->_pageSize);
$totalAuxTransactions = \array_merge($totalAuxTransactions, $leadList->leadItems->leadItem);
for ($j = 1; $j < $iteration; $j++) {
$leadList = $this->_apiClient->getLeads($auxDate->format("Y-m-d"), 'trackingDate', null, null, null, $j, $this->_pageSize);
$totalAuxTransactions = \array_merge($totalAuxTransactions, $leadList->leadItems->leadItem);
unset($leadList);
\gc_collect_cycles();
}
}
foreach ($totalAuxTransactions as $transaction) {
if ($merchantList == null || isset($merchantIdList[$transaction->program->id])) {
$obj = array();
$obj['currency'] = $transaction->currency;
if ($transaction->reviewState == 'confirmed') {
$obj['status'] = \Oara\Utilities::STATUS_CONFIRMED;
} else {
if ($transaction->reviewState == 'open' || $transaction->reviewState == 'approved') {
$obj['status'] = \Oara\Utilities::STATUS_PENDING;
} else {
if ($transaction->reviewState == 'rejected') {
$obj['status'] = \Oara\Utilities::STATUS_DECLINED;
}
}
}
if (!isset($transaction->amount) || $transaction->amount == 0) {
$obj['amount'] = $transaction->commission;
} else {
$obj['amount'] = $transaction->amount;
}
if (isset($transaction->gpps) && $transaction->gpps != null) {
foreach ($transaction->gpps->gpp as $gpp) {
if ($gpp->id == "zpar0") {
if (\strlen($gpp->_) > 150) {
$gpp->_ = \substr($gpp->_, 0, 150);
}
$obj['custom_id'] = $gpp->_;
}
}
}
if (isset($transaction->trackingCategory->_) && $transaction->trackingCategory->_ != null) {
$obj['title'] = $transaction->trackingCategory->_;
}
$obj['unique_id'] = $transaction->id;
$obj['commission'] = $transaction->commission;
$dateString = \explode(".", $transaction->trackingDate);
$dateString = \explode("+", $dateString[0]);
$transactionDate = \DateTime::createFromFormat("Y-m-d\\TH:i:s", $dateString[0]);
$obj["date"] = $transactionDate->format("Y-m-d H:i:s");
$obj['merchantId'] = $transaction->program->id;
$obj['approved'] = $transaction->reviewState == 'approved' ? true : false;
$totalTransactions[] = $obj;
}
}
unset($totalAuxTransactions);
\gc_collect_cycles();
$interval = new \DateInterval('P1D');
$auxDate->add($interval);
}
return $totalTransactions;
}