diff options
Diffstat (limited to 'shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/AttributesController.kt')
-rw-r--r-- | shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/AttributesController.kt | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/AttributesController.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/AttributesController.kt new file mode 100644 index 0000000..6262ec8 --- /dev/null +++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/AttributesController.kt @@ -0,0 +1,52 @@ +package mx.trackermap.TrackerMap.controllers + +import mx.trackermap.TrackerMap.client.apis.AttributesApi +import mx.trackermap.TrackerMap.client.models.Attribute +import mx.trackermap.TrackerMap.client.models.Device + +class AttributesController( + private val attributesApi: AttributesApi, + private val sessionController: SessionController) +{ + var userAttributes = emptyArray<Attribute>() + val deviceAttributes = mutableMapOf<Int, Array<Attribute>>() + + /** userAttributes **/ + + suspend fun getUserAttributes() { + userAttributes = attributesApi.attributesComputedGet(userId = sessionController.user?.id) + } + + fun getUserAttribute(attribute: String) = userAttributes.find { it.attribute == attribute } + + suspend fun createUserAttribute(attribute: Attribute) { + userAttributes += attributesApi.attributesComputedPost(attribute) + } + + suspend fun updateUserAttribute(attribute: Attribute) { + userAttributes = userAttributes.map { + if (attribute.id != null && it.id == attribute.id) { + attributesApi.attributesComputedIdPut(attribute, attribute.id) + } else it + }.toTypedArray() + } + + suspend fun deleteUserAttribute(attribute: String) { + userAttributes.find { it.attribute == attribute }?.id?.let { id -> + attributesApi.attributesComputedIdDelete(id) + userAttributes = userAttributes.filter { it.id != id }.toTypedArray() + } + } + + /** deviceAttributes **/ + + suspend fun getDeviceAttributes(device: Device) { + device.id?.let { + deviceAttributes[it] = attributesApi.attributesComputedGet(deviceId = device.id) + } + } + + fun getDeviceAttribute(device: Device, attribute: String) = + deviceAttributes[device.id]?.find { it.attribute == attribute } + +}
\ No newline at end of file |