Oara\Network\Publisher\Zanox::getTransactionList PHP Method

getTransactionList() public method

public getTransactionList ( null $merchantList = null, DateTime $dStartDate = null, DateTime $dEndDate = null ) : array
$merchantList null
$dStartDate DateTime
$dEndDate DateTime
return array
    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;
    }