Rework admin panel and other

This commit is contained in:
F4ilji
2025-04-02 18:37:20 +05:00
parent 49072e50c7
commit 5cd6ff11b5
198 changed files with 9715 additions and 6664 deletions
+77
View File
@@ -0,0 +1,77 @@
<?php
namespace App\Observers;
use App\Models\MainSlider;
use App\Models\Slide;
use App\Services\App\Cache\MainSliderCacheService;
use App\Services\App\Cache\SliderCacheService;
class SlideObserver
{
protected SliderCacheService $cacheService;
public function __construct()
{
$this->cacheService = new SliderCacheService();
}
/**
* Handle the MainSlider "created" event.
*/
public function created(Slide $slide): void
{
// Устанавливаем сортировку для новой записи
$slide->sort = 1;
$slide->save();
// Обновляем сортировку для всех остальных записей
$this->updateSortOrder($slide->id, $slide->slider_id);
$this->cacheService->clearAllCacheByModel();
}
/**
* Handle the MainSlider "updated" event.
*/
public function updated(Slide $slide): void
{
$this->cacheService->clearAllCacheByModel();
}
/**
* Handle the MainSlider "deleted" event.
*/
public function deleted(Slide $slide): void
{
$this->cacheService->clearAllCacheByModel();
}
/**
* Handle the MainSlider "restored" event.
*/
public function restored(Slide $slide): void
{
//
}
/**
* Handle the MainSlider "force deleted" event.
*/
public function forceDeleted(Slide $slide): void
{
//
}
protected function updateSortOrder($id, $slider_id): void
{
// Получаем все записи, отсортированные по текущему значению sort
$slides = Slide::orderBy('sort', 'asc')->where([['slider_id', $slider_id], ['id', '!=', $id]])->get();
if ($slides->count() > 0) {
foreach ($slides as $index => $slide) {
$slide->sort = $index + 2; // Начинаем с 1
$slide->save();
}
}
}
}