<?php

namespace App\Http\Controllers\Network\Classes;

use GuzzleHttp\Client;
use Illuminate\Support\Facades\Log;

class DirectIntegration implements SalesGetterApi
{
    private $api_key;
    private $url;
    private $client;
    private $url_matches;

    public function __construct($api_key, $url)
    {
        $this->api_key = $api_key;
        $this->url = $url;
        $this->client = new Client();
    }

    function getSales($start_days, $end_days)
    {
        if (empty($this->url)) return [];
        $this->url_matches = [
            '@api_key@' => $this->api_key,
            '@start_date@' => date('Y-m-d', strtotime("today - {$start_days} days ")),
            '@end_date@' => date('Y-m-d', strtotime("today - {$end_days} days "))
        ];

        $headers = $this->formatHeaders();

        $this->url = $this->formatURL();

        $salesResponse = $this->client->get(
            $this->url,
            ['headers' => $headers]
        );

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

        return $sales->data ?? $sales;
    }

    private function formatHeaders()
    {
        $headers = ['Authorization' => $this->api_key];
        if (strpos($this->url, '@api_key@')) {
            unset($headers['Authorization']);
        }
        return $headers;
    }

    private function formatURL()
    {
        return str_replace(array_keys($this->url_matches), array_values($this->url_matches), $this->url);
    }
}
