Oara\Network\Publisher\AffiliNet::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();
        $merchantIdList = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
        $dEndDate->add(new \DateInterval('P1D'));
        $publisherStatisticsServiceUrl = 'https://api.affili.net/V2.0/PublisherStatistics.svc?wsdl';
        $publisherStatisticsService = new \SoapClient($publisherStatisticsServiceUrl, array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE, 'soap_version' => SOAP_1_1));
        $iterationNumber = self::calculeIterationNumber(\count($merchantIdList), 100);
        for ($currentIteration = 0; $currentIteration < $iterationNumber; $currentIteration++) {
            $merchantListSlice = \array_slice(\array_keys($merchantIdList), 100 * $currentIteration, 100);
            $merchantListAux = array();
            foreach ($merchantListSlice as $merchant) {
                $merchantListAux[] = (string) $merchant;
            }
            $params = array('StartDate' => \strtotime($dStartDate->format("Y-m-d")), 'EndDate' => \strtotime($dEndDate->format("Y-m-d")), 'TransactionStatus' => 'All', 'ProgramIds' => $merchantListAux);
            $currentPage = 1;
            $transactionList = self::affilinetCall('transaction', $publisherStatisticsService, $params, 0, $currentPage);
            while (isset($transactionList->TotalRecords) && $transactionList->TotalRecords > 0 && isset($transactionList->TransactionCollection->Transaction)) {
                $transactionCollection = array();
                if (!\is_array($transactionList->TransactionCollection->Transaction)) {
                    $transactionCollection[] = $transactionList->TransactionCollection->Transaction;
                } else {
                    $transactionCollection = $transactionList->TransactionCollection->Transaction;
                }
                foreach ($transactionCollection as $transactionObject) {
                    $transaction = array();
                    $transaction["status"] = $transactionObject->TransactionStatus;
                    $transaction["unique_id"] = $transactionObject->TransactionId;
                    $transaction["commission"] = $transactionObject->PublisherCommission;
                    $transaction["amount"] = $transactionObject->NetPrice;
                    $dateString = \explode(".", $transactionObject->RegistrationDate);
                    $transactionDate = \DateTime::createFromFormat("Y-m-d\\TH:i:s", $dateString[0]);
                    $transaction["date"] = $transactionDate->format("Y-m-d H:i:s");
                    $transaction["merchantId"] = $transactionObject->ProgramId;
                    $transaction["custom_id"] = $transactionObject->SubId;
                    if ($transaction['status'] == 'Confirmed') {
                        $transaction['status'] = \Oara\Utilities::STATUS_CONFIRMED;
                    } else {
                        if ($transaction['status'] == 'Open') {
                            $transaction['status'] = \Oara\Utilities::STATUS_PENDING;
                        } else {
                            if ($transaction['status'] == 'Cancelled') {
                                $transaction['status'] = \Oara\Utilities::STATUS_DECLINED;
                            }
                        }
                    }
                    $totalTransactions[] = $transaction;
                }
                $currentPage++;
                $transactionList = self::affilinetCall('transaction', $publisherStatisticsService, $params, 0, $currentPage);
            }
        }
        return $totalTransactions;
    }