middleware('check.static_hash'); Route::get('/dashboard/summary', [\App\Http\Controllers\Api\DashboardController::class, 'summary']); // Protected Routes Route::middleware(['auth:sanctum'])->group(function () { Route::post('/logout', [AuthController::class, 'logout']); Route::get('/me', [AuthController::class, 'me']); Route::get('/user', function (Request $request) { return $request->user(); }); // NAKS Sync Trigger Route::post('/naks/trigger-sync', [\App\Http\Controllers\Api\NaksSyncController::class, 'triggerSync']); // Mobile Types Route::get('/mobile-types', [\App\Http\Controllers\Api\MobileTypeController::class, 'index']); // Inspection History Route::prefix('inspection-history')->group(function () { Route::get('/modules', [InspectionHistoryController::class, 'modules']); Route::get('/', [InspectionHistoryController::class, 'list']); Route::post('/', [InspectionHistoryController::class, 'upload']); Route::post('/upload-other', [InspectionHistoryController::class, 'uploadOther']); Route::delete('/{id}', [InspectionHistoryController::class, 'delete']); Route::post('/bulk-delete', [InspectionHistoryController::class, 'bulkDelete']); }); // Document History Route::match(['get', 'post'], '/document-history', [\App\Http\Controllers\Api\DocumentHistoryController::class, 'index']); // Mobile-safe autocomplete-type endpoints (hashless) Route::post('/autocomplete-type/{type}', [AutocompleteTypeController::class, 'handle']); // Setting retrieval Route::get('/settings/common', [SettingController::class, 'common']); Route::get('/settings/{key}', [SettingController::class, 'get']); // Work Permit Hierarchy Route::get('/work-permit/hierarchy', [\App\Http\Controllers\Api\WorkPermitHierarchyController::class, 'index']); // Spool Release Workflow Route::post('/spool-release/advance', [\App\Http\Controllers\Api\SpoolReleaseWorkflowController::class, 'advance']); Route::post('/spool-release/rollback', [\App\Http\Controllers\Api\SpoolReleaseWorkflowController::class, 'rollback']); // Endpoints - Admin-Ajax API Service Route::prefix('endpoints')->group(function () { Route::get('/', [EndpointController::class, 'index'])->name('endpoints.index'); Route::get('/{endpoint}/info', [EndpointController::class, 'info'])->name('endpoints.info'); Route::match(['get', 'post'], '/{endpoint}', [EndpointController::class, 'handle']) ->where('endpoint', '[a-zA-Z0-9\-_\/]+') ->name('endpoints.handle'); }); // Dynamic Headless API Routes (Firewall & Advanced Auth included) Route::middleware([ 'api', \App\Http\Middleware\IpFirewall::class, \App\Http\Middleware\AdvancedAuth::class ])->group(function () { // Permission Check Endpoint Route::get('/auth-check/{module}/{permission?}', [DynamicResourceController::class, 'checkAuth']); // Table Column Values Endpoint Route::get('/table-column-values', [DynamicResourceController::class, 'getTableColumnValues']); Route::prefix('stats')->group(function () { Route::get('/ndt-calculation', [\App\Http\Controllers\Api\StatsController::class, 'ndtCalculation']); Route::get('/ndt-calculation/test-packs', [\App\Http\Controllers\Api\StatsController::class, 'ndtCalculationTestPacks']); Route::get('/ndt-calculation/backlogs', [\App\Http\Controllers\Api\StatsController::class, 'ndtCalculationBacklogs']); Route::get('/welding-by-project', [\App\Http\Controllers\Api\StatsController::class, 'weldingByProject']); }); // Dynamic CRUD & View Rendering (includes weld_logs/summary) // Matches: /api/users/read, /api/weld_logs/summary, /api/products/view Route::match(['get', 'post', 'put', 'patch', 'delete', 'options'], '/{table}/{action}', [DynamicResourceController::class, 'handle']) ->where('action', 'read|list|get|create|store|insert|update|save|delete|remove|view|render|summary|calculate|columns|values'); }); });