use proper alias

This commit is contained in:
androidlover5842
2026-01-24 19:28:26 +05:30
parent ac79d6d1c0
commit 9300a85bd3
7 changed files with 38 additions and 13 deletions

View File

@@ -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()
)
}

View File

@@ -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()
)
}

View File

@@ -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<String>? = null
val otaAliases: Set<String>? = 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<String>? = null
val otaAliases: Set<String>? = 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<String>
val otaAliases: Set<String>
)
data class UserResponse(

View File

@@ -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<String>? = 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<String>
)

View File

@@ -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<String> = mutableSetOf(),
var otaAliases: MutableSet<String> = mutableSetOf(),
@Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
val createdAt: OffsetDateTime = OffsetDateTime.now()

View File

@@ -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<String> = mutableSetOf(),
@Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
val createdAt: OffsetDateTime = OffsetDateTime.now()
)

View File

@@ -260,7 +260,8 @@ class EmailIngestionService(
val aliases = mutableSetOf<String>()
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