import 'package:intl/intl.dart'; import 'closed_tab_item.dart'; import 'payment_method.dart'; import '../utils/collection_utils.dart'; class ClosedTab { final String id; final String originalTabId; final String customerName; final DateTime closedAt; final PaymentMethod paymentMethod; final List items; const ClosedTab({ required this.id, required this.originalTabId, required this.customerName, required this.closedAt, required this.paymentMethod, required this.items, }); int get itemCount => items.fold(0, (sum, item) => sum + item.quantity); int get totalInCents => items.fold(0, (sum, item) => sum + item.quantity * item.unitPriceInCents); String get formattedTotal => NumberFormat.simpleCurrency().format(totalInCents / 100); String get formattedPaymentMethod => paymentMethod.label; @override bool operator ==(Object other) => identical(this, other) || other is ClosedTab && id == other.id && originalTabId == other.originalTabId && customerName == other.customerName && closedAt == other.closedAt && paymentMethod == other.paymentMethod && listEquals(items, other.items); @override int get hashCode => Object.hash( id, originalTabId, customerName, closedAt, paymentMethod, Object.hashAll(items), ); } // _listEquals moved to utils/collection_utils.dart