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<Color>(
                      allDone ? Colors.green : Theme.of(context).primaryColor,
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
