<?php

namespace App\Providers;

use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;

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

    /**
     * Bootstrap services.
     */
    public function boot(): void
    {
        $modulesPath = app_path('Modules');

        if (File::exists($modulesPath)) {
            $modules = File::directories($modulesPath);

            foreach ($modules as $module) {
                // $moduleName = basename($module);
                // Load Routes
                $routesPath = $module . '/Routes/web.php';
                if (File::exists($routesPath)) {
                    Route::middleware('web')
                        ->group($routesPath);
                }

                // Load Service Provider
                $moduleName = basename($module);
                $providerClass = "App\\Modules\\{$moduleName}\\{$moduleName}ServiceProvider";
                
                if (class_exists($providerClass)) {
                    $this->app->register($providerClass);
                }
            }
        }
    }
}
