Files
votianlt/app/lib/models/tasks/comment_task.dart

100 lines
2.7 KiB
Dart

import '../task.dart';
// Comment Task
class CommentTask extends Task {
final String commentText;
final bool required;
CommentTask({
required super.id,
required super.jobId,
required this.commentText,
this.required = false,
super.stationOrder,
super.completed = false,
super.optional = false,
super.completedAt,
super.completedBy,
super.taskOrder,
super.title,
super.description,
super.displayName,
});
factory CommentTask.fromJson(Map<String, dynamic> json) {
final commonProps = Task.parseCommonProperties(json);
final taskSpecificData = json['taskSpecificData'] as Map<String, dynamic>;
return CommentTask(
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'],
commentText: taskSpecificData['commentText'] ?? '',
required: taskSpecificData['required'] ?? false,
);
}
@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': 'COMMENT',
'title': title,
'commentText': commentText,
'required': required,
},
};
}
@override
CommentTask copyWith({
String? id,
String? jobId,
int? stationOrder,
bool? completed,
bool? optional,
DateTime? completedAt,
String? completedBy,
int? taskOrder,
String? title,
String? description,
String? displayName,
String? commentText,
bool? required,
}) {
return CommentTask(
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,
commentText: commentText ?? this.commentText,
required: required ?? this.required,
);
}
}