import 'package:cloud_firestore/cloud_firestore.dart';

class Payment {
  String id;
  String invoiceID;
  DateTime paymentDate;
  String paymentReceiptURL;
  String status;
  double amount;

  Payment(
      {this.id,
      this.invoiceID,
      this.paymentDate,
      this.paymentReceiptURL,
      this.status,
      this.amount});

  factory Payment.fromMap(Map<String, dynamic> map, String id) {
    var _paymentDate = (map['payment_date'] as Timestamp);
    return Payment(
      id: id,
      paymentDate: _paymentDate?.toDate(),
      paymentReceiptURL: map['payment_receipt_url'],
      status: map['status'],
      amount: map['amount']?.toDouble() ?? 0,
    );
  }

  Map<String, dynamic> toMap() {
    return {
      "id": id,
      "invoice_id": invoiceID,
      'payment_date': paymentDate?.toUtc()?.toIso8601String(),
      'payment_receipt_url': paymentReceiptURL,
      'status': status,
      'amount': amount,
    };
  }

  Payment clone() {
    return Payment.fromMap(toMap(), this.id);
  }

  @override
  bool operator ==(Object other) => other is Payment && other.id == id;

  @override
  int get hashCode => id.hashCode;
}
