refactor: Projektstruktur in app/ und backend/ aufgeteilt

This commit is contained in:
2026-03-24 15:06:44 +01:00
parent 5f5d5995c5
commit 2673ef658d
449 changed files with 28551 additions and 167 deletions

View 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,
);
}
}