vernova/routes/api.php
2026-07-26 19:58:27 +03:30

80 lines
3.4 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\ProjectController;
use App\Http\Controllers\TaskController;
use App\Http\Controllers\EmployeeController;
use App\Http\Controllers\ExpenseController;
use App\Http\Controllers\InventoryController;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group by default.
|
*/
Route::middleware('auth:sanctum')->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]);
});
});