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

STA-966 | Правки

parent 92a80b0d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ APP_SECRET=ea3ebbf899855d483050e0d1aad6a759
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
DATABASE_URL="postgresql://postgres:12345@127.0.0.1:5433/postgres?serverVersion=16&charset=utf8"
DATABASE_URL="postgresql://postgres:12345@postgres/postgres?serverVersion=16&charset=utf8"
###< doctrine/doctrine-bundle ###

###> symfony/messenger ###
+8 −10
Original line number Diff line number Diff line
@@ -4,8 +4,8 @@ declare(strict_types=1);

namespace App\Controller;

use App\Exception\NewsNotFoundException;
use App\Requests\NewsListRequest;
use Exception;
use App\Service\NewsService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
@@ -20,11 +20,7 @@ class NewsController extends AbstractController
    #[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);
        return $this->json($this->newsService->getNewsByRequest($request));
    }

    #[Route('/news/mainNews', name: 'mainNews', methods: ['GET'])]
@@ -45,11 +41,13 @@ class NewsController extends AbstractController
    public function newsOne(Request $request): Response
    {
        try {
            $newsId = $request->get('newsId');;
            $news = $this->newsService->getNewsOne($newsId);
            $news = $this->newsService->getNewsOneByRequest($request);
            return $this->json($news);
        } catch (Exception $e) {
            return new Response($e->getMessage(), $e->getCode());
        } catch (NewsNotFoundException $e) {
            return $this->json([
                'success' => false,
                'message' => $e->getMessage(),
            ], $e->getCode());
        }
    }
}
+13 −51
Original line number Diff line number Diff line
@@ -4,18 +4,13 @@ declare(strict_types=1);

namespace App\Controller;

use App\Exception\RestaurantNotFoundException;
use App\Requests\RestaurantListRequest;
use Exception;
use App\Service\RestaurantService;
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Attributes as OA;
use OpenApi\Attributes\Schema;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
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
@@ -23,58 +18,25 @@ class RestaurantController extends AbstractController
    public function __construct(private RestaurantService $restaurantService) {}

    #[Route('/restaurants', name: 'restaurants', methods: ['GET'])]
    #[OA\Response(response: 200, description: "Листинг ресторанов")]
    #[OA\Parameter(
         name: "page",
         description: "Номер страницы",
         in: "query",
         schema: new Schema(type: "integer", default: 1, example: 1)
    )]
    #[OA\Parameter(
        name: "limit",
        description: "Лимит",
        in: "query",
        schema: new Schema(type: "integer", default: 12, example: 12)
    )]
    #[OA\Parameter(
        name: "restaurant_type_id",
        description: "Идентификатор типа ресторанов",
        in: "query",
        schema: new Schema(type: "integer")
    )]
    #[OA\Parameter(
        name: "kitchen_id",
        description: "Идентификатор кухни",
        in: "query",
        schema: new Schema(type: "integer")
    )]
    #[Model(type: RestaurantList::class)]
    public function restaurants(RestaurantListRequest $request): Response
    {
        $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
        );
        return $this->json($restaurantsList);
        return $this->json($this->restaurantService->getRestaurantsByRequest($request));
    }

    #[Route('/restaurants/{restaurantId}', name: 'restaurant', methods: ['GET'])]
    public function restaurant(Request $request, SerializerInterface $serializer): Response
    public function restaurant(Request $request): Response
    {
        try {
            $restaurantId = (int)$request->get('restaurantId');
            $restaurant = $this->restaurantService->getRestaurant($restaurantId);
            $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());
            return new Response(
                $this->restaurantService->getRestaurantByRequest($request),
                Response::HTTP_OK,
                ['Content-Type' => 'application/json']
            );
        } catch (RestaurantNotFoundException $e) {
            return $this->json([
                'success' => false,
                'message' => $e->getMessage(),
            ], $e->getCode());
        }
    }
}
+19 −4
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ class Restaurant
    /**
     * @var Collection<Uuid, Kitchen>
     */
    #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant')]
    #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant', fetch: 'EAGER')]
    private Collection $kitchen;

    #[ORM\Column]
@@ -75,7 +75,7 @@ class Restaurant
    /**
     * @var Collection<Uuid, Tags>
     */
    #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant')]
    #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant', fetch: 'EAGER')]
    private Collection $tags;

    #[ORM\Column(length: 255)]
@@ -90,11 +90,11 @@ class Restaurant
    #[ORM\Column(type: Types::TEXT)]
    private ?string $howToFind = null;

    #[ORM\ManyToOne]
    #[ORM\ManyToOne(fetch: 'EAGER')]
    #[ORM\JoinColumn(nullable: false)]
    private ?Seo $seo = null;

    #[ORM\OneToOne(cascade: ['persist', 'remove'])]
    #[ORM\OneToOne(cascade: ['persist', 'remove'], fetch: 'EAGER')]
    #[ORM\JoinColumn(nullable: false)]
    private ?File $file = null;

@@ -405,4 +405,19 @@ class Restaurant

        return $this;
    }

    public function getPhone(): array
    {
        return $this->phone;
    }

    public function getEmail(): array
    {
        return $this->email;
    }

    public function getAddress(): array
    {
        return $this->address;
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -2,7 +2,9 @@

namespace App\Exception;

use Symfony\Component\HttpFoundation\Response;

enum NewsExceptionEnum: int
{
    case NotFound = 404;
    case NotFound = Response::HTTP_NOT_FOUND;
}
Loading