<?php

namespace Koneko\VuexyStoreManager\Providers;

use Illuminate\Support\ServiceProvider;
use Livewire\Livewire;
use Koneko\VuexyStoreManager\Livewire\Company\CompanyIndex;
use Koneko\VuexyStoreManager\Livewire\Stores\{StoreIndex,StoreForm};
use Koneko\VuexyStoreManager\Livewire\WorkCenters\{WorkCenterOffcanvasForm,WorkCenterIndex};
use OwenIt\Auditing\AuditableObserver;

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

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        // Register the module's routes
        $this->loadRoutesFrom(__DIR__.'/../routes/admin.php');


        // Cargar vistas del paquete
        $this->loadViewsFrom(__DIR__.'/../resources/views', 'vuexy-store-manager');


        // Register the migrations
        $this->loadMigrationsFrom(__DIR__ . '/../database/migrations');


        // Publicar los archivos necesarios
        $this->publishes([
            __DIR__.'/../database/seeders/CurrencySeeder.php' => database_path('seeders/CurrencySeeder.php'),
        ], 'vuexy-store-manager-seeders');


        // Registrar Livewire Components
        $components = [
            'company-index' => CompanyIndex::class,
            'store-index' => StoreIndex::class,
            'store-form' => StoreForm::class,
            'work-center-index' => WorkCenterIndex::class,
            'work-center-offcanvas-form' => WorkCenterOffcanvasForm::class,
        ];

        foreach ($components as $alias => $component) {
            Livewire::component($alias, $component);
        }


        // Registrar auditoría en usuarios
        //User::observe(AuditableObserver::class);
    }
}