mobile_team/lib/services/task_log_service.dart
2026-04-16 15:06:41 +05:30

58 lines
1.7 KiB
Dart

import 'package:cloud_firestore/cloud_firestore.dart';
import '../models/task_log_model.dart';
class TaskLogService {
FirebaseFirestore get _db => FirebaseFirestore.instance;
Stream<List<TaskLogModel>> 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<String, dynamic>)).toList());
}
Future<TaskLogModel?> 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<void> addTaskLog(TaskLogModel log) async {
await _db.collection('task_logs').add(log.toMap());
}
Future<void> updateTaskLog(TaskLogModel log) async {
await _db.collection('task_logs').doc(log.id).update(log.toMap());
}
Future<void> deleteTaskLog(String id) async {
await _db.collection('task_logs').doc(id).delete();
}
}