import 'dart:convert';

class PaymentSuccessResponseModel {
  final bool? success;
  final PaymentData? data;
  final dynamic errors;

  PaymentSuccessResponseModel({
    this.success,
    this.data,
    this.errors,
  });

  factory PaymentSuccessResponseModel.fromJson(String str) =>
      PaymentSuccessResponseModel.fromMap(json.decode(str));

  String toJson() => json.encode(toMap());

  factory PaymentSuccessResponseModel.fromMap(Map<String, dynamic> json) =>
      PaymentSuccessResponseModel(
        success: json["success"],
        data: json["data"] == null ? null : PaymentData.fromMap(json["data"]),
        errors: json["errors"],
      );

  Map<String, dynamic> toMap() => {
        "success": success,
        "data": data?.toMap(),
        "errors": errors,
      };
}

class PaymentData {
  final String? id;
  final String? orderId;
  final String? paymentMethodId;
  final int? amount;
  final String? status;
  final String? transactionId;
  final int? splitNumber;
  final int? splitTotal;
  final String? splitDescription;
  final int? refundAmount;
  final DateTime? createdAt;
  final DateTime? updatedAt;

  PaymentData({
    this.id,
    this.orderId,
    this.paymentMethodId,
    this.amount,
    this.status,
    this.transactionId,
    this.splitNumber,
    this.splitTotal,
    this.splitDescription,
    this.refundAmount,
    this.createdAt,
    this.updatedAt,
  });

  factory PaymentData.fromMap(Map<String, dynamic> json) => PaymentData(
        id: json["id"],
        orderId: json["order_id"],
        paymentMethodId: json["payment_method_id"],
        amount: json["amount"],
        status: json["status"],
        transactionId: json["transaction_id"],
        splitNumber: json["split_number"],
        splitTotal: json["split_total"],
        splitDescription: json["split_description"],
        refundAmount: json["refund_amount"],
        createdAt: json["created_at"] == null
            ? null
            : DateTime.parse(json["created_at"]),
        updatedAt: json["updated_at"] == null
            ? null
            : DateTime.parse(json["updated_at"]),
      );

  Map<String, dynamic> toMap() => {
        "id": id,
        "order_id": orderId,
        "payment_method_id": paymentMethodId,
        "amount": amount,
        "status": status,
        "transaction_id": transactionId,
        "split_number": splitNumber,
        "split_total": splitTotal,
        "split_description": splitDescription,
        "refund_amount": refundAmount,
        "created_at": createdAt?.toIso8601String(),
        "updated_at": updatedAt?.toIso8601String(),
      };
}
