import 'package:flutter/material.dart';
import 'package:hl_lieferservice/model/delivery.dart' show DeliveryState;
import 'package:hl_lieferservice/model/tour.dart';
import 'package:intl/intl.dart';

class DeliveryInfo extends StatelessWidget {
  final Tour tour;
  final int? selectedCarId;

  const DeliveryInfo({super.key, required this.tour, this.selectedCarId});

  @override
  Widget build(BuildContext context) {
    final String date = DateFormat("dd.MM.yyyy").format(tour.date);
    final relevantDeliveries = selectedCarId != null
        ? tour.deliveries.where((d) => d.carId == selectedCarId).toList()
        : tour.deliveries;
    final total = relevantDeliveries.length;
    final done = relevantDeliveries
        .where((d) => d.state == DeliveryState.finished)
        .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),
                        const 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),
                        const 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,
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
