<?php 
 
declare(strict_types=1); 
 
namespace Slivki\Twig; 
 
use Slivki\Services\BannerService; 
use Slivki\Services\City\CityProvider; 
use Slivki\Services\DeviceTypeService; 
use Symfony\Component\HttpFoundation\RequestStack; 
use Twig\Extension\RuntimeExtensionInterface; 
 
final class GetCommentsBanners implements RuntimeExtensionInterface 
{ 
    private BannerService $bannerService; 
    private CityProvider $cityProvider; 
    private DeviceTypeService $deviceTypeService; 
    private RequestStack $requestStack; 
 
    public function __construct( 
        BannerService $bannerService, 
        CityProvider $cityProvider, 
        DeviceTypeService $deviceTypeService, 
        RequestStack $requestStack 
    ) { 
        $this->bannerService = $bannerService; 
        $this->cityProvider = $cityProvider; 
        $this->deviceTypeService = $deviceTypeService; 
        $this->requestStack = $requestStack; 
    } 
 
    public function getCommentsBanners(): array 
    { 
        return $this->bannerService->getCommentsBanners( 
            $this->deviceTypeService->isMobileDevice($this->requestStack->getMainRequest()), 
            $this->cityProvider->getCurrentCityId(), 
        ); 
    } 
}