Запрос Firebase Firestore в Android Kotlin

У меня такая структура БД Firestore. В этом приложении я могу отображать все временные интервалы Линды для клиента.

Сбор клиентов

введите здесь описание изображения

Коллекция временных интервалов пользователя

введите здесь описание изображения

Коллекция пользователей

введите здесь описание изображения

Назначение коллекций пользователей

введите здесь описание изображения

Запрос на получение всех временных интервалов Lynda1102

 // get all time slots
override fun getAllSlots(): MutableLiveData<List<Slots>> {
    remoteDB.collection("Timeslots").whereEqualTo("id", "Lynda1102")
        .addSnapshotListener { querySnapshot, e ->

            //  check if null
            if (e != null) {
                Timber.e("Listen failed. $e")
                savedAllTimeSlots.value = null
            }

            val saveTimeSlots: MutableList<Slots> = mutableListOf()
            for (doc in querySnapshot!!) {
                val slotItem = doc.toObject(RemoteTimeSlots::class.java).apply { id = doc.id }
                    .mapToTimeSlots()
                saveTimeSlots.add(slotItem)
            }

            // Post value 
            savedAllTimeSlots.value = saveTimeSlots

        }

    return savedAllTimeSlots
}

Я наблюдаю за данными в действии

    // observe for service changes
    viewModel.getAllSlots().observe(this, androidx.lifecycle.Observer {
        timeSlotsAdapter.differ.submitList(it)

    })

Как запросить и показать доступные слоты для клиента на определенную дату.

Ex- 13-05-2020 у Линды всего три слота. Заказчик забронировал слот №2.

Таким образом, теперь 13-05-2020 другие клиенты должны будут видеть только два оставшихся слота (slot1 и slot3).

Если ни один день не забронирован. он должен показать все три слота. Таким образом, пользователь может назначить встречу.


person Spikeysanju    schedule 12.05.2020    source источник


Ответы (1)


Добавьте поле внутри временных интервалов как isAvailable:true. Всякий раз, когда пользователь выбирает временной интервал, пометьте ключ как ложный и запрашивайте временные интервалы, для которых isAvailable установлено значение true.

person Haris Bin Saif    schedule 17.06.2020