diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index b131d4c..2e6697f 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -5,14 +5,14 @@ import java.io.File data class ReactableOffer( val room: Room, val offer: Offer, - val floorInfo: FloorInfo + val floor: Floor ) fun main() { val rooms = getRooms().filter { room -> room.unitType == config.general.unitType } - val offers = getOffers().offers.filter { offer -> + val offers = getOffers(rooms.map { it.wocasId }).offers.filter { offer -> offer.adres[0].plaats !in listOf( "ZWOLLE", "GRONINGEN", @@ -25,15 +25,15 @@ fun main() { if (offer == null) null else ReactableOffer(room, offer, getFloorInfo(room)) }.filter { - val gender = it.floorInfo.genderPreference + val gender = it.floor.floorInfo.genderPreference ((gender == "female" && config.gender.female) || (gender == "male" && config.gender.male) || (gender == "none" && config.gender.none)) && - ((config.general.smoking == -1 && !it.floorInfo.smokingAllowed) || (config.general.smoking == 1 && it.floorInfo.smokingAllowed) || config.general.smoking == 0) && + ((config.general.smoking == -1 && !it.floor.floorInfo.smokingAllowed) || (config.general.smoking == 1 && it.floor.floorInfo.smokingAllowed) || config.general.smoking == 0) && - ((config.general.pets == -1 && !it.floorInfo.petsAllowed) || (config.general.pets == 1 && it.floorInfo.petsAllowed) || config.general.pets == 0) + ((config.general.pets == -1 && !it.floor.floorInfo.petsAllowed) || (config.general.pets == 1 && it.floor.floorInfo.petsAllowed) || config.general.pets == 0) } val fileName = "offers.md" @@ -45,21 +45,26 @@ fun main() { val address = it.offer.adres[0] str.append("## [${address.straatnaam} ${address.nummer}, ${address.plaats.lowercase().capitalize()}](https://sshxl.nl/nl/aanbod/${it.room.flowId}-${address.straatnaam.lowercase().replace(" ", "-")})\n") - str.append("- Huisgenoten: ${it.room.numberOfRooms-1}\n") - val genderString = when (it.floorInfo.genderPreference) { + str.append("\n| Categorie | Waarde |\n") + str.append("|-----------|--------|\n") + + str.append("| Huisgenoten | ${it.room.numberOfRooms-1} |\n") + + val genderString = when (it.floor.floorInfo.genderPreference) { "none" -> "Geen voorkeur" "male" -> "Man" "female" -> "Vrouw" - else -> it.floorInfo.genderPreference + else -> it.floor.floorInfo.genderPreference } - str.append("- Geslacht: $genderString\n") + str.append("| Geslacht | $genderString |\n") - str.append("- Roken: ${if (it.floorInfo.smokingAllowed) "Mag" else "Mag niet"}\n") - str.append("- Huisdieren: ${if (it.floorInfo.petsAllowed) "Mogen" else "Mogen niet"}\n") + str.append("| Roken | ${if (it.floor.floorInfo.smokingAllowed) "✅ Mag" else "❌ Mag niet"} |\n") + str.append("| Huisdieren | ${if (it.floor.floorInfo.petsAllowed) "✅ Mogen" else "❌ Mogen niet"} |\n") + str.append("\n") - str.append("### Message: \n\n${it.floorInfo.description}\n") + str.append("### Message: \n\n${it.floor.floorInfo.description}\n") str.append("\n\n") } diff --git a/src/main/kotlin/getFloorInfo.kt b/src/main/kotlin/getFloorInfo.kt index bbefab6..c6d4a82 100644 --- a/src/main/kotlin/getFloorInfo.kt +++ b/src/main/kotlin/getFloorInfo.kt @@ -16,7 +16,7 @@ data class FloorInfo( ) @Serializable -data class RoomInfo( +data class Floor( @SerialName("ExpireBy") val expireBy: String, @SerialName("RemainingTime") val remainingTime: String, @SerialName("ApplicantCount") val applicantCount: Int, @@ -41,8 +41,8 @@ data class RoomInfo( @SerialName("Kind") val kind: String, ) -fun getFloorInfo(room: Room): FloorInfo { +fun getFloorInfo(room: Room): Floor { val response = getEndpoint("offer/${room.flowId}") - return Json.decodeFromString(response).floorInfo + return Json.decodeFromString(response) } diff --git a/src/main/kotlin/getOffers.kt b/src/main/kotlin/getOffers.kt index 6d12ef2..b3661e7 100644 --- a/src/main/kotlin/getOffers.kt +++ b/src/main/kotlin/getOffers.kt @@ -3,6 +3,7 @@ package me.koendev import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json +import me.koendev.utils.println import java.net.http.HttpClient import java.net.http.HttpResponse @@ -80,8 +81,10 @@ data class Adres( ) -fun getOffers(): Offers { - val response = getEndpoint("OData-mv?EENHEID_H?\$filter=((((((((((((((((((((((eenheidnummer%20eq%2033700034)%20or%20(eenheidnummer%20eq%2020214020))%20or%20(eenheidnummer%20eq%2026912101))%20or%20(eenheidnummer%20eq%2026912038))%20or%20(eenheidnummer%20eq%2082200297))%20or%20(eenheidnummer%20eq%2021001262))%20or%20(eenheidnummer%20eq%2036900015))%20or%20(eenheidnummer%20eq%2052000240))%20or%20(eenheidnummer%20eq%2051800177))%20or%20(eenheidnummer%20eq%2036400433))%20or%20(eenheidnummer%20eq%2051900083))%20or%20(eenheidnummer%20eq%2036400019))%20or%20(eenheidnummer%20eq%2046200340))%20or%20(eenheidnummer%20eq%2029602069))%20or%20(eenheidnummer%20eq%2033700216))%20or%20(eenheidnummer%20eq%2011010008))%20or%20(eenheidnummer%20eq%2051900057))%20or%20(eenheidnummer%20eq%2021002009))%20or%20(eenheidnummer%20eq%2052000218))%20or%20(eenheidnummer%20eq%2036400091))%20or%20(eenheidnummer%20eq%2046200669))%20or%20(eenheidnummer%20eq%2029601023))&\$expand=ADRES_H!(\$select=plaats,postcode,straatnaam,nummer,toevoeging,aanduiding,locatie,letter,oid),EENHEID_HUUR!(\$select=eenheidnummer,bruto_huur,enh_nettohuur,enh_object,contract_type),HUUROVEREENKOMST_H!(\$select=dcnnummer,einddatum,enhheefthuu),ASP_TOTAAL_C!(\$select=eenheidnummer,totopp,totoppgem),ASSSUBJECTPERSK_H!(\$select=enhheeftkenm,pkheeftasp,waarde,kenwaarde;\$expand=KENMERK_H!(\$select=code))&\$select=eenheidnummer,adrheeftenh,object,soort_product") +fun getOffers(ids: List): Offers { + val offerFilter = ids.joinToString("%20or%20") { "eenheidnummer%20eq%20$it" } + + val response = getEndpoint("OData-mv?EENHEID_H?\$filter=${offerFilter}&\$expand=ADRES_H!(\$select=plaats,postcode,straatnaam,nummer,toevoeging,aanduiding,locatie,letter,oid),EENHEID_HUUR!(\$select=eenheidnummer,bruto_huur,enh_nettohuur,enh_object,contract_type),HUUROVEREENKOMST_H!(\$select=dcnnummer,einddatum,enhheefthuu),ASP_TOTAAL_C!(\$select=eenheidnummer,totopp,totoppgem),ASSSUBJECTPERSK_H!(\$select=enhheeftkenm,pkheeftasp,waarde,kenwaarde;\$expand=KENMERK_H!(\$select=code))&\$select=eenheidnummer,adrheeftenh,object,soort_product") return Json.decodeFromString(response) } \ No newline at end of file