src/WebBundle/Service/CommonDataService.php line 70

Open in your IDE?
  1. <?php
  2. namespace WebBundle\Service;
  3. use Exception;
  4. use FlexApp\Entity\CommentEntity;
  5. use FlexApp\Service\CommentablePageDataProvider;
  6. use FlexApp\Service\CurrentUserProvider;
  7. use FlexApp\Service\TranslatorWrapper;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. use Symfony\Component\Routing\RouterInterface;
  10. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  11. use WebBundle\Entity\Idea;
  12. use WebBundle\Helper\App;
  13. use WebBundle\Helper\CookieHelper;
  14. use WebBundle\Helper\LocaleHelper;
  15. use WebBundle\Helper\StrHelper;
  16. use WebBundle\Helper\UserHelper;
  17. use WebBundle\Repository\BuyOrderRepository;
  18. use WebBundle\Repository\IdeaRepository;
  19. use WebBundle\Repository\UserRepository;
  20. use WebBundle\Repository\VisitRepository;
  21. use function Symfony\Component\String\u;
  22. class CommonDataService
  23. {
  24.     /** @required */
  25.     public AuthorizationCheckerInterface $authorizationChecker;
  26.     /** @required */
  27.     public CurrentUserProvider $currentUserProvider;
  28.     /** @required */
  29.     public RouterInterface $router;
  30.     /** @required */
  31.     public TranslatorWrapper $translatorWrapper;
  32.     /** @required */
  33.     public CommentablePageDataProvider $commentablePageDataProvider;
  34.     /** @required */
  35.     public RequestStack $requestStack;
  36.     /** @required */
  37.     public LocalizationService $localizationService;
  38.     /**
  39.      * @return array
  40.      * @throws Exception
  41.      */
  42.     public function top(): array
  43.     {
  44.         /** @var IdeaRepository $repoIdea */
  45.         $repoIdea App::getContainer()->get('app.repo.idea');
  46.         /** @var BuyOrderRepository $repoBuyOrder */
  47.         $repoBuyOrder App::getContainer()->get('app.repo.order');
  48.         /** @var VisitRepository $repoVisit */
  49.         $repoVisit App::getRepository('WebBundle:Visit');
  50.         $userInfo UserHelper::getInstance();
  51.         $token $userInfo->getToken();
  52.         $user App::getCurUser();
  53.         $deviceDetect App::getContainer()->get('mobile_detect.mobile_detector.default');
  54.         $device = [
  55.             'mobile' => $deviceDetect->isMobile(),
  56.             'tablet' => $deviceDetect->isTablet(),
  57.         ];
  58.         // проверяем токен от авторизированого пользователя или нет
  59.         if (!$user && empty($_SESSION['token'])) {
  60.             /** @var UserRepository $userRepo */
  61.             $userRepo App::getRepository('WebBundle:User');
  62.             $usr $userRepo->getUserByToken($token);
  63.             if ($usr) {
  64.                 $token $userInfo->generateToken();
  65.                 $userInfo->setToken($token);
  66.                 $_SESSION['token'] = $token;
  67.             }
  68.         }
  69.         /** @var Idea $activeIdea */
  70.         $orderArticles $repoBuyOrder->getBuyOrderArticleCount($token);
  71.         $ordersCount count($repoBuyOrder->getBuyOrderCount($token));
  72.         $repoIdea->findBy(['token' => $token], ['updateDate' => 'DESC']);
  73.         $user App::getCurUser();
  74.         $userUnidChat null;
  75.         $countryList App::getCountryList();
  76.         $country App::getCurCountry();
  77.         //если страна в списке и баннер еще не был показан, показываем
  78.         $showBanner false;
  79.         if (in_array($countryexplode(' ''gb ca us it fr de es bg dk lt fi hu ee no pl nl se cz pt gr be ch at'))) {
  80.             if (!CookieHelper::get('locationBannerShown')) {
  81.                 $showBanner true;
  82.                 //ставим куки, чтобы не показывать баннер снова
  83.                 CookieHelper::set('locationBannerShown''1');
  84.             }
  85.         }
  86.         $locationBanner = [
  87.             'show' => $showBanner,
  88.             'code' => $country,
  89.         ];
  90.         $showUserLocaleDto $this->localizationService->getShowUserLocaleDto();
  91.         $showBurger = !StrHelper::isInStr($this->localizationService->getUriWithoutLocale(), 'advanced-search');
  92.         return [
  93.             'uri'             => $this->localizationService->getUriWithoutLocale(),
  94.             'userUnidChat' => $userUnidChat// unid клиента на портале
  95.             'showLocale'      => $showUserLocaleDto->isShowLocale(),
  96.             'userLocaleWas'   => $showUserLocaleDto->getUserLocaleWas(),
  97.             'userCountryWas'  => $showUserLocaleDto->getUserCountryWas(),
  98.             'userCurrencyWas' => $showUserLocaleDto->getUserCurrencyWas(),
  99.             'userMeasureWas'  => $showUserLocaleDto->getUserMeasureWas(),
  100.             'userLocale' => App::getCurLocale(),
  101.             'userCountry' => App::getCurCountry(),
  102.             'userCurrency' => LocaleHelper::getCur(),
  103.             'userMeasure' => LocaleHelper::getUserMeasure(),
  104.             'currencyList'    => LocaleHelper::getCurrencyList($showUserLocaleDto->getUserCountryWas()),
  105.             'countryList' => $countryList,
  106.             'measureList' => LocaleHelper::getMeasureList(),
  107.             'visitedAll' => $repoVisit->getVisitedAll($userInfo->getToken()),
  108.             'ideas' => $repoIdea->countByToken($token),
  109.             'orderArticlesAll' => $orderArticles,
  110.             'selectLocales'   => $this->localizationService->getSelectLocales($showUserLocaleDto),
  111.             'ordersCount' => $ordersCount,
  112.             'locationBanner' => $locationBanner,
  113.             'showBurger' => $showBurger,
  114.             'device' => $device,
  115.             'user' => [
  116.                 'name' => $user $user->getAlias() : null,
  117.                 'login' => [
  118.                     'url' => App::generateUrl('app_login'),
  119.                     'name' => App::trans('main_menu_about'),
  120.                 ],
  121.                 'reg' => [
  122.                     'url' => App::generateUrl('app_reg'),
  123.                     'name' => App::trans('main_menu_about'),
  124.                 ],
  125.                 'profile' => [
  126.                     'url' => App::generateUrl('app_user_profile'),
  127.                     'name' => App::trans('main_menu_about'),
  128.                 ],
  129.                 'logout' => [
  130.                     'url' => App::generateUrl('app_logout'),
  131.                     'name' => App::trans('main_menu_about'),
  132.                 ],
  133.             ],
  134.             'links' => [
  135.                 'logo' => [
  136.                     'url' => App::generateUrl('app_home'),
  137.                     'name' => App::trans('home_page'),
  138.                 ],
  139.                 'about' => [
  140.                     'url' => App::generateUrl('app_page', ['url' => 'about']),
  141.                     'name' => App::trans('main_menu_about'),
  142.                 ],
  143.                 'payment' => [
  144.                     'url' => App::generateUrl('app_page', ['url' => 'payment']),
  145.                     'name' => App::trans('main_menu_payment_delivery'),
  146.                 ],
  147.                 'contacts' => [
  148.                     'url' => App::generateUrl('app_page_contacts'),
  149.                     'name' => App::trans('main_menu_contacts'),
  150.                 ],
  151.             ],
  152.             'trans' => [
  153.                 'logo' => '',
  154.                 'home_page' => '',
  155.                 'left_menu_slogan' => '',
  156.                 'main' => '',
  157.                 'header' => [
  158.                     'chat' => '',
  159.                     'history' => '',
  160.                     'idea' => '',
  161.                     'order' => '',
  162.                 ],
  163.                 'header_storage_ideas_add' => '',
  164.                 'header_storage_ideas_del' => '',
  165.                 'header_storage_ideas_move' => '',
  166.                 'header_idea_list' => '',
  167.                 'collection_interior' => '',
  168.                 'collection_interiors' => '',
  169.             ],
  170.         ];
  171.     }
  172.     /**
  173.      * @return array
  174.      *
  175.      * @throws Exception
  176.      */
  177.     public function footer(): array
  178.     {
  179.         return [
  180.             'footer_short_address' => App::transReact('footer_short_address'),
  181.             'links' => [
  182.                 'privacyPolicy' => [
  183.                     'url' => App::generateUrl('app_page', ['url' => 'privacypolicy']),
  184.                     'name' => App::trans('footer_privacy'),
  185.                 ],
  186.                 'conditions' => [
  187.                     'url' => App::generateUrl('app_page', ['url' => 'conditions']),
  188.                     'name' => App::trans('footer_general_terms'),
  189.                 ],
  190.                 'about' => [
  191.                     'url' => App::generateUrl('app_page', ['url' => 'about']),
  192.                     'name' => App::trans('main_menu_about'),
  193.                 ],
  194.                 'payment' => [
  195.                     'url' => App::generateUrl('app_page', ['url' => 'payment']),
  196.                     'name' => App::trans('main_menu_payment_delivery'),
  197.                 ],
  198.                 'contacts' => [
  199.                     'url' => App::generateUrl('app_page_contacts'),
  200.                     'name' => App::trans('main_menu_contacts'),
  201.                 ],
  202.                 'improvingSite' => [
  203.                     'url' => App::generateUrl('app_page', ['url' => 'improving-site']),
  204.                     'name' => App::trans('footer_anadvice'),
  205.                 ],
  206.             ],
  207.         ];
  208.     }
  209.     public function constants(): array
  210.     {
  211.         return [
  212.             'COMMENT_QA' => CommentEntity::QA,
  213.             'COMMENT_BOTTOM' => CommentEntity::BOTTOM,
  214.         ];
  215.     }
  216.     public function userData(): array
  217.     {
  218.         return [
  219.             'isGrantedRoleAdmin' => $this->authorizationChecker->isGranted('ROLE_ADMIN'),
  220.             'isGrantedRoleCons' => $this->authorizationChecker->isGranted('ROLE_CONS'),
  221.             'userAlias' => $this->currentUserProvider->getUser() ? $this->currentUserProvider->getUser()->getAlias() : null,
  222.             'foreignAlias' => $this->currentUserProvider->getUser() ? $this->currentUserProvider->getUser()->getForeignAlias() : null,
  223.         ];
  224.     }
  225.     public function urls(): array
  226.     {
  227.         $host $this->requestStack->getCurrentRequest()->getHost();
  228.         $isJobSite u($host)->containsAny(['jobs.']);
  229.         return [
  230.             'getConsOnlineAttributeUrl' => $this->router->generate('get_cons_online_attribute', [], RouterInterface::ABSOLUTE_URL),
  231.             'appCommentSubscribeForm' => $isJobSite $this->router->generate('app_job_comment_subscribe_form', [], RouterInterface::ABSOLUTE_URL) : $this->router->generate('app_comment_subscribe_form', [], RouterInterface::ABSOLUTE_URL),
  232.             'appCommentSubscribe' => $isJobSite $this->router->generate('app_job_comment_subscribe', [], RouterInterface::ABSOLUTE_URL) : $this->router->generate('app_comment_subscribe', [], RouterInterface::ABSOLUTE_URL),
  233.         ];
  234.     }
  235.     public function trans()
  236.     {
  237.         return [
  238.             'error' => $this->translatorWrapper->translate('error'),
  239.             'subscribe' => $this->translatorWrapper->translate('subscribe'),
  240.             'subscribed_successfully' => $this->translatorWrapper->translate('subscribed_successfully'),
  241.         ];
  242.     }
  243.     public function commentablePageData()
  244.     {
  245.         return $this->commentablePageDataProvider->getCommentablePageData();
  246.     }
  247. }