У меня такая структура БД 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).
Если ни один день не забронирован. он должен показать все три слота. Таким образом, пользователь может назначить встречу.