6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit a2c65a5d

AuthorMikkel Thygesen<mikkelet@gmail.com>
Date2026-02-27 14:00:00 +0100
2930: updated payment impl

Changed files

.../domain/repositories/property_repository.dart   | 25 ++++++++----
 .../confirm_order/confirm_order_screen.dart        |  1 -
 .../screens/payment/bloc/payment_cubit.dart        | 44 ++++++++++++++++++++--
 .../screens/payment/payment_route.dart             |  5 ++-
 4 files changed, 63 insertions(+), 12 deletions(-)

Diff

diff --git a/concierge/lib/domain/repositories/property_repository.dart b/concierge/lib/domain/repositories/property_repository.dart
index 1e1e1a1b..624fa865 100644
--- a/concierge/lib/domain/repositories/property_repository.dart
+++ b/concierge/lib/domain/repositories/property_repository.dart
@@ -4,6 +4,7 @@ import 'package:concierge/data/remote/models/order.dart';
import 'package:concierge/data/remote/models/order_review.dart';
import 'package:concierge/data/remote/models/product.dart';
import 'package:concierge/data/remote/models/property.dart';
+import 'package:concierge/presentation/app/cart_cubit.dart';
class PropertyRepository {
final ConciergeService _service;
@@ -25,15 +26,25 @@ class PropertyRepository {
return response.data;
}
- Future<Order> createOrder() async {
+ Future<Order> createOrder({
+ required List<Map<String, dynamic>> products,
+ required int areaId,
+ required String locationCode,
+ required bool isDelivery,
+ required String readyTime,
+ required String fullName,
+ required int customerId,
+ required String comment,
+ }) async {
final body = {
- "area_id": 70,
- "location_code": "0001",
- "delivery": true,
- "requested_delivery_time": "12:30",
+ "products": products,
+ "area_id": areaId,
+ "location_code": locationCode,
+ "delivery": isDelivery,
+ "requested_delivery_time": readyTime.isEmpty ? "ASAP" : readyTime,
"payment_type": "WAITER",
- "full_name": null,
- "customer_id": 37026,
+ "full_name": fullName,
+ "customer_id": customerId,
"customer_name": "King",
"customer_comment": "",
"order_type": "PRODUCT",
diff --git a/concierge/lib/presentation/screens/confirm_order/confirm_order_screen.dart b/concierge/lib/presentation/screens/confirm_order/confirm_order_screen.dart
index 4623ffd0..83d77454 100644
--- a/concierge/lib/presentation/screens/confirm_order/confirm_order_screen.dart
+++ b/concierge/lib/presentation/screens/confirm_order/confirm_order_screen.dart
@@ -19,7 +19,6 @@ class ConfirmOrderScreen extends StatelessWidget {
return BlocBuilder<ConfirmOrderCubit, ConfirmOrderState>(
builder: (context, state) {
final cubit = context.read<ConfirmOrderCubit>();
- final cartCubit = context.read<CartCubit>();
return MultiBlocListener(
listeners: [
BlocListener<ConfirmOrderCubit, ConfirmOrderState>(
diff --git a/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart b/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart
index 938f2702..20b6219b 100644
--- a/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart
+++ b/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart
@@ -1,12 +1,50 @@
+import 'package:concierge/domain/models/app_error.dart';
+import 'package:concierge/domain/repositories/property_repository.dart';
+import 'package:concierge/presentation/app/cart_cubit.dart';
import 'package:concierge/presentation/base/base_cubit.dart';
import 'package:concierge/presentation/screens/payment/bloc/payment_state.dart';
class PaymentCubit extends BaseCubit<PaymentState> {
- PaymentCubit() : super(const PaymentState()) {
+ final CartCubit _cartCubit;
+ final PropertyRepository _propertyRepository;
+
+ PaymentCubit(this._cartCubit, this._propertyRepository) : super(const PaymentState()) {
init();
}
Future<void> init() async {
-
+ try {
+ safeEmit(state.copyWith(isLoading: true, error: AppError.none));
+ final products = _cartCubit.state.productsWithQuantity.values.map(
+ (product) => {
+ "id": product.productId,
+ "quantity": product.quantity,
+ "options": [
+ ...product.variant.entries.map(
+ (entry) => {
+ "option": entry.key,
+ "answer": entry.value,
+ },
+ ),
+ ],
+ },
+ );
+ final response = await _propertyRepository.createOrder(
+ products: products.toList(),
+ areaId: 0,
+ customerId: 0,
+ fullName: "",
+ isDelivery: _cartCubit.state.isDelivery,
+ locationCode: "_cartCubit.state",
+ readyTime: _cartCubit.state.readyTime,
+ comment: _cartCubit.state.comment,
+ );
+ print("qqq response=$response");
+ } catch (e, st) {
+ handleError(e, st);
+ safeEmit(state.copyWith(error: AppError.unknown(e.toString())));
+ } finally {
+ safeEmit(state.copyWith(isLoading: false));
+ }
}
-}
\ No newline at end of file
+}
diff --git a/concierge/lib/presentation/screens/payment/payment_route.dart b/concierge/lib/presentation/screens/payment/payment_route.dart
index d02cdcd3..aade0924 100644
--- a/concierge/lib/presentation/screens/payment/payment_route.dart
+++ b/concierge/lib/presentation/screens/payment/payment_route.dart
@@ -16,7 +16,10 @@ class PaymentRoute extends GoRouteData with $PaymentRoute {
return slideInTransition(
state: state,
child: BlocProvider(
- create: (context) => PaymentCubit(),
+ create: (context) => PaymentCubit(
+ context.read(),
+ context.read(),
+ ),
child: PaymentScreen(),
),
);