feat(admin/trips): surface dumpsite release records in trip detail panel

- Eager-load dumpsiteReleases.dumpsite + dumpsiteReleases.releasedByDriver
  in AdminTripController::show()
- Add releases[] array to TripResource via whenLoaded('dumpsiteReleases')
  - Fields: weight_kg, released_at, dumpsite_name, driver_name,
    gate_pass_number, dumpsite_attendant, notes
- Admin Trips detail panel now shows a 'Dumpsite Releases' section
  below the timeline with per-release cards
- Load row updated to show release count e.g. '450 kg (2 releases)'
This commit is contained in:
Developer
2026-07-02 15:01:23 +08:00
parent f5d520181e
commit 3beafa3ac2
3 changed files with 34 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ class TripResource extends JsonResource
'dumpsite_arrival_time' => $this->dumpsite_arrival_time?->toIso8601String(),
'dumpsite_departure_time' => $this->dumpsite_departure_time?->toIso8601String(),
'total_load_kg' => $this->total_load_kg,
'current_load_kg' => $this->current_load_kg,
'is_detouring' => $this->is_detouring,
'route' => RouteResource::make($this->whenLoaded('route')),
'team' => CollectionTeamResource::make($this->whenLoaded('team')),
@@ -28,6 +29,16 @@ class TripResource extends JsonResource
'stops' => TripStopResource::collection($this->whenLoaded('stops')),
'timeline' => TripTimelineEventResource::collection($this->whenLoaded('timelineEvents')),
'notes' => $this->notes,
'releases' => $this->whenLoaded('dumpsiteReleases', fn () => $this->dumpsiteReleases->map(fn ($r) => [
'id' => $r->id,
'weight_kg' => $r->weight_kg,
'released_at' => $r->released_at?->toIso8601String(),
'dumpsite_name' => $r->dumpsite?->name,
'driver_name' => $r->releasedByDriver?->full_name,
'gate_pass_number' => $r->gate_pass_number,
'dumpsite_attendant' => $r->dumpsite_attendant_name,
'notes' => $r->notes,
])),
'created_at' => $this->created_at?->toIso8601String(),
];
}