From f464f243991491dbf7be03899087644301bec67d Mon Sep 17 00:00:00 2001 From: Ashish Bailkeri Date: Sun, 26 Feb 2023 12:47:34 -0500 Subject: [PATCH] meetings update --- lib/meetings.dart | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/lib/meetings.dart b/lib/meetings.dart index 0782c5f..81c6dd4 100644 --- a/lib/meetings.dart +++ b/lib/meetings.dart @@ -32,7 +32,7 @@ class Seller implements Comparable { @override int compareTo(Seller other) { - return name.compareTo(other.name); + return price.compareTo(other.price); } } @@ -44,6 +44,18 @@ class Filter { Filter(this.locations, this.price, this.meetingTime); } +List fetchNSellers(int n) { + List sellers = List.empty(growable: true); + CollectionReference users = FirebaseFirestore.instance.collection('sellers'); + users.get().then((value) => () { + for (var doc in value.docs) { + sellers.add(Seller(doc["name"], doc["uid"], doc["location"], + TimeRange(doc["start-time"], doc["end-time"]), doc["price"])); + } + }); + return sellers; +} + Future> getSellers(Filter filter) async { CollectionReference users = FirebaseFirestore.instance.collection('sellers'); List sellers = List.empty(growable: true); @@ -55,9 +67,26 @@ Future> getSellers(Filter filter) async { isLessThanOrEqualTo: filter.price?.high); final QuerySnapshot snapshot = await query.get(); - for (var doc in snapshot.docs) { - sellers.add(Seller(doc["name"], doc["uid"], doc["location"], - TimeRange(doc["start-time"], doc["end-time"]), doc["price"])); + final startTime = filter.meetingTime?.endTime; + final endTime = filter.meetingTime?.startTime; + + if (startTime != null && endTime != null) { + var docs = snapshot.docs + .where((element) => + startTime.compareTo(element["start-time"]) > 0 || + element["start-time"] == (startTime)) + .where((element) => + endTime.compareTo(element["end-time"]) < 0 || + element["end-time"] == (endTime)); + for (var doc in docs) { + sellers.add(Seller(doc["name"], doc["uid"], doc["location"], + TimeRange(doc["start-time"], doc["end-time"]), doc["price"])); + } + } else { + for (var doc in snapshot.docs) { + sellers.add(Seller(doc["name"], doc["uid"], doc["location"], + TimeRange(doc["start-time"], doc["end-time"]), doc["price"])); + } } return sellers; }