task.dart 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import 'task_stage.dart';
  2. class Task {
  3. final String id;
  4. final String documentId;
  5. final String taskType;
  6. final String name;
  7. final String status;
  8. final int progress;
  9. final String? currentStep;
  10. final String? errorMessage;
  11. final DateTime? startedAt;
  12. final DateTime? completedAt;
  13. final DateTime? createdAt;
  14. final DateTime? updatedAt;
  15. final List<TaskStage> stages;
  16. Task({
  17. required this.id,
  18. required this.documentId,
  19. required this.taskType,
  20. required this.name,
  21. required this.status,
  22. required this.progress,
  23. this.currentStep,
  24. this.errorMessage,
  25. this.startedAt,
  26. this.completedAt,
  27. this.createdAt,
  28. this.updatedAt,
  29. required this.stages,
  30. });
  31. factory Task.fromJson(Map<String, dynamic> data) {
  32. return Task(
  33. id: data['id'] != null ? data['id'].toString() : '',
  34. documentId:
  35. data['documentId'] != null ? data['documentId'].toString() : '',
  36. taskType: data['taskType'] != null ? data['taskType'].toString() : 'parse',
  37. name: data['name'] != null ? data['name'].toString() : '',
  38. status: data['status'] != null ? data['status'].toString() : 'pending',
  39. progress: (data['progress'] ?? 0) as int,
  40. currentStep:
  41. data['currentStep'] != null ? data['currentStep'].toString() : null,
  42. errorMessage:
  43. data['errorMessage'] != null ? data['errorMessage'].toString() : null,
  44. startedAt: data['startedAt'] != null
  45. ? DateTime.parse(data['startedAt'].toString())
  46. : null,
  47. completedAt: data['completedAt'] != null
  48. ? DateTime.parse(data['completedAt'].toString())
  49. : null,
  50. createdAt: data['createdAt'] != null
  51. ? DateTime.parse(data['createdAt'].toString())
  52. : null,
  53. updatedAt: data['updatedAt'] != null
  54. ? DateTime.parse(data['updatedAt'].toString())
  55. : null,
  56. stages: (data['stages'] as List<dynamic>? ?? [])
  57. .map((e) => TaskStage.fromJson(e as Map<String, dynamic>))
  58. .toList(),
  59. );
  60. }
  61. }