getDoneExercisesInSeconds method
Returns the total number of seconds the user exercised on a given day.
Defaults to today if no day
is specified.
Implementation
Future<int> getDoneExercisesInSeconds(String userEmail,
{DateTime? day}) async {
final userRef = await _getUserDocRef(userEmail);
final DateTime targetDay = day ?? DateTime.now();
final dayStart = DateTime(targetDay.year, targetDay.month, targetDay.day);
final nextDayStart = dayStart.add(const Duration(days: 1));
final logs = await userRef
.collection('exerciseLogs')
.where('startTime',
isGreaterThanOrEqualTo: Timestamp.fromDate(dayStart))
.where('startTime', isLessThan: Timestamp.fromDate(nextDayStart))
.get();
int total = 0;
for (final doc in logs.docs) {
final data = doc.data();
final start = (data['startTime'] as Timestamp?)?.toDate();
final end = (data['endTime'] as Timestamp?)?.toDate();
if (start != null && end != null) {
total += end.difference(start).inSeconds;
}
}
return total;
}