all method

Get all transfers (can be filtered by payment_id or recipient_settlement_id)

@param params - Check doc for required params.

Implementation

Future<Response<RazorpayApiResponse<RazorpayTransfer>>> all({
  RazorpayTransferQuery? params,
  void Function(
    RazorpayApiException?,
    Response<RazorpayApiResponse<RazorpayTransfer>>?,
  )? callback,
}) async {
  const url = '/transfers';
  // Note: Filtering by payment_id is done via the Payments resource (payments.fetchTransfer),
  // this 'all' method seems intended for general transfer listing or settlement filtering.
  // if (params?.payment_id != null && params!.payment_id!.isNotEmpty) {
  //   url = '/payments/${params.payment_id}/transfers'; // This endpoint is usually in Payments resource
  // }

  var from = params?.from;
  var to = params?.to;
  final count = params?.count ?? 10;
  final skip = params?.skip ?? 0;

  if (from != null) {
    from = normalizeDate(from);
  }
  if (to != null) {
    to = normalizeDate(to);
  }

  final queryParams = {
    'from': from,
    'to': to,
    'count': count,
    'skip': skip,
    'recipient_settlement_id': params?.recipient_settlement_id,
    // 'payment_id': params?.payment_id, // Usually not passed to /transfers directly
  };
  queryParams.removeWhere((key, value) => value == null);

  return api.get<RazorpayApiResponse<RazorpayTransfer>>(
    {
      'url': url,
      'data': queryParams,
    },
    callback: callback,
    fromJsonFactory: (json) => RazorpayApiResponse<RazorpayTransfer>.fromJson(
      json,
      (itemJson) =>
          RazorpayTransfer.fromJson(itemJson! as Map<String, dynamic>),
    ),
  );
}