added date filter

This commit is contained in:
F4ilji
2025-05-27 19:47:45 +05:00
parent 8c7722e1c7
commit 36b4d71dce
10 changed files with 229 additions and 4 deletions
@@ -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);