src/WebBundle/Controller/CommonController.php line 95

Open in your IDE?
  1. <?php
  2. namespace WebBundle\Controller;
  3. use Doctrine\ORM\NonUniqueResultException;
  4. use Doctrine\ORM\NoResultException;
  5. use Exception;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Security\Core\Security;
  10. use WebBundle\Helper\App;
  11. use WebBundle\Helper\LocaleHelper;
  12. use WebBundle\Helper\UserHelper;
  13. use WebBundle\Repository\BuyOrderRepository;
  14. use WebBundle\Repository\IdeaRepository;
  15. use WebBundle\Repository\UserRepository;
  16. use WebBundle\Repository\VisitRepository;
  17. use WebBundle\Service\LocalizationService;
  18. use WebBundle\Service\RequestService;
  19. class CommonController extends ExtendedController
  20. {
  21.     /** @required */
  22.     public RequestService $requestService;
  23.     private UserRepository $userRepository;
  24.     private VisitRepository $visitRepository;
  25.     private IdeaRepository $ideaRepository;
  26.     private BuyOrderRepository $buyOrderRepository;
  27.     private LocalizationService $localizationService;
  28.     /**
  29.      * OrderService constructor.
  30.      *
  31.      * @param UserRepository $userRepository
  32.      * @param VisitRepository $visitRepository
  33.      * @param IdeaRepository $ideaRepository
  34.      * @param BuyOrderRepository $buyOrderRepository
  35.      * @param LocalizationService $localizationService
  36.      * @throws Exception
  37.      */
  38.     public function __construct(
  39.         UserRepository $userRepository,
  40.         VisitRepository $visitRepository,
  41.         IdeaRepository $ideaRepository,
  42.         BuyOrderRepository $buyOrderRepository,
  43.         LocalizationService $localizationService
  44.     ) {
  45.         parent::__construct();
  46.         $this->userRepository $userRepository;
  47.         $this->visitRepository $visitRepository;
  48.         $this->ideaRepository $ideaRepository;
  49.         $this->buyOrderRepository $buyOrderRepository;
  50.         $this->localizationService $localizationService;
  51.     }
  52.     /**
  53.      * Авторизация
  54.      * @param Request $request
  55.      * @return Response
  56.      */
  57.     public function loginAction(Request $request): Response
  58.     {
  59.         if ($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
  60.             return $this->redirectToRoute('app_home');
  61.         }
  62.         $session $request->getSession();
  63.         // получить ошибки логина, если таковые имеются
  64.         if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
  65.             $error $request->attributes->get(Security::AUTHENTICATION_ERROR);
  66.         } else {
  67.             $error $session->get(Security::AUTHENTICATION_ERROR);
  68.         }
  69.         return $this->render(
  70.             '@Web/Common/login.html.twig',
  71.             [
  72.                 // имя, введённое пользователем в последний раз
  73.                 'last_username' => $session->get(Security::LAST_USERNAME),
  74.                 'error' => $error,
  75.                 'url' => empty($_SERVER['HTTP_REFERER']) ? '/' $_SERVER['HTTP_REFERER'],
  76.             ]
  77.         );
  78.     }
  79.     /**
  80.      * @param Request $request
  81.      * @return Response
  82.      * @throws NoResultException
  83.      * @throws NonUniqueResultException
  84.      */
  85.     public function topAction(Request $request): Response
  86.     {
  87.         $userInfo UserHelper::getInstance();
  88.         $token $userInfo->getToken();
  89.         $user $this->getUser();
  90.         // проверяем токен от авторизированного пользователя или нет
  91.         if (!$user && empty($_SESSION['token'])) {
  92.             $usr $this->userRepository->getUserByToken($token);
  93.             if ($usr) {
  94.                 $token $userInfo->generateToken();
  95.                 $userInfo->setToken($token);
  96.                 $_SESSION['token'] = $token;
  97.             }
  98.         }
  99.         $orderArticles $this->buyOrderRepository->getBuyOrderArticleCount($token);
  100.         $ordersCount count($this->buyOrderRepository->getBuyOrderCount($token));
  101.         $user App::getCurUser();
  102.         $userUnidChat null;
  103.         $countryList App::getCountryList();
  104.         $showUserLocaleDto $this->localizationService->getShowUserLocaleDto();
  105.         $data = [
  106.             'locale' => App::getCurLocale(true),
  107.             'uri' => $this->localizationService->getUriWithoutLocale(),
  108.             'unreadAll' => 0//количество не прочитанных
  109.             'userUnidChat' => $userUnidChat// unid клиента на портале
  110.             'showLocale' => $showUserLocaleDto->isShowLocale(),
  111.             'userLocaleWas' => $showUserLocaleDto->getUserLocaleWas(),
  112.             'userCountryWas' => $showUserLocaleDto->getUserCountryWas(),
  113.             'userCurrencyWas' => $showUserLocaleDto->getUserCurrencyWas(),
  114.             'userMeasureWas' => $showUserLocaleDto->getUserMeasureWas(),
  115.             'currencyList' => LocaleHelper::getCurrencyList($showUserLocaleDto->getUserCountryWas()),
  116.             'countryList' => $countryList,
  117.             'measureList' => LocaleHelper::getMeasureList(),
  118.             'visitedAll' => $this->visitRepository->getVisitedAll($userInfo->getToken()),
  119.             'user' => $user,
  120.             'ideas' => $this->ideaRepository->countByToken($token),
  121.             'orderArticlesAll' => $orderArticles,
  122.             'selectLocales' => $this->localizationService->getSelectLocales($showUserLocaleDto),
  123.             'ordersCount' => $ordersCount,
  124.         ];
  125.         $response $this->render('@Web/Common/top.html.twig'$data);
  126.         $response->setSharedMaxAge(0);
  127.         return $response;
  128.     }
  129.     /**
  130.      * @param Request $request
  131.      * @return JsonResponse
  132.      */
  133.     public function setLocalizationAction(Request $request): JsonResponse
  134.     {
  135.         $newUrl $this->localizationService->setLocalizationAndGetUrlForRedirect($request);
  136.         return new JsonResponse([
  137.             'res' => 'ok',
  138.             'url' => $newUrl,
  139.         ]);
  140.     }
  141.     /**
  142.      * Запрос с сайта
  143.      * @param Request $request
  144.      * @param         $action
  145.      * @return JsonResponse|Response
  146.      * @throws Exception
  147.      */
  148.     public function requestAction(Request $request$action)
  149.     {
  150.         if ($action == 'send') {
  151.             try {
  152.                 $this->requestService->send();
  153.             } catch (Exception $e) {
  154.                 App::getLogger()->error('SITE REQUEST(action==send) - failed with message: ' $e->getMessage()
  155.                     . ', in file: ' $e->getFile()
  156.                     . ', line: ' $e->getLine()
  157.                 );
  158.                 return new JsonResponse($this->requestService->getErrors(), 400);
  159.             }
  160.             return new JsonResponse($this->get('translator')->trans('request_send_ok'));
  161.         }
  162.         if ($action == 'get') {
  163.             $ip $request->getClientIp();
  164.             return $this->render('@Web/Common/request.html.twig', ['ip' => $ip]);
  165.         }
  166.         return new Response(json_encode(['status' => 0'error' => ['Не известная команда']]));
  167.     }
  168. }