import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:intl/intl.dart'; // Untuk format angka
import 'package:cashumit/models/receipt_item.dart';

/// Widget untuk menampilkan satu item dalam struk.
///
/// Widget ini murni untuk tampilan dan tidak memiliki logika interaksi sendiri.
/// Interaksi seperti tap (edit) atau long-press (delete) ditangani oleh
/// widget induk (parent) yang membungkusnya dalam GestureDetector.
class ReceiptItemWidget extends StatelessWidget {
  final ReceiptItem item;

  const ReceiptItemWidget({
    super.key,
    required this.item,
  });

  /// Memformat angka menjadi format mata uang Rupiah
  String _formatRupiah(double amount) {
    // Menggunakan NumberFormat untuk memformat angka
    final formatter = NumberFormat("#,##0", "id_ID");
    return "Rp ${formatter.format(amount)}";
  }

  @override
  Widget build(BuildContext context) {
    // Mencoba menggunakan Google Fonts Courier Prime, jika gagal gunakan font sistem
    TextStyle courierPrime;
    try {
      courierPrime = GoogleFonts.courierPrime(
        textStyle: const TextStyle(
          fontSize: 14,
          height: 1.2,
        ),
      );
    } catch (e) {
      // Fallback ke font sistem jika Google Fonts tidak tersedia
      courierPrime = const TextStyle(
        fontFamily: 'CourierPrime, Courier, monospace',
        fontSize: 14,
        height: 1.2,
      );
    }

    return Container(
      width: double.infinity,
      padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
      color: Colors.white,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          // Nama item
          Expanded(
            flex: 4,
            child: Text(
              item.description,
              style: courierPrime,
              overflow: TextOverflow.ellipsis,
            ),
          ),
          // Quantity
          Expanded(
            flex: 1,
            child: Text(
              item.quantity.toString(),
              textAlign: TextAlign.center,
              style: courierPrime,
            ),
          ),
          // Harga
          Expanded(
            flex: 2,
            child: Text(
              _formatRupiah(item.price),
              textAlign: TextAlign.right,
              style: courierPrime,
            ),
          ),
          // Total
          Expanded(
            flex: 2,
            child: Text(
              _formatRupiah(item.total),
              textAlign: TextAlign.right,
              style: courierPrime,
            ),
          ),
        ],
      ),
    );
  }
}