group(function () { // Current user with roles, permissions, and tenant Route::get('/user', function (\Illuminate\Http\Request $request) { return $request->user()->load('tenant', 'roles.permissions', 'permissions'); }); // Dashboard stats Route::get('/dashboard/stats', [DashboardController::class, 'index'])->name('api.dashboard.stats'); // Projects API Route::apiResource('projects', ProjectController::class); Route::put('projects/{project}/status', [ProjectController::class, 'updateStatus']); Route::get('projects-export/excel', [ProjectController::class, 'exportExcel']); Route::get('projects-export/pdf', [ProjectController::class, 'exportPdf']); // Tasks API Route::apiResource('tasks', TaskController::class); Route::put('tasks/{task}/status', [TaskController::class, 'updateStatus']); Route::get('tasks-kanban', [TaskController::class, 'kanban']); // Employees API Route::apiResource('employees', EmployeeController::class); Route::get('employees/{employee}/work-logs', [EmployeeController::class, 'workLogs']); Route::get('employees/{employee}/financials', [EmployeeController::class, 'financials']); // Expenses API Route::apiResource('expenses', ExpenseController::class); Route::put('expenses/{expense}/approve', [ExpenseController::class, 'approve']); Route::put('expenses/{expense}/reject', [ExpenseController::class, 'reject']); // Inventory API Route::prefix('inventory')->group(function () { Route::get('items', [InventoryController::class, 'items']); Route::get('warehouses', [InventoryController::class, 'warehouses']); Route::get('transactions', [InventoryController::class, 'transactions']); Route::post('stock-in', [InventoryController::class, 'stockIn']); Route::post('stock-out', [InventoryController::class, 'stockOut']); Route::get('current-stock', [InventoryController::class, 'currentStock']); }); // Locale/Settings API Route::post('/locale', function (\Illuminate\Http\Request $request) { $locale = $request->validate(['locale' => 'required|in:fa,en,ar'])['locale']; session(['locale' => $locale]); app()->setLocale($locale); if ($request->user()) { $request->user()->update(['locale' => $locale]); } return response()->json(['locale' => $locale]); }); Route::post('/calendar', function (\Illuminate\Http\Request $request) { $calendar = $request->validate(['calendar' => 'required|in:jalali,gregorian'])['calendar']; session(['calendar' => $calendar]); return response()->json(['calendar' => $calendar]); }); });