<?php

namespace Medienreaktor\Courses\Service;

use GuzzleHttp\Exception\ClientException;
use Medienreaktor\Career\Domain\Model\Source;
use TYPO3\CMS\Core\Http\RequestFactory;
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Connection;

class ApiService implements SingletonInterface
{
    protected const API_ENDPOINT = "https://www.app.bbz-sad.de/api/api/v3/seminare";
    protected const API_KEY = "046F87GS98SNKL723JHG";


    public function getCourses(): ?array {


        $courses = [];
        $url = self::API_ENDPOINT;

        $courses = $this->rawApiCall($url);
//
//        usort($jobs, function($a, $b) {
//            return $a['Posting_Title'] <=> $b['Posting_Title'];
//        });


        if(!$courses){
            return null;
        }

        return $courses;
    }



    protected function rawApiCall(string $url): ?array {

        /** @var RequestFactory $requestFactory */
        $requestFactory = GeneralUtility::makeInstance(RequestFactory::class);

        $additionalOptions = [
            'headers' => ['iLearnAPIKey' => self::API_KEY]
        ];

        try {
            $response = $requestFactory->request($url, 'GET', $additionalOptions);

        } catch (ClientException $exception) {
            return null;
        }

        return json_decode($response->getBody()->getContents(), true);
    }

}