- <?php
- namespace DcSiteBundle\Services;
- use Doctrine\ORM\EntityManagerInterface;
- use Exception;
- use CoreBundle\Entity\Dealer;
- use CoreBundle\Factory\Vehicle as VehicleFactory;
- use CoreBundle\Services\ImageProviderVidi;
- use CoreBundle\Services\MediaExtensionVidi;
- use DcSiteBundle\Entity\MainSlider;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- class MainSliderService
- {
-     private VehicleFactory $vehicleFactory;
-     private ContainerInterface $container;
-     private EntityManagerInterface $entityManager;
-     private MediaExtensionVidi $mediaExtensionVidi;
-     private string $lang;
-     private bool $isMobile = false;
-     private $slide = 0;
-     public function __construct(
-         VehicleFactory $vehicleFactory,
-         ContainerInterface $container,
-         EntityManagerInterface $entityManager,
-         MediaExtensionVidi $mediaExtensionVidi
-     )
-     {
-         $this->vehicleFactory = $vehicleFactory;
-         $this->container = $container;
-         $this->entityManager = $entityManager;
-         $this->mediaExtensionVidi = $mediaExtensionVidi;
-     }
-     public function setLang(string $lang): MainSliderService
-     {
-         $this->lang = $lang;
-         return $this;
-     }
-     public function setIsMobile(bool $isMobile): MainSliderService
-     {
-         $this->isMobile = $isMobile;
-         return $this;
-     }
-     public function setSlideFirst(int $slide): MainSliderService
-     {
-         $this->slide = $slide;
-         return $this;
-     }
-     /**
-      * @param Dealer $dealer
-      * @return array
-      * @throws Exception
-      */
-     public function getSlides(Dealer $dealer): array
-     {
-         $slides = $this->entityManager
-             ->getRepository(MainSlider::class)
-             ->getMainSlidersByDealer($dealer);
-         if (empty($slides)) {
-             return [];
-         }
-         $arr = [];
-         /**
-          * @var $slider MainSlider
-          */
-         foreach ($slides as $key => $slider) {
-             $media = $this->isMobile ? $slider->getImageMobile() : $slider->getImage();
-             $media ??= $slider->getImage();
-             if (empty($media)) {
-                 continue;
-             }
-             $arr[$key] = [
-                 'id' => $slider->getId(),
-                 'img' => '',
-                 'img_webp' => '',
-                 'url' => $slider->buildUrl($this->lang),
-                 'position' => $slider->getPosition(),
-                 'title' => $slider->getTitle($this->lang),
-                 'subTitle' => $slider->getSubTitle($this->lang),
-                 'btn' => $slider->getBtnFstTitle($this->lang),
-                 'stateTitle' => $slider->getStateTitle(),
-                 'stateSubTitle' => $slider->getStateSubTitle(),
-                 'btnSecTitle' => '',
-                 'btnSecUrl' => '',
-                 'car' => 0
-             ];
-             /**
-              * @var ImageProviderVidi $provider
-              */
-             $provider = $this->container->get($media->getProviderName());
-             if (!empty($provider)) {
-                 $arr[$key]['img'] = $provider->generatePublicUrl($media, $provider->getFormatName($media, 'reference'));
-                 $arr[$key]['img_webp'] = $provider->generatePublicUrlWebp($media, $provider->getFormatName($media, 'reference'));
-             }
-             $title = $slider->getBtnSecTitle($this->lang);
-             $titleUrl = $slider->buildSecondUrl($this->lang);
-             if (!empty($title) && !empty($titleUrl)) {
-                 $arr[$key]['btnSecTitle'] = $title;
-                 $arr[$key]['btnSecUrl'] = $titleUrl;
-             }
-             if (!empty($slider->getVehicle())) {
-                 $vehicle = $this->vehicleFactory->createByEntity($slider->getVehicle());
-                 $arr[$key]['car'] = !empty($vehicle) ? $vehicle->price() : 0;
-             }
-             if ($this->slide && $this->slide === $arr[$key]['position']) {
-                 array_unshift($arr, array_pop($arr));
-             }
-         }
-         return $arr;
-     }
-     public function getSlidesNew(Dealer $dealer): array
-     {
-         $slides = $this->entityManager
-             ->getRepository(MainSlider::class)
-             ->getMainSlidersByDealer($dealer);
-         if (empty($slides)) {
-             return [];
-         }
-         $arr = [];
-         /**
-          * @var $slider MainSlider
-          */
-         foreach ($slides as $key => $slider) {
-             $arr[$key] = [
-                 'id' => $slider->getId(),
-                 'img' => $this->mediaExtensionVidi->getPath($slider->getImage(), 'reference'),
-                 'img_mob' => $this->mediaExtensionVidi->getPath($slider->getImageMobile(), 'reference'),
-                 'img_webp' => $this->mediaExtensionVidi->pathWebp($slider->getImage(), 'reference'),
-                 'img_webp_mob' => $this->mediaExtensionVidi->pathWebp($slider->getImageMobile(), 'reference'),
-                 'url' => $slider->buildUrl($this->lang),
-                 'position' => $slider->getPosition(),
-                 'title' => $slider->getTitle($this->lang),
-                 'subTitle' => $slider->getSubTitle($this->lang),
-                 'btn' => $slider->getBtnFstTitle($this->lang),
-                 'stateTitle' => $slider->getStateTitle(),
-                 'stateSubTitle' => $slider->getStateSubTitle(),
-                 'btnSecTitle' => $slider->getBtnSecTitle($this->lang),
-                 'btnSecUrl' => $slider->buildSecondUrl($this->lang),
-                 'car' => 0
-             ];
-             if (!empty($slider->getVehicle())) {
-                 $vehicle = $this->vehicleFactory->createByEntity($slider->getVehicle());
-                 $arr[$key]['car'] = !empty($vehicle) ? $vehicle->price() : 0;
-             }
-             if ($this->slide && $this->slide === $arr[$key]['position']) {
-                 array_unshift($arr, array_pop($arr));
-             }
-         }
-         return $arr;
-     }
-     public function getSlidesNewForApi(Dealer $dealer, $host): array
-     {
-         $slides = $this->entityManager
-             ->getRepository(MainSlider::class)
-             ->getMainSlidersByDealer($dealer);
-         if (empty($slides)) {
-             return [];
-         }
-         $arr = [];
-         /**
-          * @var $slider MainSlider
-          */
-         foreach ($slides as $key => $slider) {
-             $arr[$key] = [
-                 'id' => $slider->getId(),
-                 'img' => [
-                     'id' => $slider->getImage() ? $slider->getImage()->getId() : null,
-                     'src' => $host . $this->mediaExtensionVidi->getPath($slider->getImage(), 'reference'),
-                     'width' => $slider->getImage() ? $slider->getImage()->getWidth() : null,
-                     'height' => $slider->getImage() ? $slider->getImage()->getHeight() : null
-                 ],
-                 'imgMob' => [
-                     'id' => $slider->getImageMobile() ? $slider->getImageMobile()->getId() : null,
-                     'src' => $host . $this->mediaExtensionVidi->getPath($slider->getImageMobile(), 'reference'),
-                     'width' => $slider->getImageMobile() ? $slider->getImageMobile()->getWidth() : null,
-                     'height' => $slider->getImageMobile() ? $slider->getImageMobile()->getHeight() : null
-                 ],
-                 'imgWebp' => [
-                     'id' => $slider->getImage() ? $slider->getImage()->getId() : null,
-                     'src' => $host . $this->mediaExtensionVidi->pathWebp($slider->getImage(), 'reference'),
-                     'width' => $slider->getImage() ? $slider->getImage()->getWidth() : null,
-                     'height' => $slider->getImage() ? $slider->getImage()->getHeight() : null
-                 ],
-                 'imgWebpMob' => [
-                     'id' => $slider->getImageMobile() ? $slider->getImageMobile()->getId() : null,
-                     'src' => $host . $this->mediaExtensionVidi->pathWebp($slider->getImageMobile(), 'reference'),
-                     'width' => $slider->getImageMobile() ? $slider->getImageMobile()->getWidth() : null,
-                     'height' => $slider->getImageMobile() ? $slider->getImageMobile()->getHeight() : null
-                 ],
-                 'url' => $slider->buildUrl($this->lang),
-                 'position' => $slider->getPosition(),
-                 'title' => $slider->getTitle($this->lang),
-                 'subTitle' => $slider->getSubTitle($this->lang),
-                 'btn' => $slider->getBtnFstTitle($this->lang),
-                 'stateTitle' => $slider->getStateTitle(),
-                 'stateSubTitle' => $slider->getStateSubTitle(),
-                 'btnSecTitle' => $slider->getBtnSecTitle($this->lang),
-                 'btnSecUrl' => $slider->buildSecondUrl($this->lang),
-                 'car' => 0
-             ];
-             if (!empty($slider->getVehicle())) {
-                 $vehicle = $this->vehicleFactory->createByEntity($slider->getVehicle());
-                 $arr[$key]['car'] = !empty($vehicle) ? $vehicle->price() : 0;
-             }
-             if ($this->slide && $this->slide === $arr[$key]['position']) {
-                 array_unshift($arr, array_pop($arr));
-             }
-         }
-         return $arr;
-     }
- }
-