added date filter
This commit is contained in:
@@ -82,6 +82,13 @@ class BuildFiltersTask
|
||||
param: 'sort'
|
||||
);
|
||||
|
||||
$this->filterBuilder->add(
|
||||
key: 'date_filter',
|
||||
type: 'date',
|
||||
value: $filters['date'] ?? null,
|
||||
param: 'date'
|
||||
);
|
||||
|
||||
|
||||
return $this->filterBuilder->get();
|
||||
}
|
||||
|
||||
@@ -34,6 +34,18 @@ class GetPostsTask
|
||||
});
|
||||
}
|
||||
})
|
||||
->when(!empty($filters['date']), function ($query) use ($filters) {
|
||||
$dates = $filters['date'];
|
||||
if ($dates[1] === null) {
|
||||
// Если пришла одна дата, ищем по конкретной дате
|
||||
$query->whereDate('publish_at', \Carbon\Carbon::createFromFormat('d.m.Y', $dates[0])->format('Y-m-d'));
|
||||
} else {
|
||||
// Если пришли две даты, ищем в диапазоне
|
||||
$startDate = \Carbon\Carbon::createFromFormat('d.m.Y', $dates[0])->format('Y-m-d');
|
||||
$endDate = \Carbon\Carbon::createFromFormat('d.m.Y', $dates[1])->format('Y-m-d');
|
||||
$query->whereBetween('publish_at', [$startDate, $endDate]);
|
||||
}
|
||||
})
|
||||
->when(!empty($filters['search']), function ($query) use ($filters) {
|
||||
$query->whereRaw('LOWER(title) like ?', ["%".strtolower($filters['search'])."%"]);
|
||||
});
|
||||
|
||||
@@ -14,7 +14,7 @@ class IndexPostController extends Controller
|
||||
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$filters = $request->only(['search', 'category', 'tag', 'sort', 'page']);
|
||||
$filters = $request->only(['search', 'category', 'tag', 'sort', 'page', 'date']);
|
||||
|
||||
$data = $this->listPostsAction->run($filters);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user