class PaymentMethodEntity {
  final bool nequi;
  final bool datafono;
  final bool transferencia;

  static const empty = PaymentMethodEntity(
    nequi: false,
    datafono: false,
    transferencia: false,
  );

  const PaymentMethodEntity({
    required this.nequi,
    required this.datafono,
    required this.transferencia,
  });

  PaymentMethodEntity copyWith({
    bool? datafono,
    bool? nequi,
    bool? transferencia,
  }) {
    return PaymentMethodEntity(
      nequi: nequi ?? this.nequi,
      datafono: datafono ?? this.datafono,
      transferencia: transferencia ?? this.transferencia,
    );
  }

  Map<String, Object?> toDocument() {
    return {
      'nequi': nequi,
      'datafono': datafono,
      'transferencia': transferencia,
    };
  }

  static PaymentMethodEntity fromDocument(Map<String, dynamic> doc) {
    return PaymentMethodEntity(
      nequi: doc['nequi'] as bool,
      datafono: doc['datafono'] as bool,
      transferencia: doc['transferencia'] as bool,
    );
  }

  @override
  String toString() {
    return '''PaymentMethodEntity {
      nequi: $nequi
      datafono: $datafono
      transferencia: $transferencia
    }''';
  }
}
