app/Plugin/IkusMobileApi/Controller/NewsController.php line 48

Open in your IDE?
  1. <?php
  2. namespace Plugin\IkusMobileApi\Controller;
  3. use Doctrine\ORM\NonUniqueResultException;
  4. use Eccube\Controller\AbstractController;
  5. use Plugin\IkusMobileApi\Service\NewsService;
  6. use Plugin\IkusMobileApi\Util\Paths;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class NewsController extends AbstractController
  11. {
  12.     private NewsService $newsService;
  13.     public function __construct(NewsService $newsService)
  14.     {
  15.         $this->newsService $newsService;
  16.     }
  17.     /**
  18.      * Released news API
  19.      * @Route("/api/news/released", methods={"GET"})
  20.      * @param Request $request
  21.      * @return JsonResponse
  22.      */
  23.     public function released(Request $request): JsonResponse
  24.     {
  25.         $results $this->newsService->findReleasedNews();
  26.         foreach ($results as &$result) {
  27.             if ($result['thumbnail'] !== null) {
  28.                 $result['thumbnail'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE $result['thumbnail'];
  29.             }
  30.         }
  31.         unset($result);
  32.         return $this->json($results);
  33.     }
  34.     /**
  35.      * Special API
  36.      * @Route("/api/news/special", methods={"GET"})
  37.      * @param Request $request
  38.      * @return JsonResponse
  39.      */
  40.     public function special(Request $request): JsonResponse
  41.     {
  42.         $results $this->newsService->findSpecial();
  43.         foreach ($results as &$result) {
  44.             if ($result['thumbnail'] !== null) {
  45.                 $result['thumbnail'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE $result['thumbnail'];
  46.             }
  47.         }
  48.         unset($result);
  49.         return $this->json($results);
  50.     }
  51.     /**
  52.      * News Detail API
  53.      * @Route("/api/news", methods={"GET"})
  54.      * @param Request $request
  55.      * @return JsonResponse
  56.      * @throws NonUniqueResultException
  57.      */
  58.     public function detail(Request $request): JsonResponse
  59.     {
  60.         $id $request->get('id');
  61.         $res $this->newsService->findById($id);
  62.         if ($res['thumbnail'] !== null) {
  63.             $res['thumbnail'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE $res['thumbnail'];
  64.         }
  65.         return $this->json($res);
  66.     }
  67.     /**
  68.      * Related Products API
  69.      * @Route("/api/news/relatedProducts", methods={"GET"})
  70.      * @param Request $request
  71.      * @return JsonResponse
  72.      */
  73.     public function relatedProducts(Request $request): JsonResponse
  74.     {
  75.         $id $request->get('id');
  76.         $results $this->newsService->findRelatedProducts($id);
  77.         foreach ($results as &$result) {
  78.             $result['min_price'] = intval($result['min_price']);
  79.             $result['max_price'] = intval($result['max_price']);
  80.             if ($result['image'] !== null) {
  81.                 $result['image'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE $result['image'];
  82.             }
  83.         }
  84.         unset($result);
  85.         return $this->json($results);
  86.     }
  87. }