diff --git a/app/src/Controller/AbstractController.php b/app/src/Controller/Handle.php similarity index 59% rename from app/src/Controller/AbstractController.php rename to app/src/Controller/Handle.php index 61d805ea1960894b9d0722a69a3e33f14e642508..97f67159dc07bd8e20843a9d658df0f5dfd491fa 100644 --- a/app/src/Controller/AbstractController.php +++ b/app/src/Controller/Handle.php @@ -2,24 +2,18 @@ namespace App\Controller; -use App\Dto\ErrorDto; -use App\Error\AbstractError; use App\Request\AbstractRequest; use App\Service\ServiceInterface; use Symfony\Component\HttpFoundation\JsonResponse; -use Throwable; -use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as BundleController; -abstract class AbstractController extends BundleController +class Handle { - public function __construct( - private readonly ServiceInterface $service - ) {} + public function __construct(private readonly ServiceInterface $service) {} - protected function build(AbstractRequest $request): JsonResponse + public function handle(AbstractRequest $request): JsonResponse { // try { - return new JsonResponse($this->service->serve($request)); + return new JsonResponse($this->service->serve($request)); // // } catch (AbstractError $error) { // $errorDto = new ErrorDto(); diff --git a/app/src/Controller/NewsController.php b/app/src/Controller/NewsController.php index b321457b90f30ea0a5f7792826641ef4c90d5816..90c6a8c39c9882befd67384f67b7c4863dccc3b5 100644 --- a/app/src/Controller/NewsController.php +++ b/app/src/Controller/NewsController.php @@ -2,22 +2,48 @@ namespace App\Controller; +use App\Request\DetailRequest; +use App\Request\EmptyRequest; use App\Request\NewsListingRequest; +use App\Service\NewsDetailService; use App\Service\NewsListingService; +use App\Service\NewsMainNewsService; +use App\Service\NewsSearchService; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as BundleController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Attribute\Route; -#[Route('api/v1/news')] -class NewsController extends AbstractController +#[Route('/api/v1/news')] +class NewsController extends BundleController { - public function __construct(NewsListingService $service) + public function __construct( + private readonly NewsDetailService $detailService, + private readonly NewsListingService $listingService, + private readonly NewsMainNewsService $mainNewsService, + private readonly NewsSearchService $searchService, + ) {} + + #[Route('/', name: 'news', methods: ['GET'])] + public function news(NewsListingRequest $request): JsonResponse + { + return (new Handle($this->listingService))->handle($request); + } + + #[Route('/mainNews', name: 'mainNews', methods: ['GET'])] + public function mainNews(EmptyRequest $request): JsonResponse + { + return (new Handle($this->mainNewsService))->handle($request); + } + + #[Route('/search', name: 'searchNews', methods: ['GET'])] + public function search(EmptyRequest $request): JsonResponse { - parent::__construct($service); + return (new Handle($this->searchService))->handle($request); } - #[Route('/', name: 'news')] - public function index(NewsListingRequest $request): JsonResponse + #[Route('/{detailId}', name: 'oneNews', methods: ['GET'])] + public function oneNews(DetailRequest $request): JsonResponse { - return $this->build($request); + return (new Handle($this->detailService))->handle($request); } } diff --git a/app/src/Controller/NewsDetailController.php b/app/src/Controller/NewsDetailController.php deleted file mode 100644 index e236d8c5c9eea447f27f3359cf7cf89f8932f46a..0000000000000000000000000000000000000000 --- a/app/src/Controller/NewsDetailController.php +++ /dev/null @@ -1,23 +0,0 @@ -build($request); - } -} diff --git a/app/src/Controller/NewsMainNewsController.php b/app/src/Controller/NewsMainNewsController.php deleted file mode 100644 index 2595dfe61ae59275ebf95995248ab795473319cd..0000000000000000000000000000000000000000 --- a/app/src/Controller/NewsMainNewsController.php +++ /dev/null @@ -1,23 +0,0 @@ -build($request); - } -} \ No newline at end of file diff --git a/app/src/Controller/NewsSearchController.php b/app/src/Controller/NewsSearchController.php deleted file mode 100644 index a6b0fa694884b81ddd9fb6bd15923b90d8d16205..0000000000000000000000000000000000000000 --- a/app/src/Controller/NewsSearchController.php +++ /dev/null @@ -1,23 +0,0 @@ -build($request); - } -} \ No newline at end of file diff --git a/app/src/Controller/RestaurantDetailController.php b/app/src/Controller/RestaurantDetailController.php deleted file mode 100644 index 8b547ae44d707bed3e0470c28acac73256bd6fd5..0000000000000000000000000000000000000000 --- a/app/src/Controller/RestaurantDetailController.php +++ /dev/null @@ -1,23 +0,0 @@ -build($request); - } -} diff --git a/app/src/Controller/RestaurantsController.php b/app/src/Controller/RestaurantsController.php index 3be18903a8de2a4958a5b5638b3edb0b747d2cd0..b268f8367cc3935d6e7c9ae798e900ffd4ccdf3d 100644 --- a/app/src/Controller/RestaurantsController.php +++ b/app/src/Controller/RestaurantsController.php @@ -2,23 +2,31 @@ namespace App\Controller; +use App\Request\DetailRequest; use App\Request\RestaurantListingRequest; +use App\Service\RestaurantDetailService; use App\Service\RestaurantListingService; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as BundleController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Attribute\Route; -#[Route('/api/v1/restaurants/')] -class RestaurantsController extends AbstractController +#[Route('/api/v1/restaurants')] +class RestaurantsController extends BundleController { - public function __construct(RestaurantListingService $service) + public function __construct( + private readonly RestaurantListingService $listingService, + private readonly RestaurantDetailService $detailService, + ) {} + + #[Route('/', name: 'restaurants', methods: ['GET'])] + public function restaurants(RestaurantListingRequest $request): JsonResponse { - parent::__construct($service); + return (new Handle($this->listingService))->handle($request); } - /** Листинг ресторанов */ - #[Route(name: 'restaurants')] - public function index(RestaurantListingRequest $request): JsonResponse + #[Route('/{detailId}', name: 'restaurant', methods: ['GET'])] + public function restaurant(DetailRequest $request): JsonResponse { - return $this->build($request); + return (new Handle($this->detailService))->handle($request); } } diff --git a/app/src/Request/EmptyRequest.php b/app/src/Request/EmptyRequest.php index 9ea7ad0f93d3ae3a14764b4cb228db3c5a5625ab..28809e1a9b25a52145722ddfac2c8be63b5b5437 100644 --- a/app/src/Request/EmptyRequest.php +++ b/app/src/Request/EmptyRequest.php @@ -5,4 +5,6 @@ namespace App\Request; class EmptyRequest extends AbstractRequest { protected const AUTO_VALIDATE = false; + + protected function populate(): void {} } \ No newline at end of file