diff --git a/src/Download/Framework/Repository/DownloadRepository.php b/src/Download/Framework/Repository/DownloadRepository.php index e6b4b31..ebba41b 100644 --- a/src/Download/Framework/Repository/DownloadRepository.php +++ b/src/Download/Framework/Repository/DownloadRepository.php @@ -25,27 +25,31 @@ class DownloadRepository extends ServiceEntityRepository $this->paginator = $paginator; } - public function getCompletePaginated(UserInterface $user, int $pageNumber = 1, int $perPage = 10): Paginator + public function getCompletePaginated(UserInterface $user, int $pageNumber = 1, int $perPage = 10, string $term = ""): Paginator { $query = $this->createQueryBuilder('d') ->andWhere('d.status IN (:statuses)') ->andWhere('d.user = :user') + ->andWhere('(d.title LIKE :term OR d.imdbId LIKE :term)') ->orderBy('d.id', 'DESC') ->setParameter('statuses', ['Complete']) ->setParameter('user', $user) + ->setParameter('term', '%' . $term . '%') ->getQuery(); return $this->paginator->paginate($query, $pageNumber, $perPage); } - public function getActivePaginated(UserInterface $user, int $pageNumber = 1, int $perPage = 5): Paginator + public function getActivePaginated(UserInterface $user, int $pageNumber = 1, int $perPage = 5, string $term = ""): Paginator { $query = $this->createQueryBuilder('d') ->andWhere('d.status IN (:statuses)') ->andWhere('d.user = :user') + ->andWhere('(d.title LIKE :term OR d.imdbId LIKE :term)') ->orderBy('d.id', 'ASC') ->setParameter('statuses', ['New', 'In Progress']) ->setParameter('user', $user) + ->setParameter('term', '%' . $term . '%') ->getQuery(); return $this->paginator->paginate($query, $pageNumber, $perPage); diff --git a/src/Twig/Components/DownloadList.php b/src/Twig/Components/DownloadList.php index bd87851..0cf1797 100644 --- a/src/Twig/Components/DownloadList.php +++ b/src/Twig/Components/DownloadList.php @@ -18,6 +18,9 @@ final class DownloadList extends AbstractController use PaginateTrait; + #[LiveProp(writable: true)] + public string $term = ""; + #[LiveProp(writable: true)] public string $type; @@ -31,9 +34,9 @@ final class DownloadList extends AbstractController public function getDownloads() { if ($this->type === "active") { - return $this->downloadRepository->getActivePaginated($this->getUser(), $this->pageNumber, $this->perPage); + return $this->downloadRepository->getActivePaginated($this->getUser(), $this->pageNumber, $this->perPage, $this->term); } elseif ($this->type === "complete") { - return $this->downloadRepository->getCompletePaginated($this->getUser(), $this->pageNumber, $this->perPage); + return $this->downloadRepository->getCompletePaginated($this->getUser(), $this->pageNumber, $this->perPage, $this->term); } return []; diff --git a/templates/components/DownloadList.html.twig b/templates/components/DownloadList.html.twig index 637c180..26c20a7 100644 --- a/templates/components/DownloadList.html.twig +++ b/templates/components/DownloadList.html.twig @@ -1,5 +1,8 @@ {% set table_body_id = (type == "complete") ? "complete_downloads" : "active_downloads" %} +
+ +
diff --git a/templates/components/DownloadSearch.html.twig b/templates/components/DownloadSearch.html.twig new file mode 100644 index 0000000..b667991 --- /dev/null +++ b/templates/components/DownloadSearch.html.twig @@ -0,0 +1,29 @@ +
+
+
+ + + +
+
\ No newline at end of file