import 'package:cloud_firestore/cloud_firestore.dart'; import '../models/task_log_model.dart'; class TaskLogService { FirebaseFirestore get _db => FirebaseFirestore.instance; Stream> getTaskLogs({ DateTime? from, DateTime? to, String? projectId, String? userId, }) { Query query = _db.collection('task_logs'); if (userId != null && userId.isNotEmpty) { query = query.where('userId', isEqualTo: userId); } if (projectId != null && projectId.isNotEmpty) { query = query.where('projectId', isEqualTo: projectId); } if (from != null) { query = query.where('date', isGreaterThanOrEqualTo: Timestamp.fromDate(from)); } if (to != null) { query = query.where('date', isLessThanOrEqualTo: Timestamp.fromDate(to)); } return query.orderBy('date', descending: true).snapshots().map((snapshot) => snapshot.docs.map((doc) => TaskLogModel.fromMap(doc.id, doc.data() as Map)).toList()); } Future getLatestLogForProject(String projectId) async { final snapshot = await _db.collection('task_logs') .where('projectId', isEqualTo: projectId) .orderBy('date', descending: true) .limit(1) .get(); if (snapshot.docs.isNotEmpty) { return TaskLogModel.fromMap(snapshot.docs.first.id, snapshot.docs.first.data()); } return null; } Future addTaskLog(TaskLogModel log) async { await _db.collection('task_logs').add(log.toMap()); } Future updateTaskLog(TaskLogModel log) async { await _db.collection('task_logs').doc(log.id).update(log.toMap()); } Future deleteTaskLog(String id) async { await _db.collection('task_logs').doc(id).delete(); } }