@@ -20,22 +20,25 @@ class PackagesController extends Controller
20
20
*/
21
21
public function index (Request $ request )
22
22
{
23
+ $ currentCategory = PackageTypeEnum::tryFrom ($ request ->input ('type ' ));
24
+ $ currentSort = SortEnum::tryFrom ($ request ->input ('sort ' ));
25
+
23
26
$ packages = Package::approved ()
24
- ->when ($ request ->filled ('type ' ), function ($ query ) use ($ request ) {
25
- return $ query ->where ('type ' , $ request ->input ('type ' ));
26
- })
27
+ ->when ($ currentCategory !== null , fn ($ query ) => $ query ->where ('type ' , $ currentCategory ->value ))
27
28
->when ($ request ->filled ('q ' ), function ($ query ) use ($ request ) {
28
29
$ query ->where ('name ' , 'like ' , '% ' .$ request ->get ('q ' ).'% ' )
29
30
->orWhere ('packagist_name ' , 'like ' , '% ' .$ request ->get ('q ' ).'% ' )
30
31
->orWhere ('description ' , 'like ' , '% ' .$ request ->get ('q ' ).'% ' );
31
32
})
32
- ->when ($ request -> get ( ' sort ' ) === SortEnum::Latest-> value ,
33
+ ->when ($ currentSort === SortEnum::Latest,
33
34
fn ($ query ) => $ query ->latest (),
34
35
fn ($ query ) => $ query ->orderByDesc ('stars ' ))
35
36
->paginate (6 );
36
37
37
38
return view ('packages.index ' , [
38
- 'packages ' => $ packages ,
39
+ 'packages ' => $ packages ,
40
+ 'currentCategory ' => $ currentCategory ,
41
+ 'currentSort ' => $ currentSort ,
39
42
]);
40
43
}
41
44
@@ -103,6 +106,9 @@ public function delete(Request $request, Package $package)
103
106
return redirect ()->route ('profile.packages ' , $ request ->user ());
104
107
}
105
108
109
+ /**
110
+ * @return \Illuminate\Contracts\View\View
111
+ */
106
112
public function latest ()
107
113
{
108
114
$ packages = Package::approved ()
0 commit comments