diff --git a/app/Home.php b/app/Home.php index 01af01c..b4769bb 100644 --- a/app/Home.php +++ b/app/Home.php @@ -32,4 +32,24 @@ class Home extends Model { return $query->where('price', '>=', $price); } + + public function scopeSurfaceMax(QueryBuilder $query, $price): QueryBuilder + { + return $query->where('surface', '<=', $price); + } + + public function scopeSurfaceMin(QueryBuilder $query, $price): QueryBuilder + { + return $query->where('surface', '>=', $price); + } + + public function scopeGardenSurfaceMax(QueryBuilder $query, $price): QueryBuilder + { + return $query->where('garden_surface', '<=', $price); + } + + public function scopeGardenSurfaceMin(QueryBuilder $query, $price): QueryBuilder + { + return $query->where('garden_surface', '>=', $price); + } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 5baa950..b322ad9 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -18,13 +18,18 @@ class HomeController extends Controller public function index() { $homes = QueryBuilder::for(Home::class) -// ->allowedFilters(['price', 'surface', 'garden_surface']) ->allowedFilters([ AllowedFilter::scope('price_min'), AllowedFilter::scope('price_max'), + + AllowedFilter::scope('surface_min'), + AllowedFilter::scope('surface_max'), + + AllowedFilter::scope('garden_surface_min'), + AllowedFilter::scope('garden_surface_max'), ]) ->defaultSort('-created_at') // https://docs.spatie.be/laravel-query-builder/v2/features/sorting/#basic-usage - ->paginate(4) + ->paginate(10) ->appends(request()->query()); return view('homes.home', ['homes' => $homes]); diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ee8ca5b..1e5338e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; +use Illuminate\Support\Str; class AppServiceProvider extends ServiceProvider { @@ -23,6 +24,9 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { - // + Str::macro('currency', static function ($price) + { + return sprintf('%s €', number_format($price, 0, ',', ' ')); + }); } } diff --git a/resources/views/homes/home.blade.php b/resources/views/homes/home.blade.php index b99c9c6..14e7c33 100644 --- a/resources/views/homes/home.blade.php +++ b/resources/views/homes/home.blade.php @@ -3,7 +3,7 @@ @section('content')
-
+
{{ __('Dashboard') }}
@@ -15,20 +15,42 @@ @endif
-
-
- - - -
+
+

+ +

+
+
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
@if(count($homes) > 0) @foreach($homes as $home) -
+
-
{{ $home->title }}
+
+ {{ $home->title }} + {{ Str::currency($home->price) }} +

{{ $home->excerpt() }}

Voir la maison