<?php
namespace Eadesigndev\DPD\Model\Sources;

use Eadesigndev\DPD\Model\GenerateAwb;
use Eadesigndev\Urgent\Model\Sources\AbstractSource;
use Magento\Framework\HTTP\ClientInterface;
#[\AllowDynamicProperties]
class Tariff extends AbstractSource
{
    public function __construct(
        private ClientInterface $client,
        private GenerateAwb $helper
    )
    {
    }

    public function getAvailable()
    {
        $this->client->setHeaders([
            'Content-Type' => 'application/json'
        ]);

        $this->client->post( $this->helper->getApiUrl() . "services", '{ "userName": "'. $this->helper->getApiUsername() .'", "password": "'. $this->helper->getApiPassword() .'" }');
        $response = $this->client->getBody();

        if (empty($response)) {
            return [];
        }

        $response = json_decode($response, true);

        if (empty($response["services"])) {
            return [];
        }

        return $this->_toOptionArray($response["services"]);
    }

    public function _toOptionArray($items)
    {
        $returnThis = [];
        foreach ($items as $item)
        {
            $returnThis[$item["id"]] = $item["name"];
        }

        return $returnThis;
    }

    public function toOptionArray()
    {
        return $this->getAvailable();
    }
}