import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:healum/utils/trackers.dart';
import 'package:intl/intl.dart';
class DataBase {
final database = FirebaseFirestore.instance;
isUserAdded(String uid) async {
return (await database.collection("users").doc(uid).get()).exists;
}
addUser(String uid) async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
await database
.collection('users')
.doc(uid)
.set((await deviceInfo.androidInfo).toMap());
}
pushTrackerData(
Tracker tracker, String uid, Map<String, dynamic> trackerData) async {
DateTime dateTime = DateTime.now();
Map<String, dynamic> data = {
"date_added_on": Timestamp.now(),
"day_added_on": DateFormat('EEEE').format(dateTime)
};
data.addEntries(trackerData.entries);
await database
.collection('users')
.doc(uid)
.collection(tracker.key)
.doc()
.set(data);
}
getFirstTrackerData(Tracker tracker, String uid) async {
try {
return (await database
.collection('users')
.doc(uid)
.collection(tracker.key)
.orderBy("date_added_on", descending: true)
.limit(1)
.get())
.docChanges
.first
.doc
.data()['value']
.toString();
} catch (_) {
return null;
}
}
updateSpecificTrackerDataByTimestamp(
Tracker tracker, String uid, Timestamp timestamp) async {
final doc = (await database
.collection('users')
.doc(uid)
.collection(tracker.key)
.where("date_added_on", isEqualTo: timestamp)
.limit(1)
.get())
.docChanges
.first
.doc
.reference;
Map existingData = (await doc.get()).data();
print(existingData);
existingData['value'] = tracker.value;
var batch = database.batch();
batch.update(doc, existingData);
await batch.commit();
}
Future<List> getAllTrackerData(Tracker tracker, String uid) async {
try {
var snapshotList = (await database
.collection('users')
.doc(uid)
.collection(tracker.key)
.orderBy("date_added_on", descending: true)
.get())
.docChanges;
List<Map<String, dynamic>> mapList =
snapshotList.map((e) => e.doc.data()).toList();
return mapList;
} catch (_) {
return null;
}
}
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter