Files
Zonneplan/app/Repositories/ZonneplanPriceRepository.php
T

52 lines
1.5 KiB
PHP

<?php
namespace App\Repositories;
use App\Contracts\PriceClient;
use App\Contracts\PriceRepository as ContractsPriceRepository;
use App\Data\ElectricityData;
use App\Data\GasData;
use Carbon\Carbon;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;
use Override;
class ZonneplanPriceRepository implements ContractsPriceRepository
{
public function __construct(
public PriceClient $client
) {}
#[Override]
public function retrieveElectricity(): Collection
{
$data = Cache::remember('electricity:upcomming', 3600, fn () => $this->client->getElectricityPrices()->toArray());
return ElectricityData::collect($data, Collection::class);
}
#[Override]
public function retrieveGas(): Collection
{
$data = Cache::remember('gas:upcomming', 3600, fn () => $this->client->getGasPrices()->toArray());
return GasData::collect($data, Collection::class);
}
#[Override]
public function retrieveElectricityForDate(Carbon $date): Collection
{
$data = Cache::remember('electricity:'.$date->format('Y-m-d'), 3600, fn () => $this->client->getElectricityPricesForDate($date)->toArray());
return GasData::collect($data, Collection::class);
}
#[Override]
public function retrieveGasForDate(Carbon $date): Collection
{
$data = Cache::remember('gas:'.$date->format('Y-m-d'), 3600, fn () => $this->client->getGasPricesForDate($date)->toArray());
return GasData::collect($data, Collection::class);
}
}