76 lines
2.4 KiB
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,
|
|
]);
|
|
}
|
|
}
|