From cbfa1689ba00004d7c996145960895dfeb31b937 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 4 Aug 2025 02:04:03 +0700 Subject: [PATCH] feat: refund --- .../datasources/order_remote_datasource.dart | 52 ++ .../home/bloc/order_form/order_form_bloc.dart | 20 +- .../order_form/order_form_bloc.freezed.dart | 650 +++++++++++++----- .../bloc/order_form/order_form_event.dart | 6 +- .../bloc/order_form/order_form_state.dart | 1 + .../sales/dialog/refund_dialog.dart | 148 ++++ lib/presentation/sales/pages/sales_page.dart | 38 +- 7 files changed, 709 insertions(+), 206 deletions(-) create mode 100644 lib/presentation/sales/dialog/refund_dialog.dart diff --git a/lib/data/datasources/order_remote_datasource.dart b/lib/data/datasources/order_remote_datasource.dart index 8cd8ca5..e12cac7 100644 --- a/lib/data/datasources/order_remote_datasource.dart +++ b/lib/data/datasources/order_remote_datasource.dart @@ -395,4 +395,56 @@ class OrderRemoteDatasource { return const Left('Terjadi kesalahan tak terduga'); } } + + Future> refund({ + required String orderId, + required String reason, + required List orderItems, + }) async { + final authData = await AuthLocalDataSource().getAuthData(); + final url = '${Variables.baseUrl}/api/v1/orders/$orderId/refund'; + + final int refundAmount = orderItems.fold( + 0, + (sum, item) => sum + ((item.unitPrice ?? 0) * (item.quantity ?? 0)), + ); + try { + final response = await dio.post( + url, + data: { + 'refund_amount': refundAmount, + "order_items": orderItems + .map((item) => { + 'order_item_id': item.id, + "refund_quantity": item.quantity, + "refund_amount": item.totalPrice, + "reason": "Item was cold" + }) + .toList(), + 'reason': reason, + }, + options: Options( + headers: { + 'Authorization': 'Bearer ${authData.token}', + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + ), + ); + + if (response.statusCode == 200) { + return Right(true); + } else { + return const Left('Gagal refund'); + } + } 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'); + } + } } diff --git a/lib/presentation/home/bloc/order_form/order_form_bloc.dart b/lib/presentation/home/bloc/order_form/order_form_bloc.dart index 2cf71f4..2b90749 100644 --- a/lib/presentation/home/bloc/order_form/order_form_bloc.dart +++ b/lib/presentation/home/bloc/order_form/order_form_bloc.dart @@ -174,19 +174,17 @@ class OrderFormBloc extends Bloc { }); on<_Refund>((event, emit) async { - state.maybeWhen( - loaded: (order, selectedItems, _) async { - if (selectedItems.isEmpty) return; + emit(const OrderFormState.loading()); - emit(const OrderFormState.loading()); + final result = await _orderRemoteDatasource.refund( + orderId: event.orderId, + reason: event.reason, + orderItems: event.items, + ); - try { - emit(OrderFormState.success(order)); - } catch (e) { - emit(OrderFormState.error('Refund gagal: ${e.toString()}')); - } - }, - orElse: () {}, + result.fold( + (error) => emit(_Error(error)), + (success) => emit(_SuccessMsg()), ); }); } diff --git a/lib/presentation/home/bloc/order_form/order_form_bloc.freezed.dart b/lib/presentation/home/bloc/order_form/order_form_bloc.freezed.dart index b5bcb97..95916a2 100644 --- a/lib/presentation/home/bloc/order_form/order_form_bloc.freezed.dart +++ b/lib/presentation/home/bloc/order_form/order_form_bloc.freezed.dart @@ -27,9 +27,11 @@ mixin _$OrderFormEvent { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -42,9 +44,10 @@ mixin _$OrderFormEvent { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -57,9 +60,10 @@ mixin _$OrderFormEvent { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -69,9 +73,9 @@ mixin _$OrderFormEvent { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -80,9 +84,9 @@ mixin _$OrderFormEvent { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -91,9 +95,9 @@ mixin _$OrderFormEvent { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -197,9 +201,11 @@ class _$StartedImpl implements _Started { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) { return started(order); } @@ -215,9 +221,10 @@ class _$StartedImpl implements _Started { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) { return started?.call(order); } @@ -233,9 +240,10 @@ class _$StartedImpl implements _Started { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) { if (started != null) { @@ -251,9 +259,9 @@ class _$StartedImpl implements _Started { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) { return started(this); } @@ -265,9 +273,9 @@ class _$StartedImpl implements _Started { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) { return started?.call(this); } @@ -279,9 +287,9 @@ class _$StartedImpl implements _Started { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) { if (started != null) { @@ -426,9 +434,11 @@ class _$CreateImpl implements _Create { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) { return create(items, customerName, orderType, table); } @@ -444,9 +454,10 @@ class _$CreateImpl implements _Create { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) { return create?.call(items, customerName, orderType, table); } @@ -462,9 +473,10 @@ class _$CreateImpl implements _Create { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) { if (create != null) { @@ -480,9 +492,9 @@ class _$CreateImpl implements _Create { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) { return create(this); } @@ -494,9 +506,9 @@ class _$CreateImpl implements _Create { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) { return create?.call(this); } @@ -508,9 +520,9 @@ class _$CreateImpl implements _Create { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) { if (create != null) { @@ -677,9 +689,11 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) { return createWithPayment( items, customerName, orderType, table, paymentMethod); @@ -696,9 +710,10 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) { return createWithPayment?.call( items, customerName, orderType, table, paymentMethod); @@ -715,9 +730,10 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) { if (createWithPayment != null) { @@ -734,9 +750,9 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) { return createWithPayment(this); } @@ -748,9 +764,9 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) { return createWithPayment?.call(this); } @@ -762,9 +778,9 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) { if (createWithPayment != null) { @@ -890,9 +906,11 @@ class _$AddToOrderImpl implements _AddToOrder { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) { return addToOrder(items, orderId); } @@ -908,9 +926,10 @@ class _$AddToOrderImpl implements _AddToOrder { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) { return addToOrder?.call(items, orderId); } @@ -926,9 +945,10 @@ class _$AddToOrderImpl implements _AddToOrder { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) { if (addToOrder != null) { @@ -944,9 +964,9 @@ class _$AddToOrderImpl implements _AddToOrder { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) { return addToOrder(this); } @@ -958,9 +978,9 @@ class _$AddToOrderImpl implements _AddToOrder { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) { return addToOrder?.call(this); } @@ -972,9 +992,9 @@ class _$AddToOrderImpl implements _AddToOrder { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) { if (addToOrder != null) { @@ -999,6 +1019,225 @@ abstract class _AddToOrder implements OrderFormEvent { throw _privateConstructorUsedError; } +/// @nodoc +abstract class _$$RefundImplCopyWith<$Res> { + factory _$$RefundImplCopyWith( + _$RefundImpl value, $Res Function(_$RefundImpl) then) = + __$$RefundImplCopyWithImpl<$Res>; + @useResult + $Res call({List items, String orderId, String reason}); +} + +/// @nodoc +class __$$RefundImplCopyWithImpl<$Res> + extends _$OrderFormEventCopyWithImpl<$Res, _$RefundImpl> + implements _$$RefundImplCopyWith<$Res> { + __$$RefundImplCopyWithImpl( + _$RefundImpl _value, $Res Function(_$RefundImpl) _then) + : super(_value, _then); + + /// Create a copy of OrderFormEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? items = null, + Object? orderId = null, + Object? reason = null, + }) { + return _then(_$RefundImpl( + items: null == items + ? _value._items + : items // ignore: cast_nullable_to_non_nullable + as List, + orderId: null == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String, + reason: null == reason + ? _value.reason + : reason // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc + +class _$RefundImpl implements _Refund { + const _$RefundImpl( + {required final List items, + required this.orderId, + required this.reason}) + : _items = items; + + final List _items; + @override + List get items { + if (_items is EqualUnmodifiableListView) return _items; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_items); + } + + @override + final String orderId; + @override + final String reason; + + @override + String toString() { + return 'OrderFormEvent.refund(items: $items, orderId: $orderId, reason: $reason)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RefundImpl && + const DeepCollectionEquality().equals(other._items, _items) && + (identical(other.orderId, orderId) || other.orderId == orderId) && + (identical(other.reason, reason) || other.reason == reason)); + } + + @override + int get hashCode => Object.hash(runtimeType, + const DeepCollectionEquality().hash(_items), orderId, reason); + + /// Create a copy of OrderFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RefundImplCopyWith<_$RefundImpl> get copyWith => + __$$RefundImplCopyWithImpl<_$RefundImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(Order order) started, + required TResult Function(List items, String customerName, + OrderType orderType, TableModel table) + create, + required TResult Function(List items, String customerName, + OrderType orderType, TableModel table, PaymentMethod paymentMethod) + createWithPayment, + required TResult Function(List items, String orderId) + addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, + required TResult Function(OrderItem item) toggleItem, + required TResult Function(bool selectAll) toggleSelectAll, + }) { + return refund(items, orderId, reason); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(Order order)? started, + TResult? Function(List items, String customerName, + OrderType orderType, TableModel table)? + create, + TResult? Function(List items, String customerName, + OrderType orderType, TableModel table, PaymentMethod paymentMethod)? + createWithPayment, + TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, + TResult? Function(OrderItem item)? toggleItem, + TResult? Function(bool selectAll)? toggleSelectAll, + }) { + return refund?.call(items, orderId, reason); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(Order order)? started, + TResult Function(List items, String customerName, + OrderType orderType, TableModel table)? + create, + TResult Function(List items, String customerName, + OrderType orderType, TableModel table, PaymentMethod paymentMethod)? + createWithPayment, + TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, + TResult Function(OrderItem item)? toggleItem, + TResult Function(bool selectAll)? toggleSelectAll, + required TResult orElse(), + }) { + if (refund != null) { + return refund(items, orderId, reason); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Started value) started, + required TResult Function(_Create value) create, + required TResult Function(_CreateWithPaymentMethod value) createWithPayment, + required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, + required TResult Function(_ToggleItem value) toggleItem, + required TResult Function(_ToggleSelectAll value) toggleSelectAll, + }) { + return refund(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Started value)? started, + TResult? Function(_Create value)? create, + TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, + TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, + TResult? Function(_ToggleItem value)? toggleItem, + TResult? Function(_ToggleSelectAll value)? toggleSelectAll, + }) { + return refund?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Started value)? started, + TResult Function(_Create value)? create, + TResult Function(_CreateWithPaymentMethod value)? createWithPayment, + TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, + TResult Function(_ToggleItem value)? toggleItem, + TResult Function(_ToggleSelectAll value)? toggleSelectAll, + required TResult orElse(), + }) { + if (refund != null) { + return refund(this); + } + return orElse(); + } +} + +abstract class _Refund implements OrderFormEvent { + const factory _Refund( + {required final List items, + required final String orderId, + required final String reason}) = _$RefundImpl; + + List get items; + String get orderId; + String get reason; + + /// Create a copy of OrderFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RefundImplCopyWith<_$RefundImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$ToggleItemImplCopyWith<$Res> { factory _$$ToggleItemImplCopyWith( @@ -1076,9 +1315,11 @@ class _$ToggleItemImpl implements _ToggleItem { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) { return toggleItem(item); } @@ -1094,9 +1335,10 @@ class _$ToggleItemImpl implements _ToggleItem { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) { return toggleItem?.call(item); } @@ -1112,9 +1354,10 @@ class _$ToggleItemImpl implements _ToggleItem { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) { if (toggleItem != null) { @@ -1130,9 +1373,9 @@ class _$ToggleItemImpl implements _ToggleItem { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) { return toggleItem(this); } @@ -1144,9 +1387,9 @@ class _$ToggleItemImpl implements _ToggleItem { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) { return toggleItem?.call(this); } @@ -1158,9 +1401,9 @@ class _$ToggleItemImpl implements _ToggleItem { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) { if (toggleItem != null) { @@ -1261,9 +1504,11 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll { createWithPayment, required TResult Function(List items, String orderId) addToOrder, + required TResult Function( + List items, String orderId, String reason) + refund, required TResult Function(OrderItem item) toggleItem, required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, }) { return toggleSelectAll(selectAll); } @@ -1279,9 +1524,10 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult? Function(List items, String orderId)? addToOrder, + TResult? Function(List items, String orderId, String reason)? + refund, TResult? Function(OrderItem item)? toggleItem, TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, }) { return toggleSelectAll?.call(selectAll); } @@ -1297,9 +1543,10 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll { OrderType orderType, TableModel table, PaymentMethod paymentMethod)? createWithPayment, TResult Function(List items, String orderId)? addToOrder, + TResult Function(List items, String orderId, String reason)? + refund, TResult Function(OrderItem item)? toggleItem, TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, required TResult orElse(), }) { if (toggleSelectAll != null) { @@ -1315,9 +1562,9 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll { required TResult Function(_Create value) create, required TResult Function(_CreateWithPaymentMethod value) createWithPayment, required TResult Function(_AddToOrder value) addToOrder, + required TResult Function(_Refund value) refund, required TResult Function(_ToggleItem value) toggleItem, required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, }) { return toggleSelectAll(this); } @@ -1329,9 +1576,9 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll { TResult? Function(_Create value)? create, TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, TResult? Function(_AddToOrder value)? addToOrder, + TResult? Function(_Refund value)? refund, TResult? Function(_ToggleItem value)? toggleItem, TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, }) { return toggleSelectAll?.call(this); } @@ -1343,9 +1590,9 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll { TResult Function(_Create value)? create, TResult Function(_CreateWithPaymentMethod value)? createWithPayment, TResult Function(_AddToOrder value)? addToOrder, + TResult Function(_Refund value)? refund, TResult Function(_ToggleItem value)? toggleItem, TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, required TResult orElse(), }) { if (toggleSelectAll != null) { @@ -1367,154 +1614,6 @@ abstract class _ToggleSelectAll implements OrderFormEvent { throw _privateConstructorUsedError; } -/// @nodoc -abstract class _$$RefundImplCopyWith<$Res> { - factory _$$RefundImplCopyWith( - _$RefundImpl value, $Res Function(_$RefundImpl) then) = - __$$RefundImplCopyWithImpl<$Res>; -} - -/// @nodoc -class __$$RefundImplCopyWithImpl<$Res> - extends _$OrderFormEventCopyWithImpl<$Res, _$RefundImpl> - implements _$$RefundImplCopyWith<$Res> { - __$$RefundImplCopyWithImpl( - _$RefundImpl _value, $Res Function(_$RefundImpl) _then) - : super(_value, _then); - - /// Create a copy of OrderFormEvent - /// with the given fields replaced by the non-null parameter values. -} - -/// @nodoc - -class _$RefundImpl implements _Refund { - const _$RefundImpl(); - - @override - String toString() { - return 'OrderFormEvent.refund()'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && other is _$RefundImpl); - } - - @override - int get hashCode => runtimeType.hashCode; - - @override - @optionalTypeArgs - TResult when({ - required TResult Function(Order order) started, - required TResult Function(List items, String customerName, - OrderType orderType, TableModel table) - create, - required TResult Function(List items, String customerName, - OrderType orderType, TableModel table, PaymentMethod paymentMethod) - createWithPayment, - required TResult Function(List items, String orderId) - addToOrder, - required TResult Function(OrderItem item) toggleItem, - required TResult Function(bool selectAll) toggleSelectAll, - required TResult Function() refund, - }) { - return refund(); - } - - @override - @optionalTypeArgs - TResult? whenOrNull({ - TResult? Function(Order order)? started, - TResult? Function(List items, String customerName, - OrderType orderType, TableModel table)? - create, - TResult? Function(List items, String customerName, - OrderType orderType, TableModel table, PaymentMethod paymentMethod)? - createWithPayment, - TResult? Function(List items, String orderId)? addToOrder, - TResult? Function(OrderItem item)? toggleItem, - TResult? Function(bool selectAll)? toggleSelectAll, - TResult? Function()? refund, - }) { - return refund?.call(); - } - - @override - @optionalTypeArgs - TResult maybeWhen({ - TResult Function(Order order)? started, - TResult Function(List items, String customerName, - OrderType orderType, TableModel table)? - create, - TResult Function(List items, String customerName, - OrderType orderType, TableModel table, PaymentMethod paymentMethod)? - createWithPayment, - TResult Function(List items, String orderId)? addToOrder, - TResult Function(OrderItem item)? toggleItem, - TResult Function(bool selectAll)? toggleSelectAll, - TResult Function()? refund, - required TResult orElse(), - }) { - if (refund != null) { - return refund(); - } - return orElse(); - } - - @override - @optionalTypeArgs - TResult map({ - required TResult Function(_Started value) started, - required TResult Function(_Create value) create, - required TResult Function(_CreateWithPaymentMethod value) createWithPayment, - required TResult Function(_AddToOrder value) addToOrder, - required TResult Function(_ToggleItem value) toggleItem, - required TResult Function(_ToggleSelectAll value) toggleSelectAll, - required TResult Function(_Refund value) refund, - }) { - return refund(this); - } - - @override - @optionalTypeArgs - TResult? mapOrNull({ - TResult? Function(_Started value)? started, - TResult? Function(_Create value)? create, - TResult? Function(_CreateWithPaymentMethod value)? createWithPayment, - TResult? Function(_AddToOrder value)? addToOrder, - TResult? Function(_ToggleItem value)? toggleItem, - TResult? Function(_ToggleSelectAll value)? toggleSelectAll, - TResult? Function(_Refund value)? refund, - }) { - return refund?.call(this); - } - - @override - @optionalTypeArgs - TResult maybeMap({ - TResult Function(_Started value)? started, - TResult Function(_Create value)? create, - TResult Function(_CreateWithPaymentMethod value)? createWithPayment, - TResult Function(_AddToOrder value)? addToOrder, - TResult Function(_ToggleItem value)? toggleItem, - TResult Function(_ToggleSelectAll value)? toggleSelectAll, - TResult Function(_Refund value)? refund, - required TResult orElse(), - }) { - if (refund != null) { - return refund(this); - } - return orElse(); - } -} - -abstract class _Refund implements OrderFormEvent { - const factory _Refund() = _$RefundImpl; -} - /// @nodoc mixin _$OrderFormState { @optionalTypeArgs @@ -1525,6 +1624,7 @@ mixin _$OrderFormState { Order order, List selectedItems, bool isAllSelected) loaded, required TResult Function(Order order) success, + required TResult Function() successMsg, required TResult Function(String message) error, }) => throw _privateConstructorUsedError; @@ -1536,6 +1636,7 @@ mixin _$OrderFormState { Order order, List selectedItems, bool isAllSelected)? loaded, TResult? Function(Order order)? success, + TResult? Function()? successMsg, TResult? Function(String message)? error, }) => throw _privateConstructorUsedError; @@ -1547,6 +1648,7 @@ mixin _$OrderFormState { Order order, List selectedItems, bool isAllSelected)? loaded, TResult Function(Order order)? success, + TResult Function()? successMsg, TResult Function(String message)? error, required TResult orElse(), }) => @@ -1557,6 +1659,7 @@ mixin _$OrderFormState { required TResult Function(_Loading value) loading, required TResult Function(_Loaded value) loaded, required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, required TResult Function(_Error value) error, }) => throw _privateConstructorUsedError; @@ -1566,6 +1669,7 @@ mixin _$OrderFormState { TResult? Function(_Loading value)? loading, TResult? Function(_Loaded value)? loaded, TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, TResult? Function(_Error value)? error, }) => throw _privateConstructorUsedError; @@ -1575,6 +1679,7 @@ mixin _$OrderFormState { TResult Function(_Loading value)? loading, TResult Function(_Loaded value)? loaded, TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, TResult Function(_Error value)? error, required TResult orElse(), }) => @@ -1649,6 +1754,7 @@ class _$InitialImpl implements _Initial { Order order, List selectedItems, bool isAllSelected) loaded, required TResult Function(Order order) success, + required TResult Function() successMsg, required TResult Function(String message) error, }) { return initial(); @@ -1663,6 +1769,7 @@ class _$InitialImpl implements _Initial { Order order, List selectedItems, bool isAllSelected)? loaded, TResult? Function(Order order)? success, + TResult? Function()? successMsg, TResult? Function(String message)? error, }) { return initial?.call(); @@ -1677,6 +1784,7 @@ class _$InitialImpl implements _Initial { Order order, List selectedItems, bool isAllSelected)? loaded, TResult Function(Order order)? success, + TResult Function()? successMsg, TResult Function(String message)? error, required TResult orElse(), }) { @@ -1693,6 +1801,7 @@ class _$InitialImpl implements _Initial { required TResult Function(_Loading value) loading, required TResult Function(_Loaded value) loaded, required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, required TResult Function(_Error value) error, }) { return initial(this); @@ -1705,6 +1814,7 @@ class _$InitialImpl implements _Initial { TResult? Function(_Loading value)? loading, TResult? Function(_Loaded value)? loaded, TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, TResult? Function(_Error value)? error, }) { return initial?.call(this); @@ -1717,6 +1827,7 @@ class _$InitialImpl implements _Initial { TResult Function(_Loading value)? loading, TResult Function(_Loaded value)? loaded, TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, TResult Function(_Error value)? error, required TResult orElse(), }) { @@ -1778,6 +1889,7 @@ class _$LoadingImpl implements _Loading { Order order, List selectedItems, bool isAllSelected) loaded, required TResult Function(Order order) success, + required TResult Function() successMsg, required TResult Function(String message) error, }) { return loading(); @@ -1792,6 +1904,7 @@ class _$LoadingImpl implements _Loading { Order order, List selectedItems, bool isAllSelected)? loaded, TResult? Function(Order order)? success, + TResult? Function()? successMsg, TResult? Function(String message)? error, }) { return loading?.call(); @@ -1806,6 +1919,7 @@ class _$LoadingImpl implements _Loading { Order order, List selectedItems, bool isAllSelected)? loaded, TResult Function(Order order)? success, + TResult Function()? successMsg, TResult Function(String message)? error, required TResult orElse(), }) { @@ -1822,6 +1936,7 @@ class _$LoadingImpl implements _Loading { required TResult Function(_Loading value) loading, required TResult Function(_Loaded value) loaded, required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, required TResult Function(_Error value) error, }) { return loading(this); @@ -1834,6 +1949,7 @@ class _$LoadingImpl implements _Loading { TResult? Function(_Loading value)? loading, TResult? Function(_Loaded value)? loaded, TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, TResult? Function(_Error value)? error, }) { return loading?.call(this); @@ -1846,6 +1962,7 @@ class _$LoadingImpl implements _Loading { TResult Function(_Loading value)? loading, TResult Function(_Loaded value)? loaded, TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, TResult Function(_Error value)? error, required TResult orElse(), }) { @@ -1965,6 +2082,7 @@ class _$LoadedImpl implements _Loaded { Order order, List selectedItems, bool isAllSelected) loaded, required TResult Function(Order order) success, + required TResult Function() successMsg, required TResult Function(String message) error, }) { return loaded(order, selectedItems, isAllSelected); @@ -1979,6 +2097,7 @@ class _$LoadedImpl implements _Loaded { Order order, List selectedItems, bool isAllSelected)? loaded, TResult? Function(Order order)? success, + TResult? Function()? successMsg, TResult? Function(String message)? error, }) { return loaded?.call(order, selectedItems, isAllSelected); @@ -1993,6 +2112,7 @@ class _$LoadedImpl implements _Loaded { Order order, List selectedItems, bool isAllSelected)? loaded, TResult Function(Order order)? success, + TResult Function()? successMsg, TResult Function(String message)? error, required TResult orElse(), }) { @@ -2009,6 +2129,7 @@ class _$LoadedImpl implements _Loaded { required TResult Function(_Loading value) loading, required TResult Function(_Loaded value) loaded, required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, required TResult Function(_Error value) error, }) { return loaded(this); @@ -2021,6 +2142,7 @@ class _$LoadedImpl implements _Loaded { TResult? Function(_Loading value)? loading, TResult? Function(_Loaded value)? loaded, TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, TResult? Function(_Error value)? error, }) { return loaded?.call(this); @@ -2033,6 +2155,7 @@ class _$LoadedImpl implements _Loaded { TResult Function(_Loading value)? loading, TResult Function(_Loaded value)? loaded, TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, TResult Function(_Error value)? error, required TResult orElse(), }) { @@ -2134,6 +2257,7 @@ class _$SuccessImpl implements _Success { Order order, List selectedItems, bool isAllSelected) loaded, required TResult Function(Order order) success, + required TResult Function() successMsg, required TResult Function(String message) error, }) { return success(order); @@ -2148,6 +2272,7 @@ class _$SuccessImpl implements _Success { Order order, List selectedItems, bool isAllSelected)? loaded, TResult? Function(Order order)? success, + TResult? Function()? successMsg, TResult? Function(String message)? error, }) { return success?.call(order); @@ -2162,6 +2287,7 @@ class _$SuccessImpl implements _Success { Order order, List selectedItems, bool isAllSelected)? loaded, TResult Function(Order order)? success, + TResult Function()? successMsg, TResult Function(String message)? error, required TResult orElse(), }) { @@ -2178,6 +2304,7 @@ class _$SuccessImpl implements _Success { required TResult Function(_Loading value) loading, required TResult Function(_Loaded value) loaded, required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, required TResult Function(_Error value) error, }) { return success(this); @@ -2190,6 +2317,7 @@ class _$SuccessImpl implements _Success { TResult? Function(_Loading value)? loading, TResult? Function(_Loaded value)? loaded, TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, TResult? Function(_Error value)? error, }) { return success?.call(this); @@ -2202,6 +2330,7 @@ class _$SuccessImpl implements _Success { TResult Function(_Loading value)? loading, TResult Function(_Loaded value)? loaded, TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, TResult Function(_Error value)? error, required TResult orElse(), }) { @@ -2224,6 +2353,141 @@ abstract class _Success implements OrderFormState { throw _privateConstructorUsedError; } +/// @nodoc +abstract class _$$SuccessMsgImplCopyWith<$Res> { + factory _$$SuccessMsgImplCopyWith( + _$SuccessMsgImpl value, $Res Function(_$SuccessMsgImpl) then) = + __$$SuccessMsgImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$SuccessMsgImplCopyWithImpl<$Res> + extends _$OrderFormStateCopyWithImpl<$Res, _$SuccessMsgImpl> + implements _$$SuccessMsgImplCopyWith<$Res> { + __$$SuccessMsgImplCopyWithImpl( + _$SuccessMsgImpl _value, $Res Function(_$SuccessMsgImpl) _then) + : super(_value, _then); + + /// Create a copy of OrderFormState + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$SuccessMsgImpl implements _SuccessMsg { + const _$SuccessMsgImpl(); + + @override + String toString() { + return 'OrderFormState.successMsg()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$SuccessMsgImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() initial, + required TResult Function() loading, + required TResult Function( + Order order, List selectedItems, bool isAllSelected) + loaded, + required TResult Function(Order order) success, + required TResult Function() successMsg, + required TResult Function(String message) error, + }) { + return successMsg(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? initial, + TResult? Function()? loading, + TResult? Function( + Order order, List selectedItems, bool isAllSelected)? + loaded, + TResult? Function(Order order)? success, + TResult? Function()? successMsg, + TResult? Function(String message)? error, + }) { + return successMsg?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? initial, + TResult Function()? loading, + TResult Function( + Order order, List selectedItems, bool isAllSelected)? + loaded, + TResult Function(Order order)? success, + TResult Function()? successMsg, + TResult Function(String message)? error, + required TResult orElse(), + }) { + if (successMsg != null) { + return successMsg(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Initial value) initial, + required TResult Function(_Loading value) loading, + required TResult Function(_Loaded value) loaded, + required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, + required TResult Function(_Error value) error, + }) { + return successMsg(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Initial value)? initial, + TResult? Function(_Loading value)? loading, + TResult? Function(_Loaded value)? loaded, + TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, + TResult? Function(_Error value)? error, + }) { + return successMsg?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Initial value)? initial, + TResult Function(_Loading value)? loading, + TResult Function(_Loaded value)? loaded, + TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, + TResult Function(_Error value)? error, + required TResult orElse(), + }) { + if (successMsg != null) { + return successMsg(this); + } + return orElse(); + } +} + +abstract class _SuccessMsg implements OrderFormState { + const factory _SuccessMsg() = _$SuccessMsgImpl; +} + /// @nodoc abstract class _$$ErrorImplCopyWith<$Res> { factory _$$ErrorImplCopyWith( @@ -2298,6 +2562,7 @@ class _$ErrorImpl implements _Error { Order order, List selectedItems, bool isAllSelected) loaded, required TResult Function(Order order) success, + required TResult Function() successMsg, required TResult Function(String message) error, }) { return error(message); @@ -2312,6 +2577,7 @@ class _$ErrorImpl implements _Error { Order order, List selectedItems, bool isAllSelected)? loaded, TResult? Function(Order order)? success, + TResult? Function()? successMsg, TResult? Function(String message)? error, }) { return error?.call(message); @@ -2326,6 +2592,7 @@ class _$ErrorImpl implements _Error { Order order, List selectedItems, bool isAllSelected)? loaded, TResult Function(Order order)? success, + TResult Function()? successMsg, TResult Function(String message)? error, required TResult orElse(), }) { @@ -2342,6 +2609,7 @@ class _$ErrorImpl implements _Error { required TResult Function(_Loading value) loading, required TResult Function(_Loaded value) loaded, required TResult Function(_Success value) success, + required TResult Function(_SuccessMsg value) successMsg, required TResult Function(_Error value) error, }) { return error(this); @@ -2354,6 +2622,7 @@ class _$ErrorImpl implements _Error { TResult? Function(_Loading value)? loading, TResult? Function(_Loaded value)? loaded, TResult? Function(_Success value)? success, + TResult? Function(_SuccessMsg value)? successMsg, TResult? Function(_Error value)? error, }) { return error?.call(this); @@ -2366,6 +2635,7 @@ class _$ErrorImpl implements _Error { TResult Function(_Loading value)? loading, TResult Function(_Loaded value)? loaded, TResult Function(_Success value)? success, + TResult Function(_SuccessMsg value)? successMsg, TResult Function(_Error value)? error, required TResult orElse(), }) { diff --git a/lib/presentation/home/bloc/order_form/order_form_event.dart b/lib/presentation/home/bloc/order_form/order_form_event.dart index cddad65..0d2b49f 100644 --- a/lib/presentation/home/bloc/order_form/order_form_event.dart +++ b/lib/presentation/home/bloc/order_form/order_form_event.dart @@ -20,8 +20,12 @@ class OrderFormEvent with _$OrderFormEvent { required List items, required String orderId, }) = _AddToOrder; + const factory OrderFormEvent.refund({ + required List items, + required String orderId, + required String reason, + }) = _Refund; const factory OrderFormEvent.toggleItem(OrderItem item) = _ToggleItem; const factory OrderFormEvent.toggleSelectAll(bool selectAll) = _ToggleSelectAll; - const factory OrderFormEvent.refund() = _Refund; } diff --git a/lib/presentation/home/bloc/order_form/order_form_state.dart b/lib/presentation/home/bloc/order_form/order_form_state.dart index 65c6111..2e9ff5d 100644 --- a/lib/presentation/home/bloc/order_form/order_form_state.dart +++ b/lib/presentation/home/bloc/order_form/order_form_state.dart @@ -10,5 +10,6 @@ class OrderFormState with _$OrderFormState { @Default(false) bool isAllSelected, }) = _Loaded; const factory OrderFormState.success(Order order) = _Success; + const factory OrderFormState.successMsg() = _SuccessMsg; const factory OrderFormState.error(String message) = _Error; } diff --git a/lib/presentation/sales/dialog/refund_dialog.dart b/lib/presentation/sales/dialog/refund_dialog.dart new file mode 100644 index 0000000..145d8b7 --- /dev/null +++ b/lib/presentation/sales/dialog/refund_dialog.dart @@ -0,0 +1,148 @@ +import 'package:enaklo_pos/core/components/buttons.dart'; +import 'package:enaklo_pos/core/components/custom_modal_dialog.dart'; +import 'package:enaklo_pos/core/components/custom_text_field.dart'; +import 'package:enaklo_pos/core/components/flushbar.dart'; +import 'package:enaklo_pos/core/components/spaces.dart'; +import 'package:enaklo_pos/core/constants/colors.dart'; +import 'package:enaklo_pos/core/extensions/build_context_ext.dart'; +import 'package:enaklo_pos/core/extensions/string_ext.dart'; +import 'package:enaklo_pos/data/models/response/order_response_model.dart'; +import 'package:enaklo_pos/presentation/home/bloc/order_form/order_form_bloc.dart'; +import 'package:enaklo_pos/presentation/sales/blocs/order_loader/order_loader_bloc.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class RefundDialog extends StatefulWidget { + final Order order; + final List selectedItems; + const RefundDialog( + {super.key, required this.order, required this.selectedItems}); + + @override + State createState() => _RefundDialogState(); +} + +class _RefundDialogState extends State { + final TextEditingController _reasonController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return CustomModalDialog( + title: 'Refund', + subtitle: 'Pengembalian dana', + contentPadding: + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 24.0), + child: Column( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Pesanan yang akan di refund', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: AppColors.black, + ), + ), + SpaceHeight(12), + Column( + children: widget.selectedItems + .map((item) => _item(context, item)) + .toList(), + ), + ], + ), + SpaceHeight(16), + CustomTextField( + controller: _reasonController, + label: 'Alasan', + ), + SpaceHeight(24), + BlocListener( + listener: (context, state) { + state.maybeWhen( + orElse: () {}, + successMsg: () { + context.pop(); + AppFlushbar.showSuccess(context, 'Refund Berhasil!'); + context + .read() + .add(OrderLoaderEvent.getByStatus('completed')); + }, + error: (msg) { + AppFlushbar.showError(context, msg); + }, + ); + }, + child: BlocBuilder( + builder: (context, state) { + return state.maybeWhen( + orElse: () => Button.filled( + onPressed: () { + context.read().add( + OrderFormEvent.refund( + orderId: widget.order.id ?? '', + reason: _reasonController.text, + items: widget.selectedItems, + ), + ); + }, + label: 'Refund', + ), + loading: () => Center( + child: const CircularProgressIndicator(), + ), + ); + }, + ), + ), + ], + ), + ); + } + + Row _item( + BuildContext context, + OrderItem product, + ) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + width: context.deviceWidth * 0.1, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + product.productName ?? '', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + ), + ), + Text( + (product.unitPrice ?? 0).toString().currencyFormatRpV2, + style: const TextStyle( + fontSize: 14, + ), + ), + ], + ), + ), + Text( + 'X${product.quantity}', + style: const TextStyle( + fontSize: 14, + ), + ), + Text( + (product.totalPrice ?? 0).toString().currencyFormatRpV2, + style: const TextStyle( + fontSize: 14, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/sales/pages/sales_page.dart b/lib/presentation/sales/pages/sales_page.dart index 38baeb4..b58e381 100644 --- a/lib/presentation/sales/pages/sales_page.dart +++ b/lib/presentation/sales/pages/sales_page.dart @@ -1,10 +1,12 @@ import 'package:enaklo_pos/core/components/buttons.dart'; +import 'package:enaklo_pos/core/components/flushbar.dart'; import 'package:enaklo_pos/core/components/spaces.dart'; import 'package:enaklo_pos/data/models/response/order_response_model.dart'; import 'package:enaklo_pos/presentation/home/bloc/order_form/order_form_bloc.dart'; import 'package:enaklo_pos/presentation/sales/blocs/day_sales/day_sales_bloc.dart'; import 'package:enaklo_pos/presentation/sales/blocs/order_loader/order_loader_bloc.dart'; import 'package:enaklo_pos/presentation/sales/dialog/payment_dialog.dart'; +import 'package:enaklo_pos/presentation/sales/dialog/refund_dialog.dart'; import 'package:enaklo_pos/presentation/sales/widgets/sales_detail.dart'; import 'package:enaklo_pos/presentation/sales/widgets/sales_list_order.dart'; import 'package:enaklo_pos/presentation/sales/widgets/sales_order_information.dart'; @@ -187,10 +189,38 @@ class _SalesPageState extends State { ), ], if (widget.status == 'completed') - Button.outlined( - onPressed: () {}, - label: 'Refund', - icon: Icon(Icons.autorenew), + BlocBuilder( + builder: (context, state) { + return state.maybeWhen( + orElse: () => Button.outlined( + onPressed: () {}, + label: 'Refund', + icon: Icon(Icons.autorenew), + ), + loaded: + (order, selectedItems, isAllSelected) => + Button.outlined( + onPressed: () { + if (selectedItems.isEmpty) { + AppFlushbar.showError(context, + 'Silahkan pilih item yang ingin di refund.'); + + return; + } + + showDialog( + context: context, + builder: (context) => RefundDialog( + order: orderDetail!, + selectedItems: selectedItems, + ), + ); + }, + label: 'Refund', + icon: Icon(Icons.autorenew), + ), + ); + }, ), ], ),