import 'package:common/localization/l10n_utils.dart';
import 'package:concierge/presentation/screens/confirm_order/widgets/confirm_order_product_list_tile.dart';
import 'package:concierge/presentation/screens/receipt/bloc/receipt_cubit.dart';
import 'package:concierge/presentation/widgets/padded_column.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:gap/gap.dart';

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

  @override
  Widget build(BuildContext context) {
    final cubit = context.read<ReceiptCubit>();
    return Container(
      height: 500,
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(16),
      ),
      clipBehavior: Clip.antiAlias,
      child: SingleChildScrollView(
        child: Column(
          children: [
            SizedBox(
              height: 200,
              child: Stack(
                alignment: Alignment.topLeft,
                children: [
                  Image.network(
                    cubit.order.image.url,
                    width: double.infinity,
                    fit: BoxFit.fitWidth,
                  ),
                  Padding(
                    padding: EdgeInsets.all(12),
                    child: Text(
                      "${context.strings.order_to_room} ${cubit.order.payment.room}",
                      style: TextStyle(fontSize: 20, color: Colors.white),
                    ),
                  ),
                ],
              ),
            ),
            PaddedColumn(
              padding: EdgeInsets.symmetric(horizontal: 12),
              children: [
                const Gap(16),
                Text(
                  context.strings.order_status,
                  style: TextStyle(fontSize: 14, color: Colors.grey),
                ),
                const Gap(8),
                Text(context.strings.your_order_is_being_delivered),
                const Gap(16),
                Text(
                  context.strings.your_order_is_ready,
                  style: TextStyle(fontSize: 14, color: Colors.grey),
                ),
                const Gap(4),
                Text(cubit.order.estimatedDeliveryTime),
                const Gap(16),
                Row(
                  children: [
                    Icon(
                      Icons.restaurant_outlined,
                      color: Colors.grey,
                      size: 16,
                    ),
                    Gap(4),
                    Text(
                      context.strings.your_order,
                      style: TextStyle(fontSize: 14, color: Colors.grey),
                    ),
                  ],
                ),
                ...buildOrder(context),
              ],
            ),
          ],
        ),
      ),
    );
  }

  Iterable<Widget> buildOrder(BuildContext context) sync* {
    final cubit = context.read<ReceiptCubit>();
    yield Divider(color: Colors.grey.shade300);
    for (final orderItem in cubit.order.orderItems) {
      yield ConfirmOrderProductListTile(
        quantity: orderItem.quantity,
        price: orderItem.price.toDouble(),
        title: orderItem.alternativeName,
      );
      yield Divider(color: Colors.grey.shade300);
    }
  }
}