import 'package:flutter/material.dart'; import 'package:hl_lieferservice/domain/entity/delivery.dart'; import 'package:hl_lieferservice/domain/entity/tour_details.dart'; import 'package:intl/intl.dart'; /// Kopf-Karte der Auslieferungs-Übersicht. Zeigt Datum, Anzahl Lieferungen /// und Fortschrittsbalken — gefiltert auf das aktuell gewählte Fahrzeug, /// damit der Fahrer seine eigene Tagesleistung sieht. class DeliveryInfo extends StatelessWidget { final TourDetails details; final String? selectedCarId; const DeliveryInfo({super.key, required this.details, this.selectedCarId}); @override Widget build(BuildContext context) { final date = DateFormat('dd.MM.yyyy').format(details.tour.date); final relevantDeliveries = selectedCarId != null ? details.deliveries .where((d) => d.assignedCarId == selectedCarId) .toList() : details.deliveries; final total = relevantDeliveries.length; final done = relevantDeliveries .where((d) => d.state == DeliveryState.completed) .length; final progress = total > 0 ? done / total : 0.0; final allDone = total > 0 && done == total; return Padding( padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 15), child: SizedBox( width: double.infinity, child: Card( color: Theme.of(context).colorScheme.onSecondary, child: Padding( padding: const EdgeInsets.all(20), child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: const [ Icon(Icons.calendar_month), Padding( padding: EdgeInsets.only(left: 5), child: Text('Datum'), ), ], ), Text(date), ], ), const SizedBox(height: 15), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: const [ Icon(Icons.local_shipping_outlined), Padding( padding: EdgeInsets.only(left: 5), child: Text('Lieferungen'), ), ], ), Text('$done / $total'), ], ), const SizedBox(height: 10), ClipRRect( borderRadius: BorderRadius.circular(4), child: LinearProgressIndicator( value: progress, minHeight: 6, backgroundColor: Theme.of(context).colorScheme.surfaceContainerHighest, valueColor: AlwaysStoppedAnimation( allDone ? Colors.green : Theme.of(context).primaryColor, ), ), ), ], ), ), ), ), ); } }