<?php
namespace Plugin\IkusMobileApi\Controller;
use Doctrine\ORM\NonUniqueResultException;
use Eccube\Controller\AbstractController;
use Plugin\IkusMobileApi\Service\NewsService;
use Plugin\IkusMobileApi\Util\Paths;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class NewsController extends AbstractController
{
private NewsService $newsService;
public function __construct(NewsService $newsService)
{
$this->newsService = $newsService;
}
/**
* Released news API
* @Route("/api/news/released", methods={"GET"})
* @param Request $request
* @return JsonResponse
*/
public function released(Request $request): JsonResponse
{
$results = $this->newsService->findReleasedNews();
foreach ($results as &$result) {
if ($result['thumbnail'] !== null) {
$result['thumbnail'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE . $result['thumbnail'];
}
}
unset($result);
return $this->json($results);
}
/**
* Special API
* @Route("/api/news/special", methods={"GET"})
* @param Request $request
* @return JsonResponse
*/
public function special(Request $request): JsonResponse
{
$results = $this->newsService->findSpecial();
foreach ($results as &$result) {
if ($result['thumbnail'] !== null) {
$result['thumbnail'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE . $result['thumbnail'];
}
}
unset($result);
return $this->json($results);
}
/**
* News Detail API
* @Route("/api/news", methods={"GET"})
* @param Request $request
* @return JsonResponse
* @throws NonUniqueResultException
*/
public function detail(Request $request): JsonResponse
{
$id = $request->get('id');
$res = $this->newsService->findById($id);
if ($res['thumbnail'] !== null) {
$res['thumbnail'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE . $res['thumbnail'];
}
return $this->json($res);
}
/**
* Related Products API
* @Route("/api/news/relatedProducts", methods={"GET"})
* @param Request $request
* @return JsonResponse
*/
public function relatedProducts(Request $request): JsonResponse
{
$id = $request->get('id');
$results = $this->newsService->findRelatedProducts($id);
foreach ($results as &$result) {
$result['min_price'] = intval($result['min_price']);
$result['max_price'] = intval($result['max_price']);
if ($result['image'] !== null) {
$result['image'] = $request->getSchemeAndHttpHost() . Paths::UPLOAD_SAVE_IMAGE . $result['image'];
}
}
unset($result);
return $this->json($results);
}
}