<?php

namespace App\Http\Controllers\Network\Classes;

use Carbon\Carbon;
use Exception;
use GuzzleHttp\Client;

class Boostiny implements SalesGetterApi
{
    public $client;
    public $sales;
    public $apiKey;

    public function __construct($apiKey)
    {
        $this->apiKey = $apiKey;
        $this->client = new Client();
        $this->sales = [];
    }

    public function getSales($start_days, $end_days, $page = 1)
    {
        $url = "https://api.boostiny.com/publisher/link-performance";
        $startDate = Carbon::today()->subDays($start_days)->toDateString();
        $endDate = Carbon::today()->subDays($end_days)->toDateString();
        $query = [
            'from' => $startDate,
            'to' => $endDate,
            'page' => $page,
            'limit' => 100
        ];

        try {
            $response = $this->client->get(
                $url,
                [
                    'query' => $query,
                    'headers' => ['Authorization' => $this->apiKey]
                ]
            );

            $salesResponse = json_decode($response->getBody());
            if (!$salesResponse || !isset($salesResponse->payload->data) || empty($salesResponse->payload->data)) {
                return [];
            }

            $this->sales = array_merge($this->sales, $salesResponse->payload->data);

            if ($salesResponse->payload->pagination->currentPage < $salesResponse->payload->pagination->lastPage) {
                return $this->getSales($start_days, $end_days, $page + 1);
            }

            return $this->sales;
        } catch (Exception $e) {
            return [];
        }
    }
}
