create order with payment
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user