Add search bar for events in /mon-compte using Meilisearch per-account index
- Search form with query parameter ?q= on events tab
- Uses event_{accountId} Meilisearch index for search
- Falls back to database query if Meilisearch unavailable
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,8 +4,10 @@ namespace App\Controller;
|
||||
|
||||
use App\Entity\Payout;
|
||||
use App\Entity\User;
|
||||
use App\Entity\Event;
|
||||
use App\Service\EventIndexService;
|
||||
use App\Service\MailerService;
|
||||
use App\Service\MeilisearchService;
|
||||
use App\Service\PayoutPdfService;
|
||||
use App\Service\StripeService;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
@@ -24,7 +26,7 @@ class AccountController extends AbstractController
|
||||
private const BREADCRUMB_ACCOUNT = ['name' => 'Mon compte', 'url' => '/mon-compte'];
|
||||
|
||||
#[Route('/mon-compte', name: 'app_account')]
|
||||
public function index(Request $request, StripeService $stripeService, EntityManagerInterface $em, PaginatorInterface $paginator): Response
|
||||
public function index(Request $request, StripeService $stripeService, EntityManagerInterface $em, PaginatorInterface $paginator, MeilisearchService $meilisearch): Response
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
@@ -55,10 +57,26 @@ class AccountController extends AbstractController
|
||||
['parentOrganizer' => $user],
|
||||
['createdAt' => 'DESC'],
|
||||
);
|
||||
$eventsQuery = $em->getRepository(\App\Entity\Event::class)->findBy(
|
||||
['account' => $user],
|
||||
['startAt' => 'ASC'],
|
||||
);
|
||||
$searchQuery = $request->query->getString('q', '');
|
||||
if ('' !== $searchQuery) {
|
||||
try {
|
||||
$searchResults = $meilisearch->search('event_'.$user->getId(), $searchQuery);
|
||||
$eventIds = array_map(fn (array $hit) => $hit['id'], $searchResults['hits'] ?? []);
|
||||
$eventsQuery = $eventIds
|
||||
? $em->getRepository(Event::class)->findBy(['id' => $eventIds])
|
||||
: [];
|
||||
} catch (\Throwable) {
|
||||
$eventsQuery = $em->getRepository(Event::class)->findBy(
|
||||
['account' => $user],
|
||||
['startAt' => 'ASC'],
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$eventsQuery = $em->getRepository(Event::class)->findBy(
|
||||
['account' => $user],
|
||||
['startAt' => 'ASC'],
|
||||
);
|
||||
}
|
||||
$events = $paginator->paginate($eventsQuery, $request->query->getInt('page', 1), 10);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user