create order with payment

This commit is contained in:
efrilm
2025-10-28 00:58:39 +07:00
parent 37f0008ec8
commit 137f3d9636
20 changed files with 2815 additions and 1086 deletions
@@ -83,4 +83,72 @@ class OrderRemoteDataProvider {
return DC.error(OrderFailure.serverError(e));
}
}
Future<DC<OrderFailure, OrderDto>> storeWithPaymentOrder({
required OrderRequestDto request,
required String paymentMethodId,
}) async {
try {
final response = await _apiClient.post(
ApiPath.orders,
data: request.toRequest(),
headers: getAuthorizationHeader(),
);
if (response.data['success'] == false) {
return DC.error(OrderFailure.unexpectedError());
} else {
final order = OrderDto.fromJson(
response.data['data'] as Map<String, dynamic>,
);
final paymentRequest = PaymentRequestDto(
orderId: order.id,
amount: order.totalAmount,
paymentMethodId: paymentMethodId,
splitNumber: 1,
splitTotal: 1,
splitDescription: '',
paymentOrderItems: order.orderItems
?.map(
(item) => PaymentItemRequestDto(
amount: item.totalPrice,
orderItemId: item.id,
),
)
.toList(),
);
storePayment(paymentRequest);
return DC.data(order);
}
} on ApiFailure catch (e, s) {
log('storeOrderError', name: _logName, error: e, stackTrace: s);
return DC.error(OrderFailure.serverError(e));
}
}
Future<DC<OrderFailure, PaymentDto>> storePayment(
PaymentRequestDto request,
) async {
try {
final response = await _apiClient.post(
ApiPath.payments,
data: request.toJson(),
headers: getAuthorizationHeader(),
);
if (response.data['success'] == false) {
return DC.error(OrderFailure.unexpectedError());
}
final payment = PaymentDto.fromJson(
response.data['data'] as Map<String, dynamic>,
);
return DC.data(payment);
} on ApiFailure catch (e, s) {
log('storePaymentError', name: _logName, error: e, stackTrace: s);
return DC.error(OrderFailure.serverError(e));
}
}
}