feat(applicant): My Logistics shows assigned hotel + room

Replace the program-level hotel.findUnique (broken after removing @unique)
with the caller's HotelStay (include hotel) on their AttendingMember.
Returns hotel: {name,address,link,notes}|null and room: {roomNumber,
checkInAt,checkOutAt}|null. MyLogisticsCard renders the Room section
(number + Monaco-time check-in/out) when room is present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt
2026-06-04 19:21:29 +02:00
parent 4cd2651f9c
commit 9313eb96f0
3 changed files with 77 additions and 15 deletions

View File

@@ -175,7 +175,7 @@ export function MyLogisticsCard() {
if (!data) return null
const { hotel, myFlight, visaVisible, myVisa } = data
const { hotel, room, myFlight, visaVisible, myVisa } = data
const hasFlightData =
myFlight &&
@@ -227,6 +227,38 @@ export function MyLogisticsCard() {
)}
</div>
{/* Room */}
{room && (
<div className="space-y-1">
<p className="text-muted-foreground text-xs font-medium uppercase tracking-wide">
Room
</p>
<div className="space-y-0.5">
{room.roomNumber && (
<p className="text-sm font-medium">Room {room.roomNumber}</p>
)}
{room.checkInAt && (
<p className="text-muted-foreground text-sm">
Check-in:{' '}
<span className="text-foreground">
{formatMonacoTime(room.checkInAt)}
</span>{' '}
<span className="text-xs text-muted-foreground">(Monaco time)</span>
</p>
)}
{room.checkOutAt && (
<p className="text-muted-foreground text-sm">
Check-out:{' '}
<span className="text-foreground">
{formatMonacoTime(room.checkOutAt)}
</span>{' '}
<span className="text-xs text-muted-foreground">(Monaco time)</span>
</p>
)}
</div>
</div>
)}
{/* Flights */}
<div className="space-y-2">
<p className="text-muted-foreground text-xs font-medium uppercase tracking-wide">