<?php

namespace Yas\FrontTheme\Providers;

use Illuminate\Routing\Router;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;
use Yas\FrontTheme\Http\Middleware\Theme;
use Yas\FrontTheme\Http\Middleware\Locale;
use Yas\FrontTheme\Http\Middleware\Currency;
use Yas\FrontTheme\Http\Middleware\AuthenticateCustomer;

class FrontThemeServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap services.
     */
    public function boot(Router $router): void
    {
        /* loaders */
        Route::middleware('web')->group(__DIR__.'/../Routes/web.php');
        Route::middleware('web')->group(__DIR__.'/../Routes/api.php');

        // $this->loadMigrationsFrom(__DIR__.'/../Database/Migrations');
        $this->loadTranslationsFrom(__DIR__.'/../Resources/lang', 'yas_theme');
        $this->loadViewsFrom(__DIR__.'/../Resources/views', 'yas_theme');
        // 2. ALSO register under 'shop' so Bagisto core & exception handlers can locate your views!
        $this->loadViewsFrom(__DIR__.'/../Resources/views', 'shop');

        /* aliases */
        $router->aliasMiddleware('currency', Currency::class);
        $router->aliasMiddleware('locale', Locale::class);
        $router->aliasMiddleware('yas_customer', AuthenticateCustomer::class);
        $router->aliasMiddleware('theme', Theme::class);

        $this->publishes([
            dirname(__DIR__).'/Config/imagecache.php' => config_path('imagecache.php'),
        ]);

        /* Paginator */
        Paginator::defaultView('yas_theme::partials.pagination');
        Paginator::defaultSimpleView('yas_theme::partials.pagination');

        Blade::anonymousComponentPath(__DIR__.'/../Resources/views/components', 'yas_theme');
        Blade::anonymousComponentPath(__DIR__.'/../Resources/views/components', 'shop');

        /* Breadcrumbs */
        require __DIR__.'/../Routes/breadcrumbs.php';

        $this->app->register(EventServiceProvider::class);

        // $this->app->concord->registerModel(
        //     \Yas\FrontTheme\Contracts\ConsignmentEnquiry::class,
        //     \Yas\FrontTheme\Models\ConsignmentEnquiry::class
        // );

        // $this->app->concord->registerModel(
        //     \Yas\FrontTheme\Contracts\ConsignmentImages::class,
        //     \Yas\FrontTheme\Models\ConsignmentImages::class
        // );
    }

    /**
     * Register services.
     */
    public function register(): void
    {
        $this->registerConfig();
    }

    /**
     * Register package config.
     */
    protected function registerConfig(): void
    {
        $this->mergeConfigFrom(
            dirname(__DIR__).'/Config/menu.php',
            'menu.customer'
        );
    }
}
