isInside(), 422, 'Visitor is not currently checked in.'); $visit->update([ 'status' => Visit::STATUS_CHECKED_OUT, 'checked_out_at' => now(), 'checked_out_by' => $actorRef, ]); AuditLog::record( $visit->owner_ref, 'visit.checked_out', $visit->organization_id, $actorRef, Visit::class, $visit->id, ['visitor' => $visit->visitor->full_name], ); $this->notifications->visitorCheckedOut($visit); $this->webhooks->dispatch('visit.checked_out', $visit->fresh(['visitor', 'host'])); return $visit->fresh(['visitor', 'host']); } public function checkOutByQrToken(string $ownerRef, string $qrToken, ?string $actorRef = null): Visit { $visit = Visit::owned($ownerRef) ->where('qr_token', $qrToken) ->currentlyInside() ->firstOrFail(); return $this->checkOut($visit, $actorRef); } }