src/Controller/ServicesController.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Services\Api\Attraction\AttractionService;
  4. use App\Services\Api\Category\CategoryService;
  5. use App\Services\FakeDataService;
  6. use Exception;
  7. use Psr\Cache\InvalidArgumentException;
  8. use Psr\Log\LoggerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class ServicesController extends AbstractController
  14. {
  15.     private FakeDataService $fakeDataService;
  16.     private AttractionService $attractionService;
  17.     private CategoryService $categoryService;
  18.     private LoggerInterface $logger;
  19.     /**
  20.      * @param FakeDataService $fakeDataService
  21.      * @param AttractionService $attractionService
  22.      * @param CategoryService $categoryService
  23.      * @param LoggerInterface $logger
  24.      */
  25.     public function __construct(FakeDataService $fakeDataServiceAttractionService $attractionServiceCategoryService $categoryServiceLoggerInterface $logger)
  26.     {
  27.         $this->fakeDataService $fakeDataService;
  28.         $this->attractionService $attractionService;
  29.         $this->categoryService $categoryService;
  30.         $this->logger $logger;
  31.     }
  32.     /**
  33.      * @throws InvalidArgumentException
  34.      */
  35.     #[Route('/categorie/{category}/{name}'name'app_coin_by_category')]
  36.     public function index(Request $request$category$name): Response
  37.     {
  38.         $page $request->query->getInt('page'1);
  39.         $attractions =  $this->attractionService->getAttractionByCategory((int)$category$page);
  40.         $paginationAttraction $attractions['hydra:view'];
  41.         $pagination = [];
  42.         if (isset($paginationAttraction['hydra:first'])){
  43.             $pagination['first'] = explode('page=',$paginationAttraction['hydra:first'])[1];
  44.             $pagination['last'] = explode('page=',$paginationAttraction['hydra:last'])[1];
  45.         }
  46.         return $this->render('frontend/services/coinByCategory.html.twig', [
  47.             'attractions' => $attractions,
  48.             'category' => $this->categoryService->getCategory((int)$category),
  49.             'page' => $page,
  50.             'pagination' => $pagination
  51.         ]);
  52.     }
  53.     /**
  54.      * @throws InvalidArgumentException
  55.      * @throws Exception
  56.      */
  57.     #[Route('/attractions/{id}'name'app_services_attraction')]
  58.     public function coin($id): Response
  59.     {
  60.         $review $this->attractionService->getReviewByAttraction($id)->toArray();
  61.         $attraction $this->attractionService->getAttractionById($id);
  62.         $data $this->fakeDataService->get();
  63.         $body $data['restauration'][0] ?? [];
  64. //        dd($attraction);
  65.         return $this->render('frontend/services/coin.html.twig', [
  66.             'attraction' => $attraction,
  67.             'coin' => $body,
  68.             'reviews' => $review,
  69.             'category' => 'restauration'
  70.         ]);
  71.     }
  72.     #[Route('/review/{attractionId}'name'app_review')]
  73.     public function review($attractionId,Request $request){
  74.         if ($request->isMethod('POST')){
  75.             $rate $request->request->get('rate');
  76.             $comment $request->request->get('comment');
  77.             $body = [
  78.                 'rate' => $rate,
  79.                 'comment' => $comment,
  80.                 'attraction_id' => $attractionId
  81.             ];
  82.             try {
  83.                 $response $this->attractionService->postReview($body);
  84.                 dd($response);
  85.                 $this->addFlash('success''Votre avis a été envoyé avec succès');
  86.             }catch (Exception $exception){
  87.                 $this->addFlash('danger''Erreur: Vous avez déja creer un review/ vous ne pouvez pas créer un review');
  88.                 $this->logger->error('erreur lors de la création du review sur l\'attraction ' $attractionId $exception->getMessage());
  89.             }
  90.         }
  91.     }
  92. }