From 02fb2554c16c86845d2b3801a1b072aefe3211cf Mon Sep 17 00:00:00 2001 From: F4ilji Date: Sat, 27 Sep 2025 14:11:25 +0500 Subject: [PATCH] Enhance FindSliderBySlugTask to filter slides based on current time, ensuring only active slides within the valid time range are retrieved; update SlidesRelationManager to set default and minimum dates for start and end times. Improve Slider component styling for better visibility during loading state. --- app/Containers/Widget/Tasks/FindSliderBySlugTask.php | 11 ++++++++--- .../RelationManagers/SlidesRelationManager.php | 4 +--- resources/js/Pages/Main.vue | 2 +- resources/js/componentss/features/sliders/Slider.vue | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/Containers/Widget/Tasks/FindSliderBySlugTask.php b/app/Containers/Widget/Tasks/FindSliderBySlugTask.php index daa90db..7109e7c 100644 --- a/app/Containers/Widget/Tasks/FindSliderBySlugTask.php +++ b/app/Containers/Widget/Tasks/FindSliderBySlugTask.php @@ -4,6 +4,7 @@ namespace App\Containers\Widget\Tasks; use App\Containers\Widget\Models\Slider; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Carbon; class FindSliderBySlugTask { @@ -12,15 +13,19 @@ class FindSliderBySlugTask $cacheKey = 'slider_' . $slug; return Cache::remember($cacheKey, now()->addHour(), function () use ($slug) { + $now = Carbon::now(); // Получаем текущее время один раз + $slider = Slider::query() ->where('slug', $slug) ->where('is_active', true) - ->with(['slides' => function($query) { - $query->where('is_active', true); + ->with(['slides' => function($query) use ($now) { + $query->where('is_active', true) + ->where('start_time', '<=', $now) + ->where('end_time', '>=', $now); }]) ->firstOrFail(); return $slider ?: null; }); } -} +} \ No newline at end of file diff --git a/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php b/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php index d3b8eae..c24e8b1 100644 --- a/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php +++ b/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php @@ -206,8 +206,7 @@ class SlidesRelationManager extends RelationManager ->native(false) ->displayFormat('d/m/Y H:i') ->seconds(false) - ->default(Carbon::now()) - ->minDate(fn($record, $context) => $context === 'edit' ? $record?->start_time : Carbon::now()), + ->default(Carbon::now()), DateTimePicker::make('end_time') ->label('Дата окончания показа') @@ -216,7 +215,6 @@ class SlidesRelationManager extends RelationManager ->displayFormat('d/m/Y H:i') ->seconds(false) ->default(Carbon::now()->addWeeks(2)) - ->minDate(fn (Forms\Get $get) => $get('start_time') ?: Carbon::now()), ]), TextInput::make('link') diff --git a/resources/js/Pages/Main.vue b/resources/js/Pages/Main.vue index 373d443..0573ddb 100644 --- a/resources/js/Pages/Main.vue +++ b/resources/js/Pages/Main.vue @@ -2,7 +2,7 @@ - +
diff --git a/resources/js/componentss/features/sliders/Slider.vue b/resources/js/componentss/features/sliders/Slider.vue index 7cb247c..1384e4b 100644 --- a/resources/js/componentss/features/sliders/Slider.vue +++ b/resources/js/componentss/features/sliders/Slider.vue @@ -1,5 +1,5 @@