getAverageCompletionTime function
- dynamic firestore,
- String userId
Returns the average completion time (in hours) for all completed tasks
by the given userId
.
For each completed task, calculates the time difference between creation and completion. Returns the average of those durations. Returns 0.0 if no tasks have been completed.
Implementation
Future<double> getAverageCompletionTime(
FirebaseFirestore firestore,
String userId,
) async {
final snapshot =
await firestore
.collection(tasksCollectionFieldName)
.where(ownerUserIdFieldName, isEqualTo: userId)
.where(isCompletedFieldName, isEqualTo: true)
.get();
if (snapshot.docs.isEmpty) return 0.0;
double totalHours = 0;
for (final doc in snapshot.docs) {
final data = doc.data();
final creation = (data[creationDateFieldName] as Timestamp).toDate();
final completion =
(data[taskCompletionDateTimeFieldName] as Timestamp).toDate();
totalHours += completion.difference(creation).inMinutes / 60.0;
}
return double.parse((totalHours / snapshot.docs.length).toStringAsFixed(1));
}