diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/Properties.kt b/src/main/kotlin/com/android/trisolarisserver/controller/Properties.kt index 4949cf4..7c21457 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/Properties.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/Properties.kt @@ -62,10 +62,11 @@ class Properties( org = org, code = request.code, name = request.name, + addressText = request.addressText, timezone = request.timezone ?: "Asia/Kolkata", currency = request.currency ?: "INR", active = request.active ?: true, - emailAliases = request.emailAliases?.toMutableSet() ?: mutableSetOf() + otaAliases = request.otaAliases?.toMutableSet() ?: mutableSetOf() ) val saved = propertyRepo.save(property) return saved.toResponse() @@ -203,11 +204,12 @@ class Properties( property.code = request.code property.name = request.name + property.addressText = request.addressText ?: property.addressText property.timezone = request.timezone ?: property.timezone property.currency = request.currency ?: property.currency property.active = request.active ?: property.active - if (request.emailAliases != null) { - property.emailAliases = request.emailAliases.toMutableSet() + if (request.otaAliases != null) { + property.otaAliases = request.otaAliases.toMutableSet() } return propertyRepo.save(property).toResponse() @@ -243,10 +245,11 @@ private fun Property.toResponse(): PropertyResponse { orgId = orgId, code = code, name = name, + addressText = addressText, timezone = timezone, currency = currency, active = active, - emailAliases = emailAliases.toSet() + otaAliases = otaAliases.toSet() ) } diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt b/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt index 81f9d98..97915ea 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt @@ -65,7 +65,8 @@ class RoomTypes( code = request.code, name = request.name, baseOccupancy = request.baseOccupancy ?: 2, - maxOccupancy = request.maxOccupancy ?: 3 + maxOccupancy = request.maxOccupancy ?: 3, + otaAliases = request.otaAliases?.toMutableSet() ?: mutableSetOf() ) return roomTypeRepo.save(roomType).toResponse() } @@ -92,6 +93,9 @@ class RoomTypes( roomType.name = request.name roomType.baseOccupancy = request.baseOccupancy ?: roomType.baseOccupancy roomType.maxOccupancy = request.maxOccupancy ?: roomType.maxOccupancy + if (request.otaAliases != null) { + roomType.otaAliases = request.otaAliases.toMutableSet() + } return roomTypeRepo.save(roomType).toResponse() } @@ -131,6 +135,7 @@ private fun RoomType.toResponse(): RoomTypeResponse { code = code, name = name, baseOccupancy = baseOccupancy, - maxOccupancy = maxOccupancy + maxOccupancy = maxOccupancy, + otaAliases = otaAliases.toSet() ) } 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 75b3ba9..fd1189c 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/dto/OrgPropertyDtos.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/dto/OrgPropertyDtos.kt @@ -14,19 +14,21 @@ data class OrgResponse( data class PropertyCreateRequest( val code: String, val name: String, + val addressText: String? = null, val timezone: String? = null, val currency: String? = null, val active: Boolean? = null, - val emailAliases: Set? = null + val otaAliases: Set? = null ) data class PropertyUpdateRequest( val code: String, val name: String, + val addressText: String? = null, val timezone: String? = null, val currency: String? = null, val active: Boolean? = null, - val emailAliases: Set? = null + val otaAliases: Set? = null ) data class PropertyResponse( @@ -34,10 +36,11 @@ data class PropertyResponse( val orgId: UUID, val code: String, val name: String, + val addressText: String?, val timezone: String, val currency: String, val active: Boolean, - val emailAliases: Set + val otaAliases: Set ) data class UserResponse( diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt index 2383a87..60c08cd 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt @@ -6,7 +6,8 @@ data class RoomTypeUpsertRequest( val code: String, val name: String, val baseOccupancy: Int? = null, - val maxOccupancy: Int? = null + val maxOccupancy: Int? = null, + val otaAliases: Set? = null ) data class RoomTypeResponse( @@ -15,5 +16,6 @@ data class RoomTypeResponse( val code: String, val name: String, val baseOccupancy: Int, - val maxOccupancy: Int + val maxOccupancy: Int, + val otaAliases: Set ) diff --git a/src/main/kotlin/com/android/trisolarisserver/models/property/Property.kt b/src/main/kotlin/com/android/trisolarisserver/models/property/Property.kt index a807eff..c27f8d7 100644 --- a/src/main/kotlin/com/android/trisolarisserver/models/property/Property.kt +++ b/src/main/kotlin/com/android/trisolarisserver/models/property/Property.kt @@ -34,13 +34,16 @@ class Property( @Column(name = "is_active", nullable = false) var active: Boolean = true, + @Column(name = "address_text") + var addressText: String? = null, + @ElementCollection(fetch = FetchType.EAGER) @CollectionTable( name = "property_email_alias", joinColumns = [JoinColumn(name = "property_id")] ) @Column(name = "alias", nullable = false) - var emailAliases: MutableSet = mutableSetOf(), + var otaAliases: MutableSet = mutableSetOf(), @Column(name = "created_at", nullable = false, columnDefinition = "timestamptz") val createdAt: OffsetDateTime = OffsetDateTime.now() diff --git a/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt b/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt index 8ab5071..a32ac20 100644 --- a/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt +++ b/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt @@ -32,6 +32,14 @@ class RoomType( @Column(name = "max_occupancy", nullable = false) var maxOccupancy: Int = 3, + @ElementCollection(fetch = FetchType.EAGER) + @CollectionTable( + name = "room_type_alias", + joinColumns = [JoinColumn(name = "room_type_id")] + ) + @Column(name = "alias", nullable = false) + var otaAliases: MutableSet = mutableSetOf(), + @Column(name = "created_at", nullable = false, columnDefinition = "timestamptz") val createdAt: OffsetDateTime = OffsetDateTime.now() ) diff --git a/src/main/kotlin/com/android/trisolarisserver/service/EmailIngestionService.kt b/src/main/kotlin/com/android/trisolarisserver/service/EmailIngestionService.kt index dea7e94..6f1806e 100644 --- a/src/main/kotlin/com/android/trisolarisserver/service/EmailIngestionService.kt +++ b/src/main/kotlin/com/android/trisolarisserver/service/EmailIngestionService.kt @@ -260,7 +260,8 @@ class EmailIngestionService( val aliases = mutableSetOf() aliases.add(property.name) aliases.add(property.code) - aliases.addAll(property.emailAliases) + property.addressText?.let { aliases.add(it) } + aliases.addAll(property.otaAliases) aliases.any { alias -> alias.isNotBlank() && haystack.contains(alias.lowercase()) } } return if (matches.size == 1) matches.first() else null