import 'package:comwell_key_app/up_sales/models/upgrade.dart';

class AddOnUpgrade extends Upgrade {
  final bool isSelected;
  final bool isService;
  final bool isPopular;
  final bool onlyAvailableBeforeCheckin;
  final String animationJson;
  final String backgroundImageUrl;

  const AddOnUpgrade({
    required super.id,
    required super.name,
    required super.price,
    required super.currency,
    required super.images,
    required super.description,
    required super.quantity,
    required this.isSelected,
    required this.isService,
    required this.isPopular,
    required this.onlyAvailableBeforeCheckin,
     this.animationJson = '',
     this.backgroundImageUrl = '',
  });

  @override
  List<Object?> get props => [id, quantity, isSelected];

  @override
  String toString() {
    return 'AddOnUpgrade(id: $id, name: $name, price: $price, currency: $currency, isSelected: $isSelected, images: $images, description: $description, isService: $isService, quantity: $quantity)';
  }

  AddOnUpgrade copyWith({
    int? quantity,
    bool? isSelected,
    bool? isService,
    bool? isPopular,
    bool? onlyAvailableBeforeCheckin,
    String? animationJson,
    String? backgroundImageUrl,
  }) {
    return AddOnUpgrade(
      id: id,
      name: name,
      price: price,
      currency: currency,
      images: images,
      description: description,
      quantity: quantity ?? this.quantity,
      isSelected: isSelected ?? this.isSelected,
      isService: isService ?? this.isService,
      isPopular: isPopular ?? this.isPopular,
      onlyAvailableBeforeCheckin: onlyAvailableBeforeCheckin ?? this.onlyAvailableBeforeCheckin,
      animationJson: animationJson ?? this.animationJson,
      backgroundImageUrl: backgroundImageUrl ?? this.backgroundImageUrl,
    );
  }

  bool get isAddedToCart => quantity > 0 || isSelected;
}