aboutsummaryrefslogtreecommitdiff
path: root/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/AttributesController.kt
diff options
context:
space:
mode:
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.kt52
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