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