<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Auth;
use Schema;

use App\Models\Modules;

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

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // Handle module migrations.
        try {
            if (Schema::hasTable('modules')) {
                foreach(Modules::all()->pluck('name') as $module) {
                    $this->loadMigrationsFrom(base_path("app/Modules/$module/Migrations"));
                }
            }
        }
        catch(Exception $ex) {}
        
        // Standard migrations.
        $this->loadMigrationsFrom(database_path('migrations'));

        // Custom Blade Directives
        Blade::if('see', function ($_permissions) {
            return Auth::user()->canDo($_permissions);
        });
    }
}
