138 lines
3.4 KiB
Dart
138 lines
3.4 KiB
Dart
import 'dart:convert';
|
|
|
|
class PaymentRequestModel {
|
|
final String? orderId;
|
|
final String? paymentMethodId;
|
|
final int? amount;
|
|
final String? transactionId;
|
|
final int? splitNumber;
|
|
final int? splitTotal;
|
|
final String? splitDescription;
|
|
final List<PaymentOrderItemModel>? paymentOrderItems;
|
|
|
|
PaymentRequestModel({
|
|
this.orderId,
|
|
this.paymentMethodId,
|
|
this.amount,
|
|
this.transactionId,
|
|
this.splitNumber,
|
|
this.splitTotal,
|
|
this.splitDescription,
|
|
this.paymentOrderItems,
|
|
});
|
|
|
|
factory PaymentRequestModel.fromJson(String str) =>
|
|
PaymentRequestModel.fromMap(json.decode(str));
|
|
|
|
String toJson() => json.encode(toMap());
|
|
|
|
factory PaymentRequestModel.fromMap(Map<String, dynamic> json) =>
|
|
PaymentRequestModel(
|
|
orderId: json["order_id"],
|
|
paymentMethodId: json["payment_method_id"],
|
|
amount: json["amount"]?.toDouble(),
|
|
transactionId: json["transaction_id"],
|
|
splitNumber: json["split_number"],
|
|
splitTotal: json["split_total"],
|
|
splitDescription: json["split_description"],
|
|
paymentOrderItems: json["payment_order_items"] == null
|
|
? []
|
|
: List<PaymentOrderItemModel>.from(json["payment_order_items"]
|
|
.map((x) => PaymentOrderItemModel.fromMap(x))),
|
|
);
|
|
|
|
Map<String, dynamic> toMap() => {
|
|
"order_id": orderId,
|
|
"payment_method_id": paymentMethodId,
|
|
"amount": amount,
|
|
"transaction_id": transactionId,
|
|
"split_number": splitNumber,
|
|
"split_total": splitTotal,
|
|
"split_description": splitDescription,
|
|
"payment_order_items": paymentOrderItems == null
|
|
? []
|
|
: List<dynamic>.from(paymentOrderItems!.map((x) => x.toMap())),
|
|
};
|
|
}
|
|
|
|
class PaymentOrderItemModel {
|
|
final String? orderItemId;
|
|
final int? amount;
|
|
|
|
PaymentOrderItemModel({
|
|
this.orderItemId,
|
|
this.amount,
|
|
});
|
|
|
|
factory PaymentOrderItemModel.fromJson(String str) =>
|
|
PaymentOrderItemModel.fromMap(json.decode(str));
|
|
|
|
factory PaymentOrderItemModel.fromMap(Map<String, dynamic> json) =>
|
|
PaymentOrderItemModel(
|
|
orderItemId: json["order_item_id"],
|
|
amount: json["amount"]?.toDouble(),
|
|
);
|
|
|
|
Map<String, dynamic> toMap() => {
|
|
"order_item_id": orderItemId,
|
|
"amount": amount,
|
|
};
|
|
}
|
|
|
|
class PaymentSplitBillRequest {
|
|
final String orderId;
|
|
final String paymentMethodId;
|
|
final String customerId;
|
|
final String type; // e.g., "AMOUNT" or "ITEM"
|
|
final int amount;
|
|
final List<SplitItem> items;
|
|
|
|
PaymentSplitBillRequest({
|
|
required this.orderId,
|
|
required this.paymentMethodId,
|
|
required this.customerId,
|
|
required this.type,
|
|
required this.amount,
|
|
required this.items,
|
|
});
|
|
|
|
Map<String, dynamic> toMap() {
|
|
Map<String, dynamic> data = {
|
|
'order_id': orderId,
|
|
'payment_method_id': paymentMethodId,
|
|
'type': type,
|
|
};
|
|
|
|
if (customerId.isNotEmpty) {
|
|
data['customer_id'] = customerId;
|
|
}
|
|
|
|
if (type == "AMOUNT") {
|
|
data['amount'] = amount;
|
|
}
|
|
|
|
if (type == "ITEM") {
|
|
data['items'] = items.map((e) => e.toJson()).toList();
|
|
}
|
|
|
|
return data;
|
|
}
|
|
}
|
|
|
|
class SplitItem {
|
|
final String orderItemId;
|
|
final int quantity;
|
|
|
|
SplitItem({
|
|
required this.orderItemId,
|
|
required this.quantity,
|
|
});
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'order_item_id': orderItemId,
|
|
'quantity': quantity,
|
|
};
|
|
}
|
|
}
|