workshop_lara_nova/app/Providers/WorkshopServiceProvider.php
2025-03-22 10:19:15 +00:00

81 lines
2.5 KiB
PHP

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Laravel\Nova\Nova;
use Laravel\Nova\Menu\MenuItem;
use Laravel\Nova\Menu\MenuSection;
use App\Nova\Dashboards\WorkshopDashboard;
use App\Models\RepairOrder;
use App\Models\Vehicle;
use App\Models\Part;
use App\Observers\RepairOrderObserver;
use App\Observers\VehicleObserver;
use App\Observers\PartObserver;
class WorkshopServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
// Register workshop config
$this->mergeConfigFrom(
__DIR__ . '/../../config/workshop.php', 'workshop'
);
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Register observers
RepairOrder::observe(RepairOrderObserver::class);
Vehicle::observe(VehicleObserver::class);
Part::observe(PartObserver::class);
// Publish config
$this->publishes([
__DIR__ . '/../../config/workshop.php' => config_path('workshop.php'),
], 'workshop-config');
// Configure Nova menu
Nova::mainMenu(function () {
return [
MenuSection::dashboard(WorkshopDashboard::class)->icon('chart-bar'),
MenuSection::make('Fleet Management', [
MenuItem::resource('App\Nova\Vehicle'),
MenuItem::resource('App\Nova\MaintenanceSchedule'),
MenuItem::link('Vehicles Due Maintenance', '/resources/vehicles/lens/vehicles-due-for-maintenance'),
])->icon('truck')->collapsable(),
MenuSection::make('Repairs', [
MenuItem::resource('App\Nova\RepairOrder'),
MenuItem::resource('App\Nova\RepairTask'),
])->icon('wrench')->collapsable(),
MenuSection::make('Inventory', [
MenuItem::resource('App\Nova\Part'),
MenuItem::link('Low Stock Parts', '/resources/parts/lens/low-inventory-parts'),
])->icon('archive')->collapsable(),
MenuSection::make('Staff', [
MenuItem::resource('App\Nova\Technician'),
])->icon('user-group')->collapsable(),
MenuSection::make('Documents', [
MenuItem::resource('App\Nova\Document'),
])->icon('document-text')->collapsable(),
];
});
}
}