diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/Guests.kt b/src/main/kotlin/com/android/trisolarisserver/controller/Guests.kt index 933c109..974e41b 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/Guests.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/Guests.kt @@ -44,6 +44,15 @@ class Guests( if (phone.isBlank()) { throw ResponseStatusException(HttpStatus.BAD_REQUEST, "phoneE164 required") } + val booking = bookingRepo.findById(request.bookingId).orElseThrow { + ResponseStatusException(HttpStatus.NOT_FOUND, "Booking not found") + } + if (booking.property.id != property.id) { + throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Booking not in property") + } + if (booking.primaryGuest != null) { + throw ResponseStatusException(HttpStatus.CONFLICT, "Booking already linked to guest") + } val existing = guestRepo.findByPropertyIdAndPhoneE164(propertyId, phone) if (existing != null) { throw ResponseStatusException(HttpStatus.CONFLICT, "Guest already exists") @@ -58,8 +67,11 @@ class Guests( addressText = request.addressText?.trim()?.ifBlank { null }, updatedAt = now ) - guestRepo.save(guest) - return setOf(guest).toResponse(guestVehicleRepo, guestRatingRepo).first() + val saved = guestRepo.save(guest) + booking.primaryGuest = saved + booking.updatedAt = now + bookingRepo.save(booking) + return setOf(saved).toResponse(guestVehicleRepo, guestRatingRepo).first() } @GetMapping("/search") diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/dto/OrgPropertyDtos.kt b/src/main/kotlin/com/android/trisolarisserver/controller/dto/OrgPropertyDtos.kt index 2807a5d..953286f 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/dto/OrgPropertyDtos.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/dto/OrgPropertyDtos.kt @@ -51,6 +51,7 @@ data class GuestResponse( data class GuestCreateRequest( val phoneE164: String, + val bookingId: UUID, val name: String? = null, val nationality: String? = null, val addressText: String? = null