Files
BookNest/src/Controller/APISearchController.php

76 lines
2.4 KiB
PHP

<?php
namespace App\Controller;
use App\Service\GoogleBooksService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\FavorisRepository;
use App\Entity\Favoris;
class APISearchController extends AbstractController
{
private GoogleBooksService $googleBooksService;
public function __construct(GoogleBooksService $googleBooksService)
{
$this->googleBooksService = $googleBooksService;
}
public function search(Request $request): array
{
// Récupérer le paramètre "q" depuis la requête
$query = $request->query->get('q');
// Appeler le service GoogleBooks avec la requête
return $this->googleBooksService->searchBooks($query);
}
#[Route('/toggleLike/{idGoogle}', name: 'like', methods: "POST")]
public function addFavoris(FavorisRepository $favorisRepository, String $idGoogle)
{
$favoris = new Favoris();
$user = $this->getUser();
$favoris->setUser($user);
$favoris->setIdGoogle($idGoogle);
return $this->json(['success' => true, 'message' => 'Favoris ajouté']);
}
#[Route('/untoggleLike/{idGoogle}', name: 'unlike', methods: "POST")]
public function removeFavoris(FavorisRepository $favorisRepository, String $idGoogle)
{
$favoris = new Favoris();
$user = $this->getUser();
$favoris->setUser($user);
$favoris->setIdGoogle($idGoogle);
$favorisRepository->removeFavoris($user, $idGoogle);
return $this->json(['success' => true, 'message' => 'Favoris supprimé']);
}
#[Route('/api/search', name: 'api_search')]
public function index(Request $request, FavorisRepository $favorisRepository): Response
{
ini_set('memory_limit', '512M');
// Appeler la méthode search et récupérer les résultats
$datas = $this->search($request);
$query = $request->query->get('q');
$user = $this->getUser();
$favoris = $favorisRepository->getFavorisByUser($user);
// Afficher les résultats dans le template
return $this->render('apiSearch/index.html.twig', [
'controller_name' => 'APISearchController',
'datas' => $datas,
'query' => $query,
'favoris' => $favoris,
]);
}
}