<?php

namespace App\Listeners;

use App\Events\SitemapDataChanged;
use App\Models\Article;
use Illuminate\Support\Facades\Cache;

class ClearSitemapCache
{
    /**
     * Handle the event.
     */
    public function handle(SitemapDataChanged $event): void
    {
        // Clear main sitemap index cache
        Cache::forget('blog-sitemap');

        // Clear category sitemap cache
        Cache::forget('blog-category-sitemap');

        // Clear pages sitemap cache
        Cache::forget('blog-pages-sitemap');

        // Clear post sitemap cache for all pages
        $totalPosts = Article::published()->count();
        $postsPerSitemap = 200;
        $totalPostSitemaps = ceil($totalPosts / $postsPerSitemap);

        for ($i = 1; $i <= $totalPostSitemaps; $i++) {
            Cache::forget("blog-post-$i");
        }

        // Clear a few extra pages to be safe (in case count changed)
        for ($i = $totalPostSitemaps + 1; $i <= $totalPostSitemaps + 5; $i++) {
            Cache::forget("blog-post-$i");
        }
    }
}
