Commit ee110a9a authored by Адлан Шамавов's avatar Адлан Шамавов
Browse files

STA-966 | Добавил контроллеры для News и другие исправления

parent f75396fd
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -24,3 +24,5 @@
/assets/vendor/
###< symfony/asset-mapper ###
/.idea
.env
.env.test
 No newline at end of file
+1 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ services:
      POSTGRES_PASSWORD: 12345
      POSTGRES_HOST_AUTH_METHOD: trust
    ports:
      - "5433:${DATABASE_PORT}"
      - "${DATABASE_PORT}:${DATABASE_PORT}"
    networks:
      - internal
  nginx:
@@ -33,8 +33,6 @@ services:
        APP_BASE_DIR: ${APP_BASE_DIR-.}
    volumes:
      - ".:/app"
    ports:
      - "9000:9000"
    restart: unless-stopped
    networks:
      - internal
+1 −1
Original line number Diff line number Diff line
@@ -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
    {
+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());
        }
    }
}
+21 −9
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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
        );
@@ -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