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

96 lines
2.6 KiB
Dart

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