<?php

namespace App\Observers;

use App\Models\Banner;
use App\Services\CacheService;

class BannerObserver
{
    public function __construct(
        protected CacheService $cacheService
    ) {
    }

    /**
     * Handle the Banner "created" event.
     */
    public function created(Banner $banner): void
    {
        $this->cacheService->clearBannerCache();
    }

    /**
     * Handle the Banner "updated" event.
     */
    public function updated(Banner $banner): void
    {
        // Check if any cache-relevant fields changed
        if ($banner->wasChanged(['is_active', 'sort_order', 'image_path', 'title', 'link'])) {
            $this->cacheService->clearBannerCache();
        }
    }

    /**
     * Handle the Banner "deleted" event.
     */
    public function deleted(Banner $banner): void
    {
        $this->cacheService->clearBannerCache();
    }

    /**
     * Handle the Banner "restored" event.
     */
    public function restored(Banner $banner): void
    {
        $this->cacheService->clearBannerCache();
    }

    /**
     * Handle the Banner "force deleted" event.
     */
    public function forceDeleted(Banner $banner): void
    {
        $this->cacheService->clearBannerCache();
    }
}
