import '../data/demo_report_store.dart';
abstract final class ReportValidator {
static List<String> issues(DemoReport report) {
final issues = <String>[];
if (report.customer.trim().isEmpty) issues.add('Kunde fehlt');
if (report.site.trim().isEmpty) issues.add('Baustelle oder Auftrag fehlt');
if (report.participantIds.isEmpty) {
issues.add('Kein beteiligter Mitarbeiter ausgewählt');
}
if (report.activityItems.isEmpty ||
report.activityItems.every((item) => item.trim().isEmpty)) {
issues.add('Mindestens eine ausgeführte Leistung fehlt');
}
final startMinutes = report.start.hour * 60 + report.start.minute;
final endMinutes = report.end.hour * 60 + report.end.minute;
if (endMinutes <= startMinutes) {
issues.add('Arbeitsende muss nach Arbeitsbeginn liegen');
} else if (endMinutes - startMinutes <= report.breakMinutes) {
issues.add('Pause muss kürzer als die gesamte Arbeitszeit sein');
}
for (var index = 0; index < report.materialItems.length; index++) {
final item = report.materialItems[index];
if (item.name.trim().isNotEmpty && item.quantity.trim().isEmpty) {
issues.add('Menge für Material ${index + 1} fehlt');
}
}
if (report.additionalOrder.trim().isNotEmpty &&
!report.additionalOrderApproved) {
issues.add('Bestätigung des Zusatzauftrags fehlt');
}
return issues;
}
static bool isComplete(DemoReport report) => issues(report).isEmpty;
}
