97 lines
2.6 KiB
Dart
97 lines
2.6 KiB
Dart
import '../task.dart';
|
|
|
|
// TodoList Task
|
|
class TodoListTask extends Task {
|
|
final List<String> todoItems;
|
|
|
|
TodoListTask({
|
|
required super.id,
|
|
required super.jobId,
|
|
required this.todoItems,
|
|
super.stationOrder,
|
|
super.completed = false,
|
|
super.optional = false,
|
|
super.completedAt,
|
|
super.completedBy,
|
|
super.taskOrder,
|
|
super.title,
|
|
super.description,
|
|
super.displayName,
|
|
});
|
|
|
|
factory TodoListTask.fromJson(Map<String, dynamic> json) {
|
|
final commonProps = Task.parseCommonProperties(json);
|
|
final taskSpecificData = json['taskSpecificData'] as Map<String, dynamic>;
|
|
|
|
final rawItems = taskSpecificData['todoItems'] as List? ?? [];
|
|
final todoItems = rawItems.map((item) => item?.toString() ?? '').toList();
|
|
|
|
return TodoListTask(
|
|
id: commonProps['id'],
|
|
jobId: commonProps['jobId'],
|
|
stationOrder: commonProps['stationOrder'],
|
|
completed: commonProps['completed'],
|
|
optional: commonProps['optional'],
|
|
completedAt: commonProps['completedAt'],
|
|
completedBy: commonProps['completedBy'],
|
|
taskOrder: commonProps['taskOrder'],
|
|
title: commonProps['title'],
|
|
description: commonProps['description'],
|
|
displayName: commonProps['displayName'],
|
|
todoItems: todoItems,
|
|
);
|
|
}
|
|
|
|
@override
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'jobId': jobId,
|
|
'stationOrder': stationOrder,
|
|
'completed': completed,
|
|
'optional': optional,
|
|
'completedAt': completedAt?.toIso8601String(),
|
|
'completedBy': completedBy,
|
|
'taskOrder': taskOrder,
|
|
'description': description,
|
|
'displayName': displayName,
|
|
'taskSpecificData': {
|
|
'taskType': 'TODOLIST',
|
|
'title': title,
|
|
'todoItems': todoItems,
|
|
},
|
|
};
|
|
}
|
|
|
|
@override
|
|
TodoListTask copyWith({
|
|
String? id,
|
|
String? jobId,
|
|
int? stationOrder,
|
|
bool? completed,
|
|
bool? optional,
|
|
DateTime? completedAt,
|
|
String? completedBy,
|
|
int? taskOrder,
|
|
String? title,
|
|
String? description,
|
|
String? displayName,
|
|
List<String>? todoItems,
|
|
}) {
|
|
return TodoListTask(
|
|
id: id ?? this.id,
|
|
jobId: jobId ?? this.jobId,
|
|
stationOrder: stationOrder ?? this.stationOrder,
|
|
completed: completed ?? this.completed,
|
|
optional: optional ?? this.optional,
|
|
completedAt: completedAt ?? this.completedAt,
|
|
completedBy: completedBy ?? this.completedBy,
|
|
taskOrder: taskOrder ?? this.taskOrder,
|
|
title: title ?? this.title,
|
|
description: description ?? this.description,
|
|
displayName: displayName ?? this.displayName,
|
|
todoItems: todoItems ?? this.todoItems,
|
|
);
|
|
}
|
|
}
|