82 lines
4.3 KiB
PHP
82 lines
4.3 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\V1\AuthController;
|
|
use App\Http\Controllers\Api\V1\BookingController;
|
|
use App\Http\Controllers\Api\V1\EstablishmentController;
|
|
use App\Http\Controllers\Api\V1\Integration\MachineEventController;
|
|
use App\Http\Controllers\Api\V1\MachineController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\AuthController as SupervisorAuthController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\BookingController as SupervisorBookingController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\DashboardController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\MachineController as SupervisorMachineController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\PricingController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\PromotionController;
|
|
use App\Http\Controllers\Api\V1\Supervisor\WashController as SupervisorWashController;
|
|
use App\Http\Controllers\Api\V1\WalletController;
|
|
use App\Http\Controllers\Api\V1\WashController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::prefix('v1')->group(function () {
|
|
Route::prefix('auth')->group(function () {
|
|
Route::post('register', [AuthController::class, 'register']);
|
|
Route::post('login', [AuthController::class, 'login']);
|
|
Route::post('refresh', [AuthController::class, 'refresh']);
|
|
|
|
Route::middleware(['auth:sanctum', 'auth.api.user'])->group(function () {
|
|
Route::post('logout', [AuthController::class, 'logout']);
|
|
Route::get('me', [AuthController::class, 'me']);
|
|
});
|
|
});
|
|
|
|
Route::middleware(['auth:sanctum', 'auth.api.user'])->group(function () {
|
|
Route::prefix('wallet')->group(function () {
|
|
Route::get('/', [WalletController::class, 'index']);
|
|
Route::get('transactions', [WalletController::class, 'transactions']);
|
|
Route::post('top-up/initiate', [WalletController::class, 'initiateTopUp']);
|
|
Route::post('top-up/confirm', [WalletController::class, 'confirmTopUp']);
|
|
});
|
|
|
|
Route::post('bookings', [BookingController::class, 'store']);
|
|
Route::get('bookings', [BookingController::class, 'index']);
|
|
Route::get('bookings/{uuid}', [BookingController::class, 'show']);
|
|
Route::patch('bookings/{uuid}/cancel', [BookingController::class, 'cancel']);
|
|
Route::patch('bookings/{uuid}/move', [BookingController::class, 'move']);
|
|
|
|
Route::post('washes/start', [WashController::class, 'start']);
|
|
Route::get('washes', [WashController::class, 'index']);
|
|
Route::get('washes/{uuid}', [WashController::class, 'show']);
|
|
});
|
|
|
|
Route::get('establishments', [EstablishmentController::class, 'index']);
|
|
Route::get('establishments/{uuid}', [EstablishmentController::class, 'show']);
|
|
Route::get('machines/{uuid}', [MachineController::class, 'show']);
|
|
Route::get('machines/{uuid}/availability', [MachineController::class, 'availability']);
|
|
Route::get('machines/{uuid}/pricing', [MachineController::class, 'pricing']);
|
|
|
|
Route::post('wallet/top-up/webhook/{provider}', [WalletController::class, 'webhook']);
|
|
|
|
Route::prefix('supervisor')->group(function () {
|
|
Route::post('auth/login', [SupervisorAuthController::class, 'login']);
|
|
|
|
Route::middleware(['auth.supervisor', 'supervisor.scope'])->group(function () {
|
|
Route::post('auth/logout', [SupervisorAuthController::class, 'logout']);
|
|
Route::get('dashboard', [DashboardController::class, 'index']);
|
|
Route::get('machines', [SupervisorMachineController::class, 'index']);
|
|
Route::get('bookings', [SupervisorBookingController::class, 'index']);
|
|
Route::get('washes', [SupervisorWashController::class, 'index']);
|
|
Route::get('pricing', [PricingController::class, 'index']);
|
|
Route::post('pricing', [PricingController::class, 'store']);
|
|
Route::put('pricing/{id}', [PricingController::class, 'update']);
|
|
Route::get('promotions', [PromotionController::class, 'index']);
|
|
});
|
|
});
|
|
|
|
Route::prefix('integrations/machines')
|
|
->middleware('machine.integration')
|
|
->group(function () {
|
|
Route::post('events', [MachineEventController::class, 'store']);
|
|
Route::post('heartbeat', [MachineEventController::class, 'heartbeat']);
|
|
Route::post('commands/{uuid}/ack', [MachineEventController::class, 'ackCommand']);
|
|
});
|
|
});
|