<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Route;
use App\Models\Scss\ScssVersion;
use App\Models\Js\JsVersion;
use App\Models\ScssCdn\ScssCdnBundle;
use App\Models\Tutorials\TutorialVersion;
use App\Models\Tutorials\Tutorial;
use App\Models\Features\FeatureVersion;
use App\Models\Resources\ResourceVersion;

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

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        // Configurar route model binding para ScssVersion
        Route::bind('scssVersion', function ($value) {
            return ScssVersion::findOrFail($value);
        });

        // Configurar route model binding para JsVersion
        Route::bind('jsVersion', function ($value) {
            return JsVersion::findOrFail($value);
        });

        // Configurar route model binding para ScssCdnBundle
        Route::bind('bundle', function ($value) {
            return ScssCdnBundle::findOrFail($value);
        });

        // Configurar route model binding para TutorialVersion
        Route::bind('tutorialVersion', function ($value) {
            return TutorialVersion::findOrFail($value);
        });

        // Configurar route model binding para FeatureVersion
        Route::bind('featureVersion', function ($value) {
            return FeatureVersion::findOrFail($value);
        });

        // Configurar route model binding para ResourceVersion
        Route::bind('resourceVersion', function ($value) {
            return ResourceVersion::findOrFail($value);
        });

        // Configurar route model binding para Tutorial
        Route::bind('tutorial', function ($value) {
            return Tutorial::findOrFail($value);
        });
    }
}
