ultimatepos/Modules/Maintenance/Routes/web.php

263 lines
18 KiB
PHP

<?php
use Modules\Maintenance\Http\Controllers\ContactMaintenanceController;
use Modules\Maintenance\Http\Controllers\CalendarController;
use Modules\Maintenance\Http\Controllers\ChecklistController;
use Modules\Maintenance\Http\Controllers\DispatchBoardController;
use Modules\Maintenance\Http\Controllers\ServiceContractController;
use Modules\Maintenance\Http\Controllers\DashboardController;
use Modules\Maintenance\Http\Controllers\EquipmentCategoryController;
use Modules\Maintenance\Http\Controllers\EquipmentController;
use Modules\Maintenance\Http\Controllers\EquipmentPartController;
use Modules\Maintenance\Http\Controllers\FailureReportController;
use Modules\Maintenance\Http\Controllers\InspectionVisitController;
use Modules\Maintenance\Http\Controllers\InstallController;
use Modules\Maintenance\Http\Controllers\RebuildController;
use Modules\Maintenance\Http\Controllers\FieldMissionController;
use Modules\Maintenance\Http\Controllers\HealthController;
use Modules\Maintenance\Http\Controllers\RepairDispatchController;
use Modules\Maintenance\Http\Controllers\MaterialListController;
use Modules\Maintenance\Http\Controllers\OverhaulController;
use Modules\Maintenance\Http\Controllers\PartCatalogController;
use Modules\Maintenance\Http\Controllers\PartReplacementController;
use Modules\Maintenance\Http\Controllers\PreventiveScheduleController;
use Modules\Maintenance\Http\Controllers\ProductionLineController;
use Modules\Maintenance\Http\Controllers\ReportController;
use Modules\Maintenance\Http\Controllers\ServiceProviderController;
use Modules\Maintenance\Http\Controllers\ServiceRecordController;
use Modules\Maintenance\Http\Controllers\SettingsController;
use Modules\Maintenance\Http\Controllers\SparePartController;
use Modules\Maintenance\Http\Controllers\ToolController;
use Modules\Maintenance\Http\Controllers\IotController;
use Modules\Maintenance\Http\Controllers\WorkOrderController;
Route::middleware('web', 'authh', 'auth', 'SetSessionData', 'language', 'timezone', 'AdminSidebarMenu')
->prefix('maintenance')
->group(function () {
Route::get('/install', [InstallController::class, 'index']);
Route::post('/install', [InstallController::class, 'install']);
Route::get('/install/uninstall', [InstallController::class, 'uninstall']);
Route::get('/install/update', [InstallController::class, 'update']);
Route::get('/dashboard', [DashboardController::class, 'index']);
Route::get('/health', [HealthController::class, 'index']);
Route::post('/health/repair', [HealthController::class, 'repair']);
// Equipment
Route::get('/equipment', [EquipmentController::class, 'index']);
Route::get('/equipment/create', [EquipmentController::class, 'create']);
Route::post('/equipment', [EquipmentController::class, 'store']);
Route::get('/equipment/{id}', [EquipmentController::class, 'show']);
Route::get('/equipment/{id}/edit', [EquipmentController::class, 'edit']);
Route::put('/equipment/{id}', [EquipmentController::class, 'update']);
Route::delete('/equipment/{id}', [EquipmentController::class, 'destroy']);
Route::get('/dropdowns/assets', [EquipmentController::class, 'assetsDropdown']);
// Equipment parts (BOM)
Route::get('/equipment/{equipment_id}/parts/create', [EquipmentPartController::class, 'create']);
Route::post('/equipment/{equipment_id}/parts', [EquipmentPartController::class, 'store']);
Route::get('/equipment/{equipment_id}/parts/{id}/edit', [EquipmentPartController::class, 'edit']);
Route::put('/equipment/{equipment_id}/parts/{id}', [EquipmentPartController::class, 'update']);
Route::delete('/equipment/{equipment_id}/parts/{id}', [EquipmentPartController::class, 'destroy']);
// Settings
Route::get('/settings', [SettingsController::class, 'index']);
Route::put('/settings', [SettingsController::class, 'update']);
// CRM contact integration API
Route::get('/contacts/{contact_id}/equipment', [ContactMaintenanceController::class, 'equipment']);
// Categories
Route::get('/equipment-categories', [EquipmentCategoryController::class, 'index']);
Route::get('/equipment-categories/create', [EquipmentCategoryController::class, 'create']);
Route::post('/equipment-categories', [EquipmentCategoryController::class, 'store']);
Route::get('/equipment-categories/{id}/edit', [EquipmentCategoryController::class, 'edit']);
Route::put('/equipment-categories/{id}', [EquipmentCategoryController::class, 'update']);
Route::delete('/equipment-categories/{id}', [EquipmentCategoryController::class, 'destroy']);
// Production lines
Route::get('/production-lines', [ProductionLineController::class, 'index']);
Route::get('/production-lines/create', [ProductionLineController::class, 'create']);
Route::post('/production-lines', [ProductionLineController::class, 'store']);
Route::get('/production-lines/{id}/edit', [ProductionLineController::class, 'edit']);
Route::put('/production-lines/{id}', [ProductionLineController::class, 'update']);
Route::delete('/production-lines/{id}', [ProductionLineController::class, 'destroy']);
// Part catalogs
Route::get('/part-catalogs', [PartCatalogController::class, 'index']);
Route::get('/part-catalogs/create', [PartCatalogController::class, 'create']);
Route::post('/part-catalogs', [PartCatalogController::class, 'store']);
Route::get('/part-catalogs/{id}/edit', [PartCatalogController::class, 'edit']);
Route::put('/part-catalogs/{id}', [PartCatalogController::class, 'update']);
Route::delete('/part-catalogs/{id}', [PartCatalogController::class, 'destroy']);
// Service providers
Route::get('/service-providers', [ServiceProviderController::class, 'index']);
Route::get('/service-providers/create', [ServiceProviderController::class, 'create']);
Route::post('/service-providers', [ServiceProviderController::class, 'store']);
Route::get('/service-providers/{id}/edit', [ServiceProviderController::class, 'edit']);
Route::put('/service-providers/{id}', [ServiceProviderController::class, 'update']);
Route::delete('/service-providers/{id}', [ServiceProviderController::class, 'destroy']);
// Preventive schedules
Route::get('/preventive-schedules', [PreventiveScheduleController::class, 'index']);
Route::get('/preventive-schedules/create', [PreventiveScheduleController::class, 'create']);
Route::post('/preventive-schedules', [PreventiveScheduleController::class, 'store']);
Route::get('/preventive-schedules/{id}/edit', [PreventiveScheduleController::class, 'edit']);
Route::put('/preventive-schedules/{id}', [PreventiveScheduleController::class, 'update']);
Route::delete('/preventive-schedules/{id}', [PreventiveScheduleController::class, 'destroy']);
// Overhauls
Route::get('/overhauls', [OverhaulController::class, 'index']);
Route::get('/overhauls/create', [OverhaulController::class, 'create']);
Route::post('/overhauls', [OverhaulController::class, 'store']);
Route::get('/overhauls/{id}', [OverhaulController::class, 'show']);
Route::get('/overhauls/{id}/edit', [OverhaulController::class, 'edit']);
Route::put('/overhauls/{id}', [OverhaulController::class, 'update']);
Route::delete('/overhauls/{id}', [OverhaulController::class, 'destroy']);
// Rebuilds
Route::get('/rebuilds', [RebuildController::class, 'index']);
Route::get('/rebuilds/create', [RebuildController::class, 'create']);
Route::post('/rebuilds', [RebuildController::class, 'store']);
Route::get('/rebuilds/{id}', [RebuildController::class, 'show']);
Route::get('/rebuilds/{id}/edit', [RebuildController::class, 'edit']);
Route::put('/rebuilds/{id}', [RebuildController::class, 'update']);
Route::post('/rebuilds/{id}/start', [RebuildController::class, 'start']);
Route::post('/rebuilds/{id}/advance', [RebuildController::class, 'advancePhase']);
Route::post('/rebuilds/{id}/hold', [RebuildController::class, 'hold']);
Route::post('/rebuilds/{id}/cancel', [RebuildController::class, 'cancel']);
Route::delete('/rebuilds/{id}', [RebuildController::class, 'destroy']);
// Work orders
Route::get('/work-orders', [WorkOrderController::class, 'index']);
Route::get('/work-orders/create', [WorkOrderController::class, 'create']);
Route::post('/work-orders', [WorkOrderController::class, 'store']);
Route::get('/work-orders/{id}', [WorkOrderController::class, 'show']);
Route::get('/work-orders/{id}/edit', [WorkOrderController::class, 'edit']);
Route::put('/work-orders/{id}', [WorkOrderController::class, 'update']);
Route::post('/work-orders/{id}/consume-part', [WorkOrderController::class, 'consumePart']);
Route::delete('/work-orders/{id}', [WorkOrderController::class, 'destroy']);
// Material lists (parts procurement for overhaul/rebuild/work orders)
Route::get('/material-lists/{source_type}/{source_id}/panel', [MaterialListController::class, 'panel']);
Route::post('/material-lists/{source_type}/{source_id}/destination', [MaterialListController::class, 'updateDestination']);
Route::post('/material-lists/{source_type}/{source_id}/lines', [MaterialListController::class, 'storeLine']);
Route::post('/material-lists/{source_type}/{source_id}/import-bom', [MaterialListController::class, 'importBom']);
Route::post('/material-lists/{source_type}/{source_id}/purchase-requisition', [MaterialListController::class, 'createPurchaseRequisition']);
Route::post('/material-lists/{source_type}/{source_id}/purchase-orders', [MaterialListController::class, 'createPurchaseOrders']);
Route::post('/material-lines/{line_id}/transfer', [MaterialListController::class, 'requestTransfer']);
Route::delete('/material-lines/{line_id}', [MaterialListController::class, 'destroyLine']);
Route::get('/material-lines/{line_id}/supplier-suggestions', [MaterialListController::class, 'supplierSuggestions']);
// Field missions (crew dispatch)
Route::get('/field-missions', [FieldMissionController::class, 'index']);
Route::get('/field-missions/{id}', [FieldMissionController::class, 'show']);
Route::post('/field-missions/{source_type}/{source_id}/create', [FieldMissionController::class, 'createForSource']);
Route::post('/field-missions/{id}/crew', [FieldMissionController::class, 'storeCrew']);
Route::put('/field-missions/crew/{crew_id}', [FieldMissionController::class, 'updateCrew']);
Route::delete('/field-missions/crew/{crew_id}', [FieldMissionController::class, 'destroyCrew']);
Route::post('/field-missions/{id}/items', [FieldMissionController::class, 'storeItem']);
Route::delete('/field-missions/items/{item_id}', [FieldMissionController::class, 'destroyItem']);
Route::post('/field-missions/{id}/dispatch', [FieldMissionController::class, 'dispatchMission']);
Route::post('/field-missions/{id}/returns', [FieldMissionController::class, 'recordReturns']);
Route::post('/field-missions/{id}/close', [FieldMissionController::class, 'closeMission']);
Route::post('/field-missions/{id}/expenses', [FieldMissionController::class, 'storeExpense']);
Route::delete('/field-missions/expenses/{expense_id}', [FieldMissionController::class, 'destroyExpense']);
// Repair dispatch routes (internal holding / external)
Route::get('/repair-dispatches', [RepairDispatchController::class, 'index']);
Route::get('/repair-dispatches/org-units', [RepairDispatchController::class, 'orgUnits']);
Route::get('/repair-dispatches/{id}', [RepairDispatchController::class, 'show']);
Route::post('/repair-dispatches/line/{line_id}', [RepairDispatchController::class, 'store']);
Route::post('/repair-dispatches/{id}/advance', [RepairDispatchController::class, 'advance']);
Route::post('/repair-dispatches/{id}/cancel', [RepairDispatchController::class, 'cancel']);
// Spare parts
Route::get('/spare-parts', [SparePartController::class, 'index']);
Route::get('/spare-parts/create', [SparePartController::class, 'create']);
Route::post('/spare-parts', [SparePartController::class, 'store']);
Route::get('/spare-parts/{id}/edit', [SparePartController::class, 'edit']);
Route::put('/spare-parts/{id}', [SparePartController::class, 'update']);
Route::delete('/spare-parts/{id}', [SparePartController::class, 'destroy']);
// Checklists
Route::get('/checklists', [ChecklistController::class, 'index']);
Route::get('/checklists/create', [ChecklistController::class, 'create']);
Route::post('/checklists', [ChecklistController::class, 'store']);
Route::get('/checklists/{id}/edit', [ChecklistController::class, 'edit']);
Route::put('/checklists/{id}', [ChecklistController::class, 'update']);
Route::delete('/checklists/{id}', [ChecklistController::class, 'destroy']);
// Service records
Route::get('/service-records', [ServiceRecordController::class, 'index']);
Route::get('/service-records/create', [ServiceRecordController::class, 'create']);
Route::post('/service-records', [ServiceRecordController::class, 'store']);
Route::get('/service-records/{id}', [ServiceRecordController::class, 'show']);
Route::get('/service-records/{id}/edit', [ServiceRecordController::class, 'edit']);
Route::put('/service-records/{id}', [ServiceRecordController::class, 'update']);
Route::delete('/service-records/{id}', [ServiceRecordController::class, 'destroy']);
// Part replacements
Route::get('/part-replacements', [PartReplacementController::class, 'index']);
Route::get('/part-replacements/create', [PartReplacementController::class, 'create']);
Route::post('/part-replacements', [PartReplacementController::class, 'store']);
Route::get('/part-replacements/equipment/{equipment_id}/parts', [PartReplacementController::class, 'equipmentParts']);
Route::get('/part-replacements/{id}/edit', [PartReplacementController::class, 'edit']);
Route::put('/part-replacements/{id}', [PartReplacementController::class, 'update']);
Route::delete('/part-replacements/{id}', [PartReplacementController::class, 'destroy']);
// Tool crib
Route::get('/tools', [ToolController::class, 'index']);
Route::get('/tools/create', [ToolController::class, 'create']);
Route::post('/tools', [ToolController::class, 'store']);
Route::get('/tools/{id}/edit', [ToolController::class, 'edit']);
Route::put('/tools/{id}', [ToolController::class, 'update']);
Route::delete('/tools/{id}', [ToolController::class, 'destroy']);
Route::get('/tools/{id}/checkout', [ToolController::class, 'checkoutForm']);
Route::post('/tools/{id}/checkout', [ToolController::class, 'checkout']);
Route::post('/tools/{id}/return', [ToolController::class, 'returnTool']);
// Inspection visits
Route::get('/inspection-visits', [InspectionVisitController::class, 'index']);
Route::get('/inspection-visits/create', [InspectionVisitController::class, 'create']);
Route::post('/inspection-visits', [InspectionVisitController::class, 'store']);
Route::get('/inspection-visits/{id}', [InspectionVisitController::class, 'show']);
Route::get('/inspection-visits/{id}/edit', [InspectionVisitController::class, 'edit']);
Route::put('/inspection-visits/{id}', [InspectionVisitController::class, 'update']);
Route::delete('/inspection-visits/{id}', [InspectionVisitController::class, 'destroy']);
// Failure reports
Route::get('/failure-reports', [FailureReportController::class, 'index']);
Route::get('/failure-reports/create', [FailureReportController::class, 'create']);
Route::post('/failure-reports', [FailureReportController::class, 'store']);
Route::get('/failure-reports/{id}/edit', [FailureReportController::class, 'edit']);
Route::put('/failure-reports/{id}', [FailureReportController::class, 'update']);
Route::delete('/failure-reports/{id}', [FailureReportController::class, 'destroy']);
// Dispatch board & service contracts
Route::get('/dispatch-board', [DispatchBoardController::class, 'index']);
Route::post('/dispatch-board', [DispatchBoardController::class, 'store']);
Route::put('/dispatch-board/{id}', [DispatchBoardController::class, 'update']);
Route::get('/service-contracts', [ServiceContractController::class, 'index']);
Route::get('/service-contracts/create', [ServiceContractController::class, 'create']);
Route::post('/service-contracts', [ServiceContractController::class, 'store']);
Route::get('/service-contracts/{id}/edit', [ServiceContractController::class, 'edit']);
Route::put('/service-contracts/{id}', [ServiceContractController::class, 'update']);
Route::delete('/service-contracts/{id}', [ServiceContractController::class, 'destroy']);
// Reports & calendar
Route::get('/reports', [ReportController::class, 'index']);
Route::get('/reports/export', [ReportController::class, 'export']);
Route::get('/calendar', [CalendarController::class, 'index']);
Route::get('/calendar/events', [CalendarController::class, 'events']);
Route::get('/iot', [IotController::class, 'index']);
Route::post('/iot/devices', [IotController::class, 'storeDevice']);
Route::post('/iot/rules', [IotController::class, 'storeRule']);
Route::post('/iot/ingest', [IotController::class, 'ingest']);
});