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 json) { final commonProps = Task.parseCommonProperties(json); final taskSpecificData = json['taskSpecificData'] as Map; 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 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, ); } }