<?php declare(strict_types=1);

namespace App\Engine\Home\StaticBanners;

final readonly class HomeStaticBannersSectionProvider
{

    public const CACHE_TTL = 3600;
    public const CACHE_KEY = "HomeStaticBannersSection";

    public function __construct(
        private \App\Engine\Settings\Sections\Content\HomeStaticBannersSettingsSection $homeStaticBannersSettingsSection,
        private \Symfony\Contracts\Cache\CacheInterface                                $fileAdapterCache,
    ) {
    }

    public function provideCached(): \App\Engine\Inertia\Frontend\ViewModels\HomeStaticBannersSectionViewModel
    {
        return $this->fileAdapterCache->get(self::CACHE_KEY, function (\Symfony\Component\Cache\CacheItem $item) {
            $item->expiresAfter(self::CACHE_TTL);
            return $this->provide();
        });
    }

    public function provide(): \App\Engine\Inertia\Frontend\ViewModels\HomeStaticBannersSectionViewModel
    {
        $homeStaticBanners = $this->homeStaticBannersSettingsSection->get();
        return new \App\Engine\Inertia\Frontend\ViewModels\HomeStaticBannersSectionViewModel(
            sectionEnabled: $homeStaticBanners->sectionEnabled,
            firstBanner: new \App\Engine\Inertia\Frontend\ViewModels\HomeStaticBannerViewModel(
                title: $homeStaticBanners->firstBannerTitle,
                image: \App\Engine\Thumbnail\Thumbnail::create()
                    ->fromRelativePath($homeStaticBanners->firstBannerImage)
                    ->height(888)
                    ->width(1580)
                    ->sizeOperation(\App\Engine\Thumbnail\SizeOperation::COVER)
                    ->getPictureHtmlTag(),
                link: $homeStaticBanners->firstBannerLink,
            ),
            secondBanner: new \App\Engine\Inertia\Frontend\ViewModels\HomeStaticBannerViewModel(
                title: $homeStaticBanners->secondBannerTitle,
                image: \App\Engine\Thumbnail\Thumbnail::create()
                    ->fromRelativePath($homeStaticBanners->secondBannerImage)
                    ->height(888)
                    ->width(1580)
                    ->sizeOperation(\App\Engine\Thumbnail\SizeOperation::COVER)
                    ->getPictureHtmlTag(),
                link: $homeStaticBanners->secondBannerLink,
            ),
        );
    }

}