From ce5bc525dd7b21594ac4b13b069bcbc867d5148a Mon Sep 17 00:00:00 2001 From: Brock H Caldwell Date: Sun, 8 Jun 2025 08:58:27 -0500 Subject: [PATCH] feat: adds search to monitors, adds properties to search against on downloads --- src/Download/Framework/Repository/DownloadRepository.php | 4 ++-- src/Monitor/Framework/Repository/MonitorRepository.php | 2 +- src/Twig/Components/MonitorList.php | 7 +++++++ templates/components/MonitorList.html.twig | 5 +++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Download/Framework/Repository/DownloadRepository.php b/src/Download/Framework/Repository/DownloadRepository.php index ebba41b..eb02681 100644 --- a/src/Download/Framework/Repository/DownloadRepository.php +++ b/src/Download/Framework/Repository/DownloadRepository.php @@ -30,7 +30,7 @@ class DownloadRepository extends ServiceEntityRepository $query = $this->createQueryBuilder('d') ->andWhere('d.status IN (:statuses)') ->andWhere('d.user = :user') - ->andWhere('(d.title LIKE :term OR d.imdbId LIKE :term)') + ->andWhere('(d.title LIKE :term OR d.filename LIKE :term OR d.imdbId LIKE :term OR d.status LIKE :term OR d.mediaType LIKE :term)') ->orderBy('d.id', 'DESC') ->setParameter('statuses', ['Complete']) ->setParameter('user', $user) @@ -45,7 +45,7 @@ class DownloadRepository extends ServiceEntityRepository $query = $this->createQueryBuilder('d') ->andWhere('d.status IN (:statuses)') ->andWhere('d.user = :user') - ->andWhere('(d.title LIKE :term OR d.imdbId LIKE :term)') + ->andWhere('(d.title LIKE :term OR d.filename LIKE :term OR d.imdbId LIKE :term OR d.status LIKE :term OR d.mediaType LIKE :term)') ->orderBy('d.id', 'ASC') ->setParameter('statuses', ['New', 'In Progress']) ->setParameter('user', $user) diff --git a/src/Monitor/Framework/Repository/MonitorRepository.php b/src/Monitor/Framework/Repository/MonitorRepository.php index f1068cb..0019c2b 100644 --- a/src/Monitor/Framework/Repository/MonitorRepository.php +++ b/src/Monitor/Framework/Repository/MonitorRepository.php @@ -21,7 +21,7 @@ class MonitorRepository extends ServiceEntityRepository $this->paginator = $paginator; } - public function getUserMonitorsPaginated(UserInterface $user, int $page, int $perPage): Paginator + public function getUserMonitorsPaginated(UserInterface $user, int $page, int $perPage, string $searchTerm): Paginator { $query = $this->createQueryBuilder('m') ->andWhere('m.status IN (:statuses)') diff --git a/src/Twig/Components/MonitorList.php b/src/Twig/Components/MonitorList.php index 213899d..a30ff08 100644 --- a/src/Twig/Components/MonitorList.php +++ b/src/Twig/Components/MonitorList.php @@ -17,6 +17,9 @@ final class MonitorList extends AbstractController use PaginateTrait; + #[LiveProp(writable: true)] + public string $term = ""; + #[LiveProp(writable: true)] public string $type; @@ -44,7 +47,9 @@ final class MonitorList extends AbstractController { return $this->asPaginator($this->monitorRepository->createQueryBuilder('m') ->andWhere('m.status IN (:statuses)') + ->andWhere('(m.title LIKE :term OR m.imdbId LIKE :term OR m.monitorType LIKE :term OR m.status LIKE :term)') ->setParameter('statuses', ['New', 'In Progress']) + ->setParameter('term', '%'.$this->term.'%') ->orderBy('m.id', 'DESC') ->getQuery() ); @@ -55,7 +60,9 @@ final class MonitorList extends AbstractController { return $this->asPaginator($this->monitorRepository->createQueryBuilder('m') ->andWhere('m.status = :status') + ->andWhere('(m.title LIKE :term OR m.imdbId LIKE :term OR m.monitorType LIKE :term OR m.status LIKE :term)') ->setParameter('status', 'Complete') + ->setParameter('term', '%'.$this->term.'%') ->orderBy('m.id', 'DESC') ->getQuery() ); diff --git a/templates/components/MonitorList.html.twig b/templates/components/MonitorList.html.twig index c75c120..6608259 100644 --- a/templates/components/MonitorList.html.twig +++ b/templates/components/MonitorList.html.twig @@ -1,4 +1,9 @@ + {% if this.isWidget == false %} +
+ +
+ {% endif %}