<?php

namespace App\Providers;

use App\Models\Blog;
use App\Models\Menu;
use App\Models\Plan;
use DB;
use Illuminate\Support\ServiceProvider;
use Laravel\Cashier\Cashier;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        $settings = cache()->remember('app_settings', now()->addHours(6), function () {
            return (array) DB::table('settings')->find(1);
        });
        $menus = cache()->remember('app_menus', now()->addHours(6), function () {
            return Menu::all();
        });

        $blogs = cache()->remember('app_blogs', now()->addHours(6), function () {
            return Blog::where('is_published', 1)->get();
        });

        $plans = cache()->remember('app_plans', now()->addHours(6), function () {
            return Plan::all();
        });

        config(['app.settings' => (array) $settings]);
        config(['app.menus' => $menus]);
        config(['app.blogs' => $blogs]);
        config(['app.plans' => $plans]);

        Cashier::calculateTaxes();
    }
}
