firstOrFail(); return $shipment->trackingEvents() ->orderByDesc('event_date') ->orderByDesc('event_time') ->get(); } public function addTrackingEvent(int $shipment_id, array $data): ShipmentTrackingEvent { return ShipmentTrackingEvent::create(array_merge($data, [ 'shipment_id' => $shipment_id, 'source' => 'manual', ])); } public function getShipmentWithTracking(string $awb_no) { $shipment = Shipment::where('awb_no', $awb_no) ->with(['carrierMappings', 'trackingEvents']) ->firstOrFail(); return $shipment; } }