138 lines
7.3 KiB
PHP
138 lines
7.3 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\Api\AuthController;
|
|
use App\Http\Controllers\Api\ClientController;
|
|
use App\Http\Controllers\Api\ClientGroupController;
|
|
use App\Http\Controllers\Api\ClientLocationController;
|
|
use App\Http\Controllers\Api\ContactController;
|
|
use App\Http\Controllers\Api\ClientCategoryController;
|
|
use App\Http\Controllers\Api\FournisseurController;
|
|
use App\Http\Controllers\Api\ProductController;
|
|
use App\Http\Controllers\Api\ProductCategoryController;
|
|
use App\Http\Controllers\Api\EmployeeController;
|
|
use App\Http\Controllers\Api\ThanatopractitionerController;
|
|
use App\Http\Controllers\Api\PractitionerDocumentController;
|
|
use App\Http\Controllers\Api\DeceasedController;
|
|
use App\Http\Controllers\Api\DeceasedDocumentController;
|
|
use App\Http\Controllers\Api\InterventionController;
|
|
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| API Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| These routes are loaded with the "api" middleware group and are prefixed
|
|
| with /api automatically via bootstrap/app.php.
|
|
|
|
|
*/
|
|
|
|
Route::prefix('auth')->group(function () {
|
|
Route::post('/register', [AuthController::class, 'register']);
|
|
Route::post('/login', [AuthController::class, 'login']);
|
|
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
Route::get('/me', [AuthController::class, 'me']);
|
|
// Alias to support clients calling /api/auth/user
|
|
Route::get('/user', [AuthController::class, 'me']);
|
|
Route::post('/logout', [AuthController::class, 'logout']);
|
|
Route::post('/logout-all', [AuthController::class, 'logoutAll']);
|
|
});
|
|
});
|
|
|
|
// Protected API routes
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
// Client management
|
|
// IMPORTANT: Specific routes must come before apiResource
|
|
Route::get('/clients/searchBy', [ClientController::class, 'searchBy']);
|
|
|
|
Route::apiResource('clients', ClientController::class);
|
|
Route::apiResource('client-groups', ClientGroupController::class);
|
|
|
|
Route::apiResource('client-locations', ClientLocationController::class);
|
|
Route::get('clients/{clientId}/locations', [ClientLocationController::class, 'getLocationsByClient']);
|
|
|
|
// Contact management
|
|
Route::apiResource('contacts', ContactController::class);
|
|
Route::get('clients/{clientId}/contacts', [ContactController::class, 'getContactsByClient']);
|
|
|
|
Route::apiResource('client-categories', ClientCategoryController::class);
|
|
|
|
// Fournisseur management
|
|
Route::get('/fournisseurs/searchBy', [FournisseurController::class, 'searchBy']);
|
|
Route::apiResource('fournisseurs', FournisseurController::class);
|
|
Route::get('fournisseurs/{fournisseurId}/contacts', [ContactController::class, 'getContactsByFournisseur']);
|
|
|
|
// Product management
|
|
Route::get('/products/searchBy', [ProductController::class, 'searchBy']);
|
|
Route::get('/products/low-stock', [ProductController::class, 'lowStock']);
|
|
Route::get('/products/by-category', [ProductController::class, 'byCategory']);
|
|
Route::get('/products/statistics', [ProductController::class, 'statistics']);
|
|
Route::apiResource('products', ProductController::class);
|
|
Route::patch('/products/{id}/stock', [ProductController::class, 'updateStock']);
|
|
|
|
// Product Category management
|
|
Route::get('/product-categories/search', [ProductCategoryController::class, 'search']);
|
|
Route::get('/product-categories/active', [ProductCategoryController::class, 'active']);
|
|
Route::get('/product-categories/roots', [ProductCategoryController::class, 'roots']);
|
|
Route::get('/product-categories/hierarchical', [ProductCategoryController::class, 'hierarchical']);
|
|
Route::get('/product-categories/statistics', [ProductCategoryController::class, 'statistics']);
|
|
Route::apiResource('product-categories', ProductCategoryController::class);
|
|
Route::patch('/product-categories/{id}/toggle-active', [ProductCategoryController::class, 'toggleActive']);
|
|
|
|
// Employee management
|
|
Route::get('/employees/searchBy', [EmployeeController::class, 'searchBy']);
|
|
Route::get('/employees/thanatopractitioners', [EmployeeController::class, 'getThanatopractitioners']);
|
|
Route::apiResource('employees', EmployeeController::class);
|
|
|
|
// Thanatopractitioner management
|
|
Route::get('/thanatopractitioners/search', [ThanatopractitionerController::class, 'searchByEmployeeName']);
|
|
Route::apiResource('thanatopractitioners', ThanatopractitionerController::class);
|
|
Route::get('employees/{employeeId}/thanatopractitioners', [ThanatopractitionerController::class, 'getByEmployee']);
|
|
Route::get('/thanatopractitioners/{id}/documents', [PractitionerDocumentController::class, 'getByThanatopractitioner']);
|
|
|
|
// Practitioner Document management
|
|
Route::get('/practitioner-documents/searchBy', [PractitionerDocumentController::class, 'searchBy']);
|
|
Route::get('/practitioner-documents/expiring', [PractitionerDocumentController::class, 'getExpiringDocuments']);
|
|
Route::apiResource('practitioner-documents', PractitionerDocumentController::class);
|
|
Route::patch('/practitioner-documents/{id}/verify', [PractitionerDocumentController::class, 'verifyDocument']);
|
|
|
|
// Deceased Routes
|
|
Route::prefix('deceased')->group(function () {
|
|
Route::get('/searchBy', [DeceasedController::class, 'searchBy']);
|
|
Route::get('/', [DeceasedController::class, 'index']);
|
|
Route::post('/', [DeceasedController::class, 'store']);
|
|
Route::get('/{deceased}', [DeceasedController::class, 'show']);
|
|
Route::put('/{deceased}', [DeceasedController::class, 'update']);
|
|
Route::delete('/{deceased}', [DeceasedController::class, 'destroy']);
|
|
});
|
|
|
|
// Deceased Document Routes
|
|
Route::prefix('deceased-documents')->group(function () {
|
|
Route::get('/by-deceased/{deceasedId}', [DeceasedDocumentController::class, 'byDeceased']);
|
|
Route::get('/by-doc-type', [DeceasedDocumentController::class, 'byDocType']);
|
|
Route::get('/by-file/{fileId}', [DeceasedDocumentController::class, 'byFile']);
|
|
Route::get('/search', [DeceasedDocumentController::class, 'search']);
|
|
Route::get('/', [DeceasedDocumentController::class, 'index']);
|
|
Route::post('/', [DeceasedDocumentController::class, 'store']);
|
|
Route::get('/{id}', [DeceasedDocumentController::class, 'show']);
|
|
Route::put('/{id}', [DeceasedDocumentController::class, 'update']);
|
|
Route::delete('/{id}', [DeceasedDocumentController::class, 'destroy']);
|
|
});
|
|
|
|
// Intervention Routes
|
|
Route::prefix('interventions')->group(function () {
|
|
Route::get('/by-month', [InterventionController::class, 'byMonth']);
|
|
Route::get('/', [InterventionController::class, 'index']);
|
|
Route::post('/', [InterventionController::class, 'store']);
|
|
Route::post('/with-all-data', [InterventionController::class, 'createInterventionalldata']);
|
|
Route::get('/{intervention}', [InterventionController::class, 'show']);
|
|
Route::put('/{intervention}', [InterventionController::class, 'update']);
|
|
Route::delete('/{intervention}', [InterventionController::class, 'destroy']);
|
|
Route::patch('/{intervention}/status', [InterventionController::class, 'changeStatus']);
|
|
Route::patch('/{intervention}/assign', [InterventionController::class, 'assignPractitioner']);
|
|
});
|
|
|
|
});
|