Oara\Network\Publisher\FashionTraffic::getTransactionList PHP Метод

getTransactionList() публичный Метод

public getTransactionList ( null $merchantList = null, DateTime $dStartDate = null, DateTime $dEndDate = null ) : array
$merchantList null
$dStartDate DateTime
$dEndDate DateTime
Результат array
    public function getTransactionList($merchantList = null, \DateTime $dStartDate = null, \DateTime $dEndDate = null)
    {
        $totalTransactions = array();
        $merchantIdList = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
        $valuesFormExport = array();
        $urls = array();
        $urls[] = new \Oara\Curl\Request('http://system.fashiontraffic.com/stats/lead_report', $valuesFormExport);
        $exportReport = $this->_client->post($urls);
        $doc = new \DOMDocument();
        @$doc->loadHTML($exportReport[0]);
        $xpath = new \DOMXPath($doc);
        $results = $xpath->query('//input[@name="data[_Token][key]"]');
        foreach ($results as $values) {
            $valuesFormExport[] = new \Oara\Curl\Parameter($values->getAttribute("name"), $values->getAttribute("value"));
        }
        $results = $xpath->query('//input[@name="data[_Token][fields]"]');
        foreach ($results as $values) {
            $valuesFormExport[] = new \Oara\Curl\Parameter($values->getAttribute("name"), $values->getAttribute("value"));
        }
        $valuesFormExport[] = new \Oara\Curl\Parameter("_method", 'POST');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][page]", '');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.offer_id');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.datetime');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.ad_id');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.source');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.affiliate_info1');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.affiliate_info2');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.affiliate_info3');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.affiliate_info4');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.affiliate_info5');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.conversion_payout');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][fields][]", 'Stat.conversion_status');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][search][field]", '');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[Report][search][value]", '');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[DateRange][timezone]", 'America/New_York');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[DateRange][preset_date_range]", 'other');
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[DateRange][start_date]", $dStartDate->format("Y-m-d"));
        $valuesFormExport[] = new \Oara\Curl\Parameter("data[DateRange][end_date]", $dEndDate->format("Y-m-d"));
        $urls = array();
        $urls[] = new \Oara\Curl\Request('http://system.fashiontraffic.com/stats/lead_report', $valuesFormExport);
        $exportReport = $this->_client->post($urls);
        $csvUrl = null;
        if (\preg_match("/report:(.*).csv/", $exportReport[0], $match)) {
            $csvUrl = "http://system.fashiontraffic.com/stats/conversion_report/report:{$match[1]}.csv";
        }
        $valuesFormExport = array();
        $urls = array();
        $urls[] = new \Oara\Curl\Request($csvUrl, $valuesFormExport);
        $exportReport = $this->_client->get($urls);
        $exportData = \str_getcsv($exportReport[0], "\n");
        $num = \count($exportData);
        for ($i = 1; $i < $num; $i++) {
            $transactionExportArray = \str_getcsv($exportData[$i], ",");
            if (isset($merchantIdList[(int) $transactionExportArray[0]])) {
                $transaction = array();
                $merchantId = (int) $transactionExportArray[0];
                $transaction['merchantId'] = $merchantId;
                $transaction['date'] = $transactionExportArray[1];
                if ($transactionExportArray[5] != null) {
                    $transaction['custom_id'] = $transactionExportArray[5];
                }
                if ($transactionExportArray[10] == 'approved') {
                    $transaction['status'] = \Oara\Utilities::STATUS_CONFIRMED;
                } else {
                    if ($transactionExportArray[10] == 'rejected') {
                        $transaction['status'] = \Oara\Utilities::STATUS_DECLINED;
                    } else {
                        throw new \Exception("Status {$transactionExportArray[10]} unknown");
                    }
                }
                $transaction['amount'] = \Oara\Utilities::parseDouble($transactionExportArray[9]);
                $transaction['commission'] = \Oara\Utilities::parseDouble($transactionExportArray[9]);
                $totalTransactions[] = $transaction;
            }
        }
        return $totalTransactions;
    }