refactor: Projektstruktur in app/ und backend/ aufgeteilt
This commit is contained in:
99
app/lib/models/tasks/barcode_task.dart
Normal file
99
app/lib/models/tasks/barcode_task.dart
Normal file
@@ -0,0 +1,99 @@
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
99
app/lib/models/tasks/comment_task.dart
Normal file
99
app/lib/models/tasks/comment_task.dart
Normal file
@@ -0,0 +1,99 @@
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
95
app/lib/models/tasks/confirmation_task.dart
Normal file
95
app/lib/models/tasks/confirmation_task.dart
Normal file
@@ -0,0 +1,95 @@
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
81
app/lib/models/tasks/generic_task.dart
Normal file
81
app/lib/models/tasks/generic_task.dart
Normal file
@@ -0,0 +1,81 @@
|
||||
import '../task.dart';
|
||||
|
||||
// Generic Task implementation for fallback
|
||||
class GenericTask extends Task {
|
||||
GenericTask({
|
||||
required super.id,
|
||||
required super.jobId,
|
||||
super.stationOrder,
|
||||
super.completed = false,
|
||||
super.optional = false,
|
||||
super.completedAt,
|
||||
super.completedBy,
|
||||
super.taskOrder,
|
||||
super.title,
|
||||
super.description,
|
||||
super.displayName,
|
||||
});
|
||||
|
||||
factory GenericTask.fromJson(Map<String, dynamic> json) {
|
||||
final commonProps = Task.parseCommonProperties(json);
|
||||
return GenericTask(
|
||||
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'],
|
||||
);
|
||||
}
|
||||
|
||||
@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': 'GENERIC', 'title': title},
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
GenericTask copyWith({
|
||||
String? id,
|
||||
String? jobId,
|
||||
int? stationOrder,
|
||||
bool? completed,
|
||||
bool? optional,
|
||||
DateTime? completedAt,
|
||||
String? completedBy,
|
||||
int? taskOrder,
|
||||
String? title,
|
||||
String? description,
|
||||
String? displayName,
|
||||
}) {
|
||||
return GenericTask(
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
99
app/lib/models/tasks/photo_task.dart
Normal file
99
app/lib/models/tasks/photo_task.dart
Normal file
@@ -0,0 +1,99 @@
|
||||
import '../task.dart';
|
||||
|
||||
// Photo Task
|
||||
class PhotoTask extends Task {
|
||||
final int minPhotoCount;
|
||||
final int maxPhotoCount;
|
||||
|
||||
PhotoTask({
|
||||
required super.id,
|
||||
required super.jobId,
|
||||
required this.minPhotoCount,
|
||||
required this.maxPhotoCount,
|
||||
super.stationOrder,
|
||||
super.completed = false,
|
||||
super.optional = false,
|
||||
super.completedAt,
|
||||
super.completedBy,
|
||||
super.taskOrder,
|
||||
super.title,
|
||||
super.description,
|
||||
super.displayName,
|
||||
});
|
||||
|
||||
factory PhotoTask.fromJson(Map<String, dynamic> json) {
|
||||
final commonProps = Task.parseCommonProperties(json);
|
||||
final taskSpecificData = json['taskSpecificData'] as Map<String, dynamic>;
|
||||
|
||||
return PhotoTask(
|
||||
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'],
|
||||
minPhotoCount: taskSpecificData['minPhotoCount'] ?? 1,
|
||||
maxPhotoCount: taskSpecificData['maxPhotoCount'] ?? 5,
|
||||
);
|
||||
}
|
||||
|
||||
@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': 'PHOTO',
|
||||
'title': title,
|
||||
'minPhotoCount': minPhotoCount,
|
||||
'maxPhotoCount': maxPhotoCount,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
PhotoTask copyWith({
|
||||
String? id,
|
||||
String? jobId,
|
||||
int? stationOrder,
|
||||
bool? completed,
|
||||
bool? optional,
|
||||
DateTime? completedAt,
|
||||
String? completedBy,
|
||||
int? taskOrder,
|
||||
String? title,
|
||||
String? description,
|
||||
String? displayName,
|
||||
int? minPhotoCount,
|
||||
int? maxPhotoCount,
|
||||
}) {
|
||||
return PhotoTask(
|
||||
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,
|
||||
minPhotoCount: minPhotoCount ?? this.minPhotoCount,
|
||||
maxPhotoCount: maxPhotoCount ?? this.maxPhotoCount,
|
||||
);
|
||||
}
|
||||
}
|
||||
82
app/lib/models/tasks/signature_task.dart
Normal file
82
app/lib/models/tasks/signature_task.dart
Normal file
@@ -0,0 +1,82 @@
|
||||
import '../task.dart';
|
||||
|
||||
// Signature Task
|
||||
class SignatureTask extends Task {
|
||||
SignatureTask({
|
||||
required super.id,
|
||||
required super.jobId,
|
||||
super.stationOrder,
|
||||
super.completed = false,
|
||||
super.optional = false,
|
||||
super.completedAt,
|
||||
super.completedBy,
|
||||
super.taskOrder,
|
||||
super.title,
|
||||
super.description,
|
||||
super.displayName,
|
||||
});
|
||||
|
||||
factory SignatureTask.fromJson(Map<String, dynamic> json) {
|
||||
final commonProps = Task.parseCommonProperties(json);
|
||||
|
||||
return SignatureTask(
|
||||
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'],
|
||||
);
|
||||
}
|
||||
|
||||
@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': 'SIGNATURE', 'title': title},
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
SignatureTask copyWith({
|
||||
String? id,
|
||||
String? jobId,
|
||||
int? stationOrder,
|
||||
bool? completed,
|
||||
bool? optional,
|
||||
DateTime? completedAt,
|
||||
String? completedBy,
|
||||
int? taskOrder,
|
||||
String? title,
|
||||
String? description,
|
||||
String? displayName,
|
||||
}) {
|
||||
return SignatureTask(
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
96
app/lib/models/tasks/todolist_task.dart
Normal file
96
app/lib/models/tasks/todolist_task.dart
Normal file
@@ -0,0 +1,96 @@
|
||||
import '../task.dart';
|
||||
|
||||
// TodoList Task
|
||||
class TodoListTask extends Task {
|
||||
final List<String> todoItems;
|
||||
|
||||
TodoListTask({
|
||||
required super.id,
|
||||
required super.jobId,
|
||||
required this.todoItems,
|
||||
super.stationOrder,
|
||||
super.completed = false,
|
||||
super.optional = false,
|
||||
super.completedAt,
|
||||
super.completedBy,
|
||||
super.taskOrder,
|
||||
super.title,
|
||||
super.description,
|
||||
super.displayName,
|
||||
});
|
||||
|
||||
factory TodoListTask.fromJson(Map<String, dynamic> json) {
|
||||
final commonProps = Task.parseCommonProperties(json);
|
||||
final taskSpecificData = json['taskSpecificData'] as Map<String, dynamic>;
|
||||
|
||||
final rawItems = taskSpecificData['todoItems'] as List? ?? [];
|
||||
final todoItems = rawItems.map((item) => item?.toString() ?? '').toList();
|
||||
|
||||
return TodoListTask(
|
||||
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'],
|
||||
todoItems: todoItems,
|
||||
);
|
||||
}
|
||||
|
||||
@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': 'TODOLIST',
|
||||
'title': title,
|
||||
'todoItems': todoItems,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
TodoListTask copyWith({
|
||||
String? id,
|
||||
String? jobId,
|
||||
int? stationOrder,
|
||||
bool? completed,
|
||||
bool? optional,
|
||||
DateTime? completedAt,
|
||||
String? completedBy,
|
||||
int? taskOrder,
|
||||
String? title,
|
||||
String? description,
|
||||
String? displayName,
|
||||
List<String>? todoItems,
|
||||
}) {
|
||||
return TodoListTask(
|
||||
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,
|
||||
todoItems: todoItems ?? this.todoItems,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user