Files
citrus-cms/routes/api.php
T
2026-04-28 21:15:09 +03:00

115 lines
5.2 KiB
PHP

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\DynamicResourceController;
use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\EndpointController;
use App\Http\Controllers\Api\AutocompleteTypeController;
use App\Http\Controllers\Api\SettingController;
use App\Http\Controllers\InspectionHistoryController;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
// Public Routes
Route::get('/mobile-types-test', [\App\Http\Controllers\Api\MobileTypeController::class, 'index']);
Route::get('/project-app-urls', [App\Http\Controllers\Api\ProjectAppUrlsController::class, 'index']);
Route::post('/login', [AuthController::class, 'login']);
Route::get('/stats/dashboard-stats', [\App\Http\Controllers\Api\StatsController::class, 'dashboardStats'])->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');
});
});