feat: order with payment
This commit is contained in:
@@ -9,6 +9,7 @@ import 'package:enaklo_pos/data/datasources/auth_local_datasource.dart';
|
||||
import 'package:enaklo_pos/data/models/request/payment_request.dart';
|
||||
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
|
||||
import 'package:enaklo_pos/data/models/response/payment_method_response_model.dart';
|
||||
import 'package:enaklo_pos/data/models/response/payment_methods_response_model.dart';
|
||||
import 'package:enaklo_pos/data/models/response/payment_response_model.dart';
|
||||
import 'package:enaklo_pos/data/models/response/summary_response_model.dart';
|
||||
import 'package:enaklo_pos/presentation/home/models/order_model.dart';
|
||||
@@ -300,4 +301,58 @@ class OrderRemoteDatasource {
|
||||
return Left("Unexpected Error: $e");
|
||||
}
|
||||
}
|
||||
|
||||
Future<Either<String, OrderDetailResponseModel>> createOrderWithPayment(
|
||||
OrderRequestModel orderModel,
|
||||
PaymentMethod payment,
|
||||
) async {
|
||||
final authData = await AuthLocalDataSource().getAuthData();
|
||||
final url = '${Variables.baseUrl}/api/v1/orders';
|
||||
|
||||
try {
|
||||
final response = await dio.post(
|
||||
url,
|
||||
data: orderModel.toMap(),
|
||||
options: Options(
|
||||
headers: {
|
||||
'Authorization': 'Bearer ${authData.token}',
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
final data = OrderDetailResponseModel.fromMap(response.data);
|
||||
final orderData = data.data;
|
||||
final paymentRequest = PaymentRequestModel(
|
||||
orderId: orderData?.id,
|
||||
amount: orderData?.totalAmount,
|
||||
paymentMethodId: payment.id,
|
||||
splitDescription: '',
|
||||
splitNumber: 1,
|
||||
splitTotal: 1,
|
||||
paymentOrderItems: orderData?.orderItems
|
||||
?.map((item) => PaymentOrderItemModel(
|
||||
amount: item.totalPrice,
|
||||
orderItemId: item.id,
|
||||
))
|
||||
.toList(),
|
||||
);
|
||||
|
||||
createPayment(paymentRequest);
|
||||
return Right(data);
|
||||
} else {
|
||||
return const Left('Gagal membuat pesanan');
|
||||
}
|
||||
} on DioException catch (e) {
|
||||
final errorMessage = e.response?.data['message'] ?? 'Kesalahan jaringan';
|
||||
log("💥 Dio error: ${e.message}");
|
||||
log("💥 Dio response: ${e.response?.data}");
|
||||
return Left(errorMessage);
|
||||
} catch (e) {
|
||||
log("💥 Unexpected error: $e");
|
||||
return const Left('Terjadi kesalahan tak terduga');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user