import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

import '../../../domain/models/grocery_item.dart';
import '../../router/router.dart';
import 'history_cubit.dart';
import 'history_state.dart';

class HistoryScreen extends StatelessWidget {
  const HistoryScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<HistoryCubit, HistoryState>(
      builder: (context, state) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('Scan History'),
            actions: [
              if (state.items.isNotEmpty)
                IconButton(
                  icon: const Icon(Icons.delete_outline),
                  onPressed: () {
                    context.read<HistoryCubit>().clearHistory();
                  },
                ),
            ],
          ),
          body: state.isLoading
              ? const Center(child: CircularProgressIndicator())
              : state.items.isNotEmpty
                  ? ListView.builder(
                      itemCount: state.items.length,
                      itemBuilder: (context, index) {
                        final item = state.items[index];
                        return _HistoryTile(
                          item: item,
                          onTap: () {
                            ItemDetailRouteData(barcode: item.barcode)
                                .push(context);
                          },
                        );
                      },
                    )
                  : const Center(
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: [
                          Icon(Icons.history, size: 64, color: Colors.grey),
                          SizedBox(height: 16),
                          Text(
                            'No scanned items yet',
                            style:
                                TextStyle(fontSize: 16, color: Colors.grey),
                          ),
                        ],
                      ),
                    ),
        );
      },
    );
  }
}

class _HistoryTile extends StatelessWidget {
  final GroceryItem item;
  final VoidCallback onTap;

  const _HistoryTile({required this.item, required this.onTap});

  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: CircleAvatar(
        child: Icon(_iconForCategory(item.category)),
      ),
      title: Text(item.name),
      subtitle: Text('${item.brand} • ${item.category}'),
      trailing: item.price != null
          ? Text(
              '\$${item.price!.toStringAsFixed(2)}',
              style: Theme.of(context).textTheme.titleSmall,
            )
          : null,
      onTap: onTap,
    );
  }

  IconData _iconForCategory(String category) {
    return switch (category.toLowerCase()) {
      'dairy' => Icons.water_drop,
      'bakery' => Icons.bakery_dining,
      'eggs' => Icons.egg,
      'produce' => Icons.eco,
      'meat' => Icons.restaurant,
      'beverages' => Icons.local_drink,
      _ => Icons.shopping_bag,
    };
  }
}