Loading .gitignore +3 −1 Original line number Diff line number Diff line Loading @@ -24,3 +24,5 @@ /assets/vendor/ ###< symfony/asset-mapper ### /.idea .env .env.test No newline at end of file docker-compose.yaml +1 −3 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ services: POSTGRES_PASSWORD: 12345 POSTGRES_HOST_AUTH_METHOD: trust ports: - "5433:${DATABASE_PORT}" - "${DATABASE_PORT}:${DATABASE_PORT}" networks: - internal nginx: Loading @@ -33,8 +33,6 @@ services: APP_BASE_DIR: ${APP_BASE_DIR-.} volumes: - ".:/app" ports: - "9000:9000" restart: unless-stopped networks: - internal Loading migrations/Version20240424072545.php→migrations/Version20240426064235.php +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ final class Version20240424072545 extends AbstractMigration final class Version20240426064235 extends AbstractMigration { public function getDescription(): string { Loading src/Controller/NewsController.php 0 → 100644 +55 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace App\Controller; use App\Requests\NewsListRequest; use Exception; use App\Service\NewsService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; #[Route("/api/v1")] class NewsController extends AbstractController { public function __construct(private NewsService $newsService) {} #[Route('/news', name: 'news', methods: ['GET'])] public function news(NewsListRequest $request): Response { $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $newsCategory = $request->getRequest()->query->get('news_category'); $news = $this->newsService->getNews($page, $limit, $newsCategory); return $this->json($news); } #[Route('/news/mainNews', name: 'mainNews', methods: ['GET'])] public function mainNews(): Response { $mainNews = $this->newsService->getMainNews(); return $this->json($mainNews); } #[Route('/news/search', name: 'newsSearch', methods: ['GET'])] public function newsSearch(): Response { $newsSearch = $this->newsService->getNewsSearch(); return $this->json($newsSearch); } #[Route('/news/{newsId}', name: 'newsOne', methods: ['GET'])] public function newsOne(Request $request): Response { try { $newsId = $request->get('newsId');; $news = $this->newsService->getNewsOne($newsId); return $this->json($news); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); } } } src/Controller/RestaurantController.php +21 −9 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Controller; use App\Requests\RestaurantListRequest; use Exception; use App\Service\RestaurantService; use Nelmio\ApiDocBundle\Annotation\Model; use OpenApi\Attributes as OA; Loading @@ -13,6 +15,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; use App\Model\RestaurantList; use Symfony\Component\Serializer\SerializerInterface; #[Route("/api/v1")] class RestaurantController extends AbstractController Loading Loading @@ -46,12 +49,12 @@ class RestaurantController extends AbstractController schema: new Schema(type: "integer") )] #[Model(type: RestaurantList::class)] public function restaurants(Request $request): Response public function restaurants(RestaurantListRequest $request): Response { $page = $request->query->getInt('page'); $limit = $request->query->getInt('limit'); $restaurantTypeId = $request->query->getInt('restaurant_type_id'); $kitchenId = $request->query->getInt('kitchen_id'); $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $restaurantTypeId = $request->getRequest()->query->get('restaurant_type_id'); $kitchenId = $request->getRequest()->query->get('kitchen_id'); $restaurantsList = $this->restaurantService->getRestaurants( $page, $limit, $restaurantTypeId, $kitchenId ); Loading @@ -59,10 +62,19 @@ class RestaurantController extends AbstractController } #[Route('/restaurants/{restaurantId}', name: 'restaurant', methods: ['GET'])] public function restaurant(Request $request): Response public function restaurant(Request $request, SerializerInterface $serializer): Response { try { $restaurantId = (int)$request->get('restaurantId'); $restaurant = $this->restaurantService->getRestaurant($restaurantId); return $this->json($restaurant); $json = $serializer->serialize($restaurant, 'json', [ 'circular_reference_handler' => function ($object) { return $object->getId(); } ]); return new Response($json, Response::HTTP_OK, ['Content-Type' => 'application/json']); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); } } } Loading
.gitignore +3 −1 Original line number Diff line number Diff line Loading @@ -24,3 +24,5 @@ /assets/vendor/ ###< symfony/asset-mapper ### /.idea .env .env.test No newline at end of file
docker-compose.yaml +1 −3 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ services: POSTGRES_PASSWORD: 12345 POSTGRES_HOST_AUTH_METHOD: trust ports: - "5433:${DATABASE_PORT}" - "${DATABASE_PORT}:${DATABASE_PORT}" networks: - internal nginx: Loading @@ -33,8 +33,6 @@ services: APP_BASE_DIR: ${APP_BASE_DIR-.} volumes: - ".:/app" ports: - "9000:9000" restart: unless-stopped networks: - internal Loading
migrations/Version20240424072545.php→migrations/Version20240426064235.php +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ final class Version20240424072545 extends AbstractMigration final class Version20240426064235 extends AbstractMigration { public function getDescription(): string { Loading
src/Controller/NewsController.php 0 → 100644 +55 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace App\Controller; use App\Requests\NewsListRequest; use Exception; use App\Service\NewsService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; #[Route("/api/v1")] class NewsController extends AbstractController { public function __construct(private NewsService $newsService) {} #[Route('/news', name: 'news', methods: ['GET'])] public function news(NewsListRequest $request): Response { $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $newsCategory = $request->getRequest()->query->get('news_category'); $news = $this->newsService->getNews($page, $limit, $newsCategory); return $this->json($news); } #[Route('/news/mainNews', name: 'mainNews', methods: ['GET'])] public function mainNews(): Response { $mainNews = $this->newsService->getMainNews(); return $this->json($mainNews); } #[Route('/news/search', name: 'newsSearch', methods: ['GET'])] public function newsSearch(): Response { $newsSearch = $this->newsService->getNewsSearch(); return $this->json($newsSearch); } #[Route('/news/{newsId}', name: 'newsOne', methods: ['GET'])] public function newsOne(Request $request): Response { try { $newsId = $request->get('newsId');; $news = $this->newsService->getNewsOne($newsId); return $this->json($news); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); } } }
src/Controller/RestaurantController.php +21 −9 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Controller; use App\Requests\RestaurantListRequest; use Exception; use App\Service\RestaurantService; use Nelmio\ApiDocBundle\Annotation\Model; use OpenApi\Attributes as OA; Loading @@ -13,6 +15,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; use App\Model\RestaurantList; use Symfony\Component\Serializer\SerializerInterface; #[Route("/api/v1")] class RestaurantController extends AbstractController Loading Loading @@ -46,12 +49,12 @@ class RestaurantController extends AbstractController schema: new Schema(type: "integer") )] #[Model(type: RestaurantList::class)] public function restaurants(Request $request): Response public function restaurants(RestaurantListRequest $request): Response { $page = $request->query->getInt('page'); $limit = $request->query->getInt('limit'); $restaurantTypeId = $request->query->getInt('restaurant_type_id'); $kitchenId = $request->query->getInt('kitchen_id'); $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $restaurantTypeId = $request->getRequest()->query->get('restaurant_type_id'); $kitchenId = $request->getRequest()->query->get('kitchen_id'); $restaurantsList = $this->restaurantService->getRestaurants( $page, $limit, $restaurantTypeId, $kitchenId ); Loading @@ -59,10 +62,19 @@ class RestaurantController extends AbstractController } #[Route('/restaurants/{restaurantId}', name: 'restaurant', methods: ['GET'])] public function restaurant(Request $request): Response public function restaurant(Request $request, SerializerInterface $serializer): Response { try { $restaurantId = (int)$request->get('restaurantId'); $restaurant = $this->restaurantService->getRestaurant($restaurantId); return $this->json($restaurant); $json = $serializer->serialize($restaurant, 'json', [ 'circular_reference_handler' => function ($object) { return $object->getId(); } ]); return new Response($json, Response::HTTP_OK, ['Content-Type' => 'application/json']); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); } } }