<?php

namespace App\Http\Controllers\Network\Classes;

use Carbon\Carbon;
use Exception;
use GuzzleHttp\Client;
use Yajny\Member\Models\Network;


class CakeApi implements SalesGetterApi
{

    public $api_key;
    public $affiliate_id;
    public $website_id;
    public $client;
    public $sales;
    public $api_url;

    public function __construct($api_url, $api_key, $affiliate_id, $website_id = null)
    {
        $this->api_url = $api_url;
        $this->api_key = $api_key;
        $this->affiliate_id = $affiliate_id;
        $this->website_id = $website_id;
        $this->client = new Client();
        $this->sales = [];
    }

    public function getSales($start_days, $end_days)
    {
        $query = [
            'affiliate_id' => $this->affiliate_id,
            'api_key' => $this->api_key,
            'conversion_type' => 2,
            'offer_id' => 0,
            'start_at_row' => 1,
            'row_limit' => 0,
            'start_date' => Carbon::today()->subDays($start_days)->toDateString(),
            'end_date' => Carbon::tomorrow()->subDays($end_days)->toDateString(),
        ];

        try {
            $salesResponse = $this->client->request(
                'GET',
                $this->api_url . '/Reports/Conversions',
                [
                    'query' => $query
                ]
            );

            $sales = json_decode($salesResponse->getBody());
            if (!$sales) return [];

            return $this->sales = $sales->data;

        } catch (Exception $e) {

        }

        return [];
    }
}
