package de.pheerai.rcdbquery.dataMappings enum class Vendor(val prettyName: String, val fullName: String, val queryId: Int) { INTAMIN("Intamin","Intamin Amusement Rides", 6837), VEKOMA("Vekoma", 6836), MACK("Mack Rides", "Mack Rides GmbH & Co KG", 6856), GERSTLAUER("Gerstlauer", "Gerstlauer Amusement Rides GmbH", 6948), ZIERER("Zierer", 6861), MAURER("Maurer", "Maurer Rides GmbH", 6905), B_AND_M("B&M", "Bolliger & Mabillard", 6831), SBF_VISA("SBF Visa", "SBF Visa Group", 7028), ZAMPERLA("Zamperla", 6892), GCI("GCI", "Great Coasters International", 6860), RMC("RMC", "Rocky Mountain Construction", 10583) ; constructor(name: String, queryId: Int) : this(name, name, queryId) val queryParam get() = "${queryParamName}=${this.queryId}" companion object { const val queryParamName = "mk" fun createQueryParam(vararg vendors: Vendor) = vendors.joinToString("&") { it.queryParam } fun createQueryParam(name: String): String = createQueryParam(*searchByName(name).toTypedArray()) fun getByName(name: String): Vendor? = values().firstOrNull { it.prettyName == name } fun searchByName(name: String): List { val searchName = name.toLowerCase() return values().filter { it.prettyName.toLowerCase().contains(searchName) }.toList() } } }