From 7601d721d22bbb2dd91e0e2196d4ab6b0c5b3c33 Mon Sep 17 00:00:00 2001 From: Developer Date: Tue, 30 Jun 2026 11:25:31 +0800 Subject: [PATCH] feat(api): add active-trip endpoint for helper and enable Vite dev server CORS --- .../V1/Helper/HelperAssignmentController.php | 32 +++++++++++++++++++ routes/api.php | 1 + vite.config.js | 3 ++ 3 files changed, 36 insertions(+) diff --git a/app/Http/Controllers/Api/V1/Helper/HelperAssignmentController.php b/app/Http/Controllers/Api/V1/Helper/HelperAssignmentController.php index 4c00c52..e513a7a 100644 --- a/app/Http/Controllers/Api/V1/Helper/HelperAssignmentController.php +++ b/app/Http/Controllers/Api/V1/Helper/HelperAssignmentController.php @@ -81,6 +81,38 @@ class HelperAssignmentController extends ApiController return $this->ok(new TeamMemberResource($assignment->load(['team.driver', 'team.scanner', 'team.truck', 'team.area'])), 'Assignment rejected.'); } + public function activeTrip(Request $request): JsonResponse + { + $user = $request->user(); + $today = now()->toDateString(); + + $assignment = TeamMember::query() + ->where('user_id', $user->id) + ->where('role_in_team', TeamMember::ROLE_HELPER) + ->whereDate('assigned_from', '<=', $today) + ->where(function ($q) use ($today) { + $q->whereNull('assigned_until')->orWhereDate('assigned_until', '>=', $today); + }) + ->first(); + + if (! $assignment) { + return $this->ok(null, 'No active assignment for today.'); + } + + $trip = \App\Models\Trip::query() + ->where('team_id', $assignment->team_id) + ->whereIn('status', [\App\Models\Trip::STATUS_SCHEDULED, \App\Models\Trip::STATUS_IN_PROGRESS, \App\Models\Trip::STATUS_AT_DUMPSITE]) + ->with(['route', 'team.driver', 'team.scanner', 'truck', 'dumpsite', 'stops.dropOffPoint']) + ->orderBy('scheduled_date') + ->first(); + + if (! $trip) { + return $this->ok(null, 'No active trip for assigned team.'); + } + + return $this->ok(\App\Http\Resources\TripResource::make($trip)); + } + public function history(Request $request): JsonResponse { $user = $request->user(); diff --git a/routes/api.php b/routes/api.php index 84e87b6..523fb86 100644 --- a/routes/api.php +++ b/routes/api.php @@ -356,6 +356,7 @@ Route::prefix('helper') ->middleware(['auth:sanctum', 'role:helper']) ->group(function () { Route::get('/assignment', [HelperAssignmentController::class, 'assignment'])->name('assignment'); + Route::get('/active-trip', [HelperAssignmentController::class, 'activeTrip'])->name('active-trip'); Route::post('/assignment/accept', [HelperAssignmentController::class, 'accept'])->name('accept'); Route::post('/assignment/reject', [HelperAssignmentController::class, 'reject'])->name('reject'); Route::get('/history', [HelperAssignmentController::class, 'history'])->name('history'); diff --git a/vite.config.js b/vite.config.js index 421b569..2b130e2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -8,4 +8,7 @@ export default defineConfig({ refresh: true, }), ], + server: { + cors: true, + }, });