80 lines
3.4 KiB
PHP
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]);
|
|
});
|
|
});
|