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

100 lines
2.8 KiB
Dart

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