feat: order with payment
This commit is contained in:
@@ -4,6 +4,7 @@ import 'package:bloc/bloc.dart';
|
||||
import 'package:enaklo_pos/data/datasources/auth_local_datasource.dart';
|
||||
import 'package:enaklo_pos/data/datasources/order_remote_datasource.dart';
|
||||
import 'package:enaklo_pos/data/models/response/order_response_model.dart';
|
||||
import 'package:enaklo_pos/data/models/response/payment_methods_response_model.dart';
|
||||
import 'package:enaklo_pos/presentation/home/models/order_request.dart';
|
||||
import 'package:enaklo_pos/presentation/home/models/order_type.dart';
|
||||
import 'package:enaklo_pos/presentation/home/models/product_quantity.dart';
|
||||
@@ -46,6 +47,49 @@ class OrderFormBloc extends Bloc<OrderFormEvent, OrderFormState> {
|
||||
|
||||
final result = await _orderRemoteDatasource.createOrder(orderItems);
|
||||
|
||||
result.fold(
|
||||
(error) => emit(_Error(error)),
|
||||
(success) => emit(_Success(success.data!)),
|
||||
);
|
||||
} catch (e) {
|
||||
log("Error in AddOrderItemsBloc: $e");
|
||||
emit(_Error("Failed to add order items: $e"));
|
||||
}
|
||||
},
|
||||
);
|
||||
on<_CreateWithPaymentMethod>(
|
||||
(event, emit) async {
|
||||
emit(const _Loading());
|
||||
|
||||
try {
|
||||
// Convert ProductQuantity list to the format expected by the API
|
||||
|
||||
final userData = await AuthLocalDataSource().getAuthData();
|
||||
|
||||
final orderItems = OrderRequestModel(
|
||||
customerName: event.customerName,
|
||||
notes: '',
|
||||
orderType: event.orderType.name,
|
||||
tableNumber: event.tableNumber.toString(),
|
||||
outletId: userData.user?.outletId,
|
||||
userId: userData.user?.id,
|
||||
orderItems: event.items
|
||||
.map(
|
||||
(productQuantity) => OrderItemRequest(
|
||||
productId: productQuantity.product.id,
|
||||
quantity: productQuantity.quantity,
|
||||
notes: productQuantity.notes,
|
||||
unitPrice: productQuantity.product.price,
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
);
|
||||
|
||||
final result = await _orderRemoteDatasource.createOrderWithPayment(
|
||||
orderItems,
|
||||
event.paymentMethod,
|
||||
);
|
||||
|
||||
result.fold(
|
||||
(error) => emit(_Error(error)),
|
||||
(success) => emit(_Success(success.data!)),
|
||||
|
||||
@@ -25,6 +25,13 @@ mixin _$OrderFormEvent {
|
||||
required TResult Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)
|
||||
create,
|
||||
required TResult Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)
|
||||
createWithPayment,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
@@ -32,6 +39,13 @@ mixin _$OrderFormEvent {
|
||||
TResult? Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)?
|
||||
create,
|
||||
TResult? Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)?
|
||||
createWithPayment,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
@@ -39,22 +53,32 @@ mixin _$OrderFormEvent {
|
||||
TResult Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)?
|
||||
create,
|
||||
TResult Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)?
|
||||
createWithPayment,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(_Create value) create,
|
||||
required TResult Function(_CreateWithPaymentMethod value) createWithPayment,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(_Create value)? create,
|
||||
TResult? Function(_CreateWithPaymentMethod value)? createWithPayment,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(_Create value)? create,
|
||||
TResult Function(_CreateWithPaymentMethod value)? createWithPayment,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@@ -240,6 +264,13 @@ class _$CreateImpl implements _Create {
|
||||
required TResult Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)
|
||||
create,
|
||||
required TResult Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)
|
||||
createWithPayment,
|
||||
}) {
|
||||
return create(items, customerName, orderType, tableNumber);
|
||||
}
|
||||
@@ -250,6 +281,13 @@ class _$CreateImpl implements _Create {
|
||||
TResult? Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)?
|
||||
create,
|
||||
TResult? Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)?
|
||||
createWithPayment,
|
||||
}) {
|
||||
return create?.call(items, customerName, orderType, tableNumber);
|
||||
}
|
||||
@@ -260,6 +298,13 @@ class _$CreateImpl implements _Create {
|
||||
TResult Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)?
|
||||
create,
|
||||
TResult Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)?
|
||||
createWithPayment,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (create != null) {
|
||||
@@ -272,6 +317,7 @@ class _$CreateImpl implements _Create {
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(_Create value) create,
|
||||
required TResult Function(_CreateWithPaymentMethod value) createWithPayment,
|
||||
}) {
|
||||
return create(this);
|
||||
}
|
||||
@@ -280,6 +326,7 @@ class _$CreateImpl implements _Create {
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(_Create value)? create,
|
||||
TResult? Function(_CreateWithPaymentMethod value)? createWithPayment,
|
||||
}) {
|
||||
return create?.call(this);
|
||||
}
|
||||
@@ -288,6 +335,7 @@ class _$CreateImpl implements _Create {
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(_Create value)? create,
|
||||
TResult Function(_CreateWithPaymentMethod value)? createWithPayment,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (create != null) {
|
||||
@@ -321,6 +369,252 @@ abstract class _Create implements OrderFormEvent {
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$CreateWithPaymentMethodImplCopyWith<$Res>
|
||||
implements $OrderFormEventCopyWith<$Res> {
|
||||
factory _$$CreateWithPaymentMethodImplCopyWith(
|
||||
_$CreateWithPaymentMethodImpl value,
|
||||
$Res Function(_$CreateWithPaymentMethodImpl) then) =
|
||||
__$$CreateWithPaymentMethodImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call(
|
||||
{List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$CreateWithPaymentMethodImplCopyWithImpl<$Res>
|
||||
extends _$OrderFormEventCopyWithImpl<$Res, _$CreateWithPaymentMethodImpl>
|
||||
implements _$$CreateWithPaymentMethodImplCopyWith<$Res> {
|
||||
__$$CreateWithPaymentMethodImplCopyWithImpl(
|
||||
_$CreateWithPaymentMethodImpl _value,
|
||||
$Res Function(_$CreateWithPaymentMethodImpl) _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? customerName = null,
|
||||
Object? orderType = null,
|
||||
Object? tableNumber = null,
|
||||
Object? paymentMethod = freezed,
|
||||
}) {
|
||||
return _then(_$CreateWithPaymentMethodImpl(
|
||||
items: null == items
|
||||
? _value._items
|
||||
: items // ignore: cast_nullable_to_non_nullable
|
||||
as List<ProductQuantity>,
|
||||
customerName: null == customerName
|
||||
? _value.customerName
|
||||
: customerName // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
orderType: null == orderType
|
||||
? _value.orderType
|
||||
: orderType // ignore: cast_nullable_to_non_nullable
|
||||
as OrderType,
|
||||
tableNumber: null == tableNumber
|
||||
? _value.tableNumber
|
||||
: tableNumber // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
paymentMethod: freezed == paymentMethod
|
||||
? _value.paymentMethod
|
||||
: paymentMethod // ignore: cast_nullable_to_non_nullable
|
||||
as PaymentMethod,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod {
|
||||
const _$CreateWithPaymentMethodImpl(
|
||||
{required final List<ProductQuantity> items,
|
||||
required this.customerName,
|
||||
required this.orderType,
|
||||
required this.tableNumber,
|
||||
required this.paymentMethod})
|
||||
: _items = items;
|
||||
|
||||
final List<ProductQuantity> _items;
|
||||
@override
|
||||
List<ProductQuantity> get items {
|
||||
if (_items is EqualUnmodifiableListView) return _items;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_items);
|
||||
}
|
||||
|
||||
@override
|
||||
final String customerName;
|
||||
@override
|
||||
final OrderType orderType;
|
||||
@override
|
||||
final String tableNumber;
|
||||
@override
|
||||
final PaymentMethod paymentMethod;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'OrderFormEvent.createWithPayment(items: $items, customerName: $customerName, orderType: $orderType, tableNumber: $tableNumber, paymentMethod: $paymentMethod)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$CreateWithPaymentMethodImpl &&
|
||||
const DeepCollectionEquality().equals(other._items, _items) &&
|
||||
(identical(other.customerName, customerName) ||
|
||||
other.customerName == customerName) &&
|
||||
(identical(other.orderType, orderType) ||
|
||||
other.orderType == orderType) &&
|
||||
(identical(other.tableNumber, tableNumber) ||
|
||||
other.tableNumber == tableNumber) &&
|
||||
const DeepCollectionEquality()
|
||||
.equals(other.paymentMethod, paymentMethod));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(
|
||||
runtimeType,
|
||||
const DeepCollectionEquality().hash(_items),
|
||||
customerName,
|
||||
orderType,
|
||||
tableNumber,
|
||||
const DeepCollectionEquality().hash(paymentMethod));
|
||||
|
||||
/// 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')
|
||||
_$$CreateWithPaymentMethodImplCopyWith<_$CreateWithPaymentMethodImpl>
|
||||
get copyWith => __$$CreateWithPaymentMethodImplCopyWithImpl<
|
||||
_$CreateWithPaymentMethodImpl>(this, _$identity);
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)
|
||||
create,
|
||||
required TResult Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)
|
||||
createWithPayment,
|
||||
}) {
|
||||
return createWithPayment(
|
||||
items, customerName, orderType, tableNumber, paymentMethod);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)?
|
||||
create,
|
||||
TResult? Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)?
|
||||
createWithPayment,
|
||||
}) {
|
||||
return createWithPayment?.call(
|
||||
items, customerName, orderType, tableNumber, paymentMethod);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function(List<ProductQuantity> items, String customerName,
|
||||
OrderType orderType, String tableNumber)?
|
||||
create,
|
||||
TResult Function(
|
||||
List<ProductQuantity> items,
|
||||
String customerName,
|
||||
OrderType orderType,
|
||||
String tableNumber,
|
||||
PaymentMethod paymentMethod)?
|
||||
createWithPayment,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (createWithPayment != null) {
|
||||
return createWithPayment(
|
||||
items, customerName, orderType, tableNumber, paymentMethod);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(_Create value) create,
|
||||
required TResult Function(_CreateWithPaymentMethod value) createWithPayment,
|
||||
}) {
|
||||
return createWithPayment(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(_Create value)? create,
|
||||
TResult? Function(_CreateWithPaymentMethod value)? createWithPayment,
|
||||
}) {
|
||||
return createWithPayment?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(_Create value)? create,
|
||||
TResult Function(_CreateWithPaymentMethod value)? createWithPayment,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (createWithPayment != null) {
|
||||
return createWithPayment(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _CreateWithPaymentMethod implements OrderFormEvent {
|
||||
const factory _CreateWithPaymentMethod(
|
||||
{required final List<ProductQuantity> items,
|
||||
required final String customerName,
|
||||
required final OrderType orderType,
|
||||
required final String tableNumber,
|
||||
required final PaymentMethod paymentMethod}) =
|
||||
_$CreateWithPaymentMethodImpl;
|
||||
|
||||
@override
|
||||
List<ProductQuantity> get items;
|
||||
@override
|
||||
String get customerName;
|
||||
@override
|
||||
OrderType get orderType;
|
||||
@override
|
||||
String get tableNumber;
|
||||
PaymentMethod get paymentMethod;
|
||||
|
||||
/// Create a copy of OrderFormEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
_$$CreateWithPaymentMethodImplCopyWith<_$CreateWithPaymentMethodImpl>
|
||||
get copyWith => throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
mixin _$OrderFormState {
|
||||
@optionalTypeArgs
|
||||
|
||||
@@ -8,4 +8,11 @@ class OrderFormEvent with _$OrderFormEvent {
|
||||
required OrderType orderType,
|
||||
required String tableNumber,
|
||||
}) = _Create;
|
||||
const factory OrderFormEvent.createWithPayment({
|
||||
required List<ProductQuantity> items,
|
||||
required String customerName,
|
||||
required OrderType orderType,
|
||||
required String tableNumber,
|
||||
required PaymentMethod paymentMethod,
|
||||
}) = _CreateWithPaymentMethod;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user