src/DcSiteBundle/Services/MainSliderService.php line 133

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Services;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Exception;
  5. use CoreBundle\Entity\Dealer;
  6. use CoreBundle\Factory\Vehicle as VehicleFactory;
  7. use CoreBundle\Services\ImageProviderVidi;
  8. use CoreBundle\Services\MediaExtensionVidi;
  9. use DcSiteBundle\Entity\MainSlider;
  10. use Symfony\Component\DependencyInjection\ContainerInterface;
  11. class MainSliderService
  12. {
  13.     private VehicleFactory $vehicleFactory;
  14.     private ContainerInterface $container;
  15.     private EntityManagerInterface $entityManager;
  16.     private MediaExtensionVidi $mediaExtensionVidi;
  17.     private string $lang;
  18.     private bool $isMobile false;
  19.     private $slide 0;
  20.     public function __construct(
  21.         VehicleFactory $vehicleFactory,
  22.         ContainerInterface $container,
  23.         EntityManagerInterface $entityManager,
  24.         MediaExtensionVidi $mediaExtensionVidi
  25.     )
  26.     {
  27.         $this->vehicleFactory $vehicleFactory;
  28.         $this->container $container;
  29.         $this->entityManager $entityManager;
  30.         $this->mediaExtensionVidi $mediaExtensionVidi;
  31.     }
  32.     public function setLang(string $lang): MainSliderService
  33.     {
  34.         $this->lang $lang;
  35.         return $this;
  36.     }
  37.     public function setIsMobile(bool $isMobile): MainSliderService
  38.     {
  39.         $this->isMobile $isMobile;
  40.         return $this;
  41.     }
  42.     public function setSlideFirst(int $slide): MainSliderService
  43.     {
  44.         $this->slide $slide;
  45.         return $this;
  46.     }
  47.     /**
  48.      * @param Dealer $dealer
  49.      * @return array
  50.      * @throws Exception
  51.      */
  52.     public function getSlides(Dealer $dealer): array
  53.     {
  54.         $slides $this->entityManager
  55.             ->getRepository(MainSlider::class)
  56.             ->getMainSlidersByDealer($dealer);
  57.         if (empty($slides)) {
  58.             return [];
  59.         }
  60.         $arr = [];
  61.         /**
  62.          * @var $slider MainSlider
  63.          */
  64.         foreach ($slides as $key => $slider) {
  65.             $media $this->isMobile $slider->getImageMobile() : $slider->getImage();
  66.             $media ??= $slider->getImage();
  67.             if (empty($media)) {
  68.                 continue;
  69.             }
  70.             $arr[$key] = [
  71.                 'id' => $slider->getId(),
  72.                 'img' => '',
  73.                 'img_webp' => '',
  74.                 'url' => $slider->buildUrl($this->lang),
  75.                 'position' => $slider->getPosition(),
  76.                 'title' => $slider->getTitle($this->lang),
  77.                 'subTitle' => $slider->getSubTitle($this->lang),
  78.                 'btn' => $slider->getBtnFstTitle($this->lang),
  79.                 'stateTitle' => $slider->getStateTitle(),
  80.                 'stateSubTitle' => $slider->getStateSubTitle(),
  81.                 'btnSecTitle' => '',
  82.                 'btnSecUrl' => '',
  83.                 'car' => 0
  84.             ];
  85.             /**
  86.              * @var ImageProviderVidi $provider
  87.              */
  88.             $provider $this->container->get($media->getProviderName());
  89.             if (!empty($provider)) {
  90.                 $arr[$key]['img'] = $provider->generatePublicUrl($media$provider->getFormatName($media'reference'));
  91.                 $arr[$key]['img_webp'] = $provider->generatePublicUrlWebp($media$provider->getFormatName($media'reference'));
  92.             }
  93.             $title $slider->getBtnSecTitle($this->lang);
  94.             $titleUrl $slider->buildSecondUrl($this->lang);
  95.             if (!empty($title) && !empty($titleUrl)) {
  96.                 $arr[$key]['btnSecTitle'] = $title;
  97.                 $arr[$key]['btnSecUrl'] = $titleUrl;
  98.             }
  99.             if (!empty($slider->getVehicle())) {
  100.                 $vehicle $this->vehicleFactory->createByEntity($slider->getVehicle());
  101.                 $arr[$key]['car'] = !empty($vehicle) ? $vehicle->price() : 0;
  102.             }
  103.             if ($this->slide && $this->slide === $arr[$key]['position']) {
  104.                 array_unshift($arrarray_pop($arr));
  105.             }
  106.         }
  107.         return $arr;
  108.     }
  109.     public function getSlidesNew(Dealer $dealer): array
  110.     {
  111.         $slides $this->entityManager
  112.             ->getRepository(MainSlider::class)
  113.             ->getMainSlidersByDealer($dealer);
  114.         if (empty($slides)) {
  115.             return [];
  116.         }
  117.         $arr = [];
  118.         /**
  119.          * @var $slider MainSlider
  120.          */
  121.         foreach ($slides as $key => $slider) {
  122.             $arr[$key] = [
  123.                 'id' => $slider->getId(),
  124.                 'img' => $this->mediaExtensionVidi->getPath($slider->getImage(), 'reference'),
  125.                 'img_mob' => $this->mediaExtensionVidi->getPath($slider->getImageMobile(), 'reference'),
  126.                 'img_webp' => $this->mediaExtensionVidi->pathWebp($slider->getImage(), 'reference'),
  127.                 'img_webp_mob' => $this->mediaExtensionVidi->pathWebp($slider->getImageMobile(), 'reference'),
  128.                 'url' => $slider->buildUrl($this->lang),
  129.                 'position' => $slider->getPosition(),
  130.                 'title' => $slider->getTitle($this->lang),
  131.                 'subTitle' => $slider->getSubTitle($this->lang),
  132.                 'btn' => $slider->getBtnFstTitle($this->lang),
  133.                 'stateTitle' => $slider->getStateTitle(),
  134.                 'stateSubTitle' => $slider->getStateSubTitle(),
  135.                 'btnSecTitle' => $slider->getBtnSecTitle($this->lang),
  136.                 'btnSecUrl' => $slider->buildSecondUrl($this->lang),
  137.                 'car' => 0
  138.             ];
  139.             if (!empty($slider->getVehicle())) {
  140.                 $vehicle $this->vehicleFactory->createByEntity($slider->getVehicle());
  141.                 $arr[$key]['car'] = !empty($vehicle) ? $vehicle->price() : 0;
  142.             }
  143.             if ($this->slide && $this->slide === $arr[$key]['position']) {
  144.                 array_unshift($arrarray_pop($arr));
  145.             }
  146.         }
  147.         return $arr;
  148.     }
  149.     public function getSlidesNewForApi(Dealer $dealer$host): array
  150.     {
  151.         $slides $this->entityManager
  152.             ->getRepository(MainSlider::class)
  153.             ->getMainSlidersByDealer($dealer);
  154.         if (empty($slides)) {
  155.             return [];
  156.         }
  157.         $arr = [];
  158.         /**
  159.          * @var $slider MainSlider
  160.          */
  161.         foreach ($slides as $key => $slider) {
  162.             $arr[$key] = [
  163.                 'id' => $slider->getId(),
  164.                 'img' => [
  165.                     'id' => $slider->getImage() ? $slider->getImage()->getId() : null,
  166.                     'src' => $host $this->mediaExtensionVidi->getPath($slider->getImage(), 'reference'),
  167.                     'width' => $slider->getImage() ? $slider->getImage()->getWidth() : null,
  168.                     'height' => $slider->getImage() ? $slider->getImage()->getHeight() : null
  169.                 ],
  170.                 'imgMob' => [
  171.                     'id' => $slider->getImageMobile() ? $slider->getImageMobile()->getId() : null,
  172.                     'src' => $host $this->mediaExtensionVidi->getPath($slider->getImageMobile(), 'reference'),
  173.                     'width' => $slider->getImageMobile() ? $slider->getImageMobile()->getWidth() : null,
  174.                     'height' => $slider->getImageMobile() ? $slider->getImageMobile()->getHeight() : null
  175.                 ],
  176.                 'imgWebp' => [
  177.                     'id' => $slider->getImage() ? $slider->getImage()->getId() : null,
  178.                     'src' => $host $this->mediaExtensionVidi->pathWebp($slider->getImage(), 'reference'),
  179.                     'width' => $slider->getImage() ? $slider->getImage()->getWidth() : null,
  180.                     'height' => $slider->getImage() ? $slider->getImage()->getHeight() : null
  181.                 ],
  182.                 'imgWebpMob' => [
  183.                     'id' => $slider->getImageMobile() ? $slider->getImageMobile()->getId() : null,
  184.                     'src' => $host $this->mediaExtensionVidi->pathWebp($slider->getImageMobile(), 'reference'),
  185.                     'width' => $slider->getImageMobile() ? $slider->getImageMobile()->getWidth() : null,
  186.                     'height' => $slider->getImageMobile() ? $slider->getImageMobile()->getHeight() : null
  187.                 ],
  188.                 'url' => $slider->buildUrl($this->lang),
  189.                 'position' => $slider->getPosition(),
  190.                 'title' => $slider->getTitle($this->lang),
  191.                 'subTitle' => $slider->getSubTitle($this->lang),
  192.                 'btn' => $slider->getBtnFstTitle($this->lang),
  193.                 'stateTitle' => $slider->getStateTitle(),
  194.                 'stateSubTitle' => $slider->getStateSubTitle(),
  195.                 'btnSecTitle' => $slider->getBtnSecTitle($this->lang),
  196.                 'btnSecUrl' => $slider->buildSecondUrl($this->lang),
  197.                 'car' => 0
  198.             ];
  199.             if (!empty($slider->getVehicle())) {
  200.                 $vehicle $this->vehicleFactory->createByEntity($slider->getVehicle());
  201.                 $arr[$key]['car'] = !empty($vehicle) ? $vehicle->price() : 0;
  202.             }
  203.             if ($this->slide && $this->slide === $arr[$key]['position']) {
  204.                 array_unshift($arrarray_pop($arr));
  205.             }
  206.         }
  207.         return $arr;
  208.     }
  209. }