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, org = org,
code = request.code, code = request.code,
name = request.name, name = request.name,
addressText = request.addressText,
timezone = request.timezone ?: "Asia/Kolkata", timezone = request.timezone ?: "Asia/Kolkata",
currency = request.currency ?: "INR", currency = request.currency ?: "INR",
active = request.active ?: true, active = request.active ?: true,
emailAliases = request.emailAliases?.toMutableSet() ?: mutableSetOf() otaAliases = request.otaAliases?.toMutableSet() ?: mutableSetOf()
) )
val saved = propertyRepo.save(property) val saved = propertyRepo.save(property)
return saved.toResponse() return saved.toResponse()
@@ -203,11 +204,12 @@ class Properties(
property.code = request.code property.code = request.code
property.name = request.name property.name = request.name
property.addressText = request.addressText ?: property.addressText
property.timezone = request.timezone ?: property.timezone property.timezone = request.timezone ?: property.timezone
property.currency = request.currency ?: property.currency property.currency = request.currency ?: property.currency
property.active = request.active ?: property.active property.active = request.active ?: property.active
if (request.emailAliases != null) { if (request.otaAliases != null) {
property.emailAliases = request.emailAliases.toMutableSet() property.otaAliases = request.otaAliases.toMutableSet()
} }
return propertyRepo.save(property).toResponse() return propertyRepo.save(property).toResponse()
@@ -243,10 +245,11 @@ private fun Property.toResponse(): PropertyResponse {
orgId = orgId, orgId = orgId,
code = code, code = code,
name = name, name = name,
addressText = addressText,
timezone = timezone, timezone = timezone,
currency = currency, currency = currency,
active = active, active = active,
emailAliases = emailAliases.toSet() otaAliases = otaAliases.toSet()
) )
} }

View File

@@ -65,7 +65,8 @@ class RoomTypes(
code = request.code, code = request.code,
name = request.name, name = request.name,
baseOccupancy = request.baseOccupancy ?: 2, baseOccupancy = request.baseOccupancy ?: 2,
maxOccupancy = request.maxOccupancy ?: 3 maxOccupancy = request.maxOccupancy ?: 3,
otaAliases = request.otaAliases?.toMutableSet() ?: mutableSetOf()
) )
return roomTypeRepo.save(roomType).toResponse() return roomTypeRepo.save(roomType).toResponse()
} }
@@ -92,6 +93,9 @@ class RoomTypes(
roomType.name = request.name roomType.name = request.name
roomType.baseOccupancy = request.baseOccupancy ?: roomType.baseOccupancy roomType.baseOccupancy = request.baseOccupancy ?: roomType.baseOccupancy
roomType.maxOccupancy = request.maxOccupancy ?: roomType.maxOccupancy roomType.maxOccupancy = request.maxOccupancy ?: roomType.maxOccupancy
if (request.otaAliases != null) {
roomType.otaAliases = request.otaAliases.toMutableSet()
}
return roomTypeRepo.save(roomType).toResponse() return roomTypeRepo.save(roomType).toResponse()
} }
@@ -131,6 +135,7 @@ private fun RoomType.toResponse(): RoomTypeResponse {
code = code, code = code,
name = name, name = name,
baseOccupancy = baseOccupancy, baseOccupancy = baseOccupancy,
maxOccupancy = maxOccupancy maxOccupancy = maxOccupancy,
otaAliases = otaAliases.toSet()
) )
} }

View File

@@ -14,19 +14,21 @@ data class OrgResponse(
data class PropertyCreateRequest( data class PropertyCreateRequest(
val code: String, val code: String,
val name: String, val name: String,
val addressText: String? = null,
val timezone: String? = null, val timezone: String? = null,
val currency: String? = null, val currency: String? = null,
val active: Boolean? = null, val active: Boolean? = null,
val emailAliases: Set<String>? = null val otaAliases: Set<String>? = null
) )
data class PropertyUpdateRequest( data class PropertyUpdateRequest(
val code: String, val code: String,
val name: String, val name: String,
val addressText: String? = null,
val timezone: String? = null, val timezone: String? = null,
val currency: String? = null, val currency: String? = null,
val active: Boolean? = null, val active: Boolean? = null,
val emailAliases: Set<String>? = null val otaAliases: Set<String>? = null
) )
data class PropertyResponse( data class PropertyResponse(
@@ -34,10 +36,11 @@ data class PropertyResponse(
val orgId: UUID, val orgId: UUID,
val code: String, val code: String,
val name: String, val name: String,
val addressText: String?,
val timezone: String, val timezone: String,
val currency: String, val currency: String,
val active: Boolean, val active: Boolean,
val emailAliases: Set<String> val otaAliases: Set<String>
) )
data class UserResponse( data class UserResponse(

View File

@@ -6,7 +6,8 @@ data class RoomTypeUpsertRequest(
val code: String, val code: String,
val name: String, val name: String,
val baseOccupancy: Int? = null, val baseOccupancy: Int? = null,
val maxOccupancy: Int? = null val maxOccupancy: Int? = null,
val otaAliases: Set<String>? = null
) )
data class RoomTypeResponse( data class RoomTypeResponse(
@@ -15,5 +16,6 @@ data class RoomTypeResponse(
val code: String, val code: String,
val name: String, val name: String,
val baseOccupancy: Int, 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) @Column(name = "is_active", nullable = false)
var active: Boolean = true, var active: Boolean = true,
@Column(name = "address_text")
var addressText: String? = null,
@ElementCollection(fetch = FetchType.EAGER) @ElementCollection(fetch = FetchType.EAGER)
@CollectionTable( @CollectionTable(
name = "property_email_alias", name = "property_email_alias",
joinColumns = [JoinColumn(name = "property_id")] joinColumns = [JoinColumn(name = "property_id")]
) )
@Column(name = "alias", nullable = false) @Column(name = "alias", nullable = false)
var emailAliases: MutableSet<String> = mutableSetOf(), var otaAliases: MutableSet<String> = mutableSetOf(),
@Column(name = "created_at", nullable = false, columnDefinition = "timestamptz") @Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
val createdAt: OffsetDateTime = OffsetDateTime.now() val createdAt: OffsetDateTime = OffsetDateTime.now()

View File

@@ -32,6 +32,14 @@ class RoomType(
@Column(name = "max_occupancy", nullable = false) @Column(name = "max_occupancy", nullable = false)
var maxOccupancy: Int = 3, 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") @Column(name = "created_at", nullable = false, columnDefinition = "timestamptz")
val createdAt: OffsetDateTime = OffsetDateTime.now() val createdAt: OffsetDateTime = OffsetDateTime.now()
) )

View File

@@ -260,7 +260,8 @@ class EmailIngestionService(
val aliases = mutableSetOf<String>() val aliases = mutableSetOf<String>()
aliases.add(property.name) aliases.add(property.name)
aliases.add(property.code) 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()) } aliases.any { alias -> alias.isNotBlank() && haystack.contains(alias.lowercase()) }
} }
return if (matches.size == 1) matches.first() else null return if (matches.size == 1) matches.first() else null