diff --git a/src/Controller/BaseController.php b/src/Controller/BaseController.php index d9e3322..8736aef 100644 --- a/src/Controller/BaseController.php +++ b/src/Controller/BaseController.php @@ -2,7 +2,9 @@ namespace Krzysiej\RyobiCrawler\Controller; +use Illuminate\Database\Eloquent\Builder; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\Request; use Twig\Environment; use Illuminate\Database\Capsule\Manager as Capsule; @@ -17,4 +19,19 @@ class BaseController extends AbstractController $capsule->setAsGlobal(); $capsule->bootEloquent(); } + + protected function handleOrderProducts(Builder $builder, Request $request): Builder + { + $builder->orderByDesc('starred')->orderByDesc('created_by'); + if ($request->query->get('order')) { + $orderField = $request->query->get('order'); + $direction = 'desc'; + if (str_starts_with($orderField, '-')) { + $direction = 'asc'; + } + $builder->orderBy($request->query->get('order'), $direction); + } + + return $builder; + } } diff --git a/src/Controller/IndexController.php b/src/Controller/IndexController.php index 0203711..b2a68dd 100644 --- a/src/Controller/IndexController.php +++ b/src/Controller/IndexController.php @@ -3,18 +3,17 @@ namespace Krzysiej\RyobiCrawler\Controller; use Krzysiej\RyobiCrawler\Models\Product; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; final class IndexController extends BaseController { #[Route('/', name: 'app_home')] - public function __invoke(): Response + public function __invoke(Request $request): Response { - $products = Product::with(['currentStock', 'price']) - ->orderByDesc('starred') - ->orderByDesc('created_by') - ->get(); + $products = Product::with(['currentStock', 'price', 'currentPrice']); + $products = $this->handleOrderProducts($products, $request)->get(); return $this->render('productList.html.twig', ['products' => $products]); } } diff --git a/src/Controller/NewController.php b/src/Controller/NewController.php index 0d7f542..8afec48 100644 --- a/src/Controller/NewController.php +++ b/src/Controller/NewController.php @@ -16,6 +16,7 @@ final class NewController extends BaseController { $products = Product::where('created_at', '>', now()->modify('-30 days')->format('Y-m-d')) ->orderByDesc('starred') + ->orderByDesc('name') ->orderByDesc('created_by') ->with(['currentPrice']) ->get(); diff --git a/templates/productList.html.twig b/templates/productList.html.twig index c8b4a66..5dd6319 100644 --- a/templates/productList.html.twig +++ b/templates/productList.html.twig @@ -2,15 +2,16 @@ {% block content %}