From 092e68615cc1142cc7eb9d2031ea8f536dd37547 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 6 Aug 2025 00:16:32 +0700 Subject: [PATCH] feat: order item --- .../datasources/order_remote_datasource.dart | 16 +++-- .../home/dialog/payment_add_order_dialog.dart | 10 ++- .../blocs/order_loader/order_loader_bloc.dart | 6 +- .../order_loader_bloc.freezed.dart | 67 ++++++++++++++----- .../order_loader/order_loader_event.dart | 6 +- .../sales/dialog/refund_dialog.dart | 10 ++- .../sales/dialog/void_dialog.dart | 10 ++- lib/presentation/sales/pages/sales_page.dart | 13 ++-- 8 files changed, 97 insertions(+), 41 deletions(-) diff --git a/lib/data/datasources/order_remote_datasource.dart b/lib/data/datasources/order_remote_datasource.dart index ea9e1dd..c8a3761 100644 --- a/lib/data/datasources/order_remote_datasource.dart +++ b/lib/data/datasources/order_remote_datasource.dart @@ -15,6 +15,7 @@ import 'package:enaklo_pos/data/models/response/summary_response_model.dart'; import 'package:enaklo_pos/presentation/home/models/order_model.dart'; import 'package:enaklo_pos/presentation/home/models/order_request.dart'; import 'package:http/http.dart' as http; +import 'package:intl/intl.dart'; class OrderRemoteDatasource { final Dio dio = DioClient.instance; @@ -263,10 +264,13 @@ class OrderRemoteDatasource { } } - Future> getOrder( - {int page = 1, - int limit = Variables.defaultLimit, - String status = 'completed'}) async { + Future> getOrder({ + int page = 1, + int limit = Variables.defaultLimit, + String status = 'completed', + required DateTime dateFrom, + required DateTime dateTo, + }) async { try { final authData = await AuthLocalDataSource().getAuthData(); final response = await dio.get( @@ -275,8 +279,8 @@ class OrderRemoteDatasource { 'page': page, 'limit': limit, 'status': status, - 'date_from': "05-08-2025", - 'date_to': "05-08-2025", + 'date_from': DateFormat('dd-MM-yyyy').format(dateFrom), + 'date_to': DateFormat('dd-MM-yyyy').format(dateTo), }, options: Options( headers: { diff --git a/lib/presentation/home/dialog/payment_add_order_dialog.dart b/lib/presentation/home/dialog/payment_add_order_dialog.dart index b832562..9821878 100644 --- a/lib/presentation/home/dialog/payment_add_order_dialog.dart +++ b/lib/presentation/home/dialog/payment_add_order_dialog.dart @@ -26,9 +26,13 @@ class _PaymentAddOrderDialogState extends State { @override void initState() { super.initState(); - context - .read() - .add(OrderLoaderEvent.getByStatus('pending')); + context.read().add( + OrderLoaderEvent.getByStatus( + 'pending', + dateFrom: DateTime.now(), + dateTo: DateTime.now(), + ), + ); } @override diff --git a/lib/presentation/sales/blocs/order_loader/order_loader_bloc.dart b/lib/presentation/sales/blocs/order_loader/order_loader_bloc.dart index 6621187..727834e 100644 --- a/lib/presentation/sales/blocs/order_loader/order_loader_bloc.dart +++ b/lib/presentation/sales/blocs/order_loader/order_loader_bloc.dart @@ -14,7 +14,11 @@ class OrderLoaderBloc extends Bloc { on<_GetByStatus>((event, emit) async { emit(const _Loading()); final result = await _orderRemoteDatasource.getOrder( - status: event.status, limit: 20); + status: event.status, + limit: 20, + dateFrom: event.dateFrom, + dateTo: event.dateTo, + ); result.fold( (l) => emit(_Error(l)), (r) => emit(_Loaded( diff --git a/lib/presentation/sales/blocs/order_loader/order_loader_bloc.freezed.dart b/lib/presentation/sales/blocs/order_loader/order_loader_bloc.freezed.dart index a15a071..79164f9 100644 --- a/lib/presentation/sales/blocs/order_loader/order_loader_bloc.freezed.dart +++ b/lib/presentation/sales/blocs/order_loader/order_loader_bloc.freezed.dart @@ -18,19 +18,22 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$OrderLoaderEvent { @optionalTypeArgs TResult when({ - required TResult Function(String status) getByStatus, + required TResult Function(String status, DateTime dateFrom, DateTime dateTo) + getByStatus, required TResult Function(String id) getById, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ - TResult? Function(String status)? getByStatus, + TResult? Function(String status, DateTime dateFrom, DateTime dateTo)? + getByStatus, TResult? Function(String id)? getById, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ - TResult Function(String status)? getByStatus, + TResult Function(String status, DateTime dateFrom, DateTime dateTo)? + getByStatus, TResult Function(String id)? getById, required TResult orElse(), }) => @@ -83,7 +86,7 @@ abstract class _$$GetByStatusImplCopyWith<$Res> { _$GetByStatusImpl value, $Res Function(_$GetByStatusImpl) then) = __$$GetByStatusImplCopyWithImpl<$Res>; @useResult - $Res call({String status}); + $Res call({String status, DateTime dateFrom, DateTime dateTo}); } /// @nodoc @@ -100,12 +103,22 @@ class __$$GetByStatusImplCopyWithImpl<$Res> @override $Res call({ Object? status = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then(_$GetByStatusImpl( null == status ? _value.status : status // ignore: cast_nullable_to_non_nullable as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, )); } } @@ -113,14 +126,19 @@ class __$$GetByStatusImplCopyWithImpl<$Res> /// @nodoc class _$GetByStatusImpl implements _GetByStatus { - const _$GetByStatusImpl(this.status); + const _$GetByStatusImpl(this.status, + {required this.dateFrom, required this.dateTo}); @override final String status; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'OrderLoaderEvent.getByStatus(status: $status)'; + return 'OrderLoaderEvent.getByStatus(status: $status, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -128,11 +146,14 @@ class _$GetByStatusImpl implements _GetByStatus { return identical(this, other) || (other.runtimeType == runtimeType && other is _$GetByStatusImpl && - (identical(other.status, status) || other.status == status)); + (identical(other.status, status) || other.status == status) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override - int get hashCode => Object.hash(runtimeType, status); + int get hashCode => Object.hash(runtimeType, status, dateFrom, dateTo); /// Create a copy of OrderLoaderEvent /// with the given fields replaced by the non-null parameter values. @@ -145,30 +166,33 @@ class _$GetByStatusImpl implements _GetByStatus { @override @optionalTypeArgs TResult when({ - required TResult Function(String status) getByStatus, + required TResult Function(String status, DateTime dateFrom, DateTime dateTo) + getByStatus, required TResult Function(String id) getById, }) { - return getByStatus(status); + return getByStatus(status, dateFrom, dateTo); } @override @optionalTypeArgs TResult? whenOrNull({ - TResult? Function(String status)? getByStatus, + TResult? Function(String status, DateTime dateFrom, DateTime dateTo)? + getByStatus, TResult? Function(String id)? getById, }) { - return getByStatus?.call(status); + return getByStatus?.call(status, dateFrom, dateTo); } @override @optionalTypeArgs TResult maybeWhen({ - TResult Function(String status)? getByStatus, + TResult Function(String status, DateTime dateFrom, DateTime dateTo)? + getByStatus, TResult Function(String id)? getById, required TResult orElse(), }) { if (getByStatus != null) { - return getByStatus(status); + return getByStatus(status, dateFrom, dateTo); } return orElse(); } @@ -206,9 +230,13 @@ class _$GetByStatusImpl implements _GetByStatus { } abstract class _GetByStatus implements OrderLoaderEvent { - const factory _GetByStatus(final String status) = _$GetByStatusImpl; + const factory _GetByStatus(final String status, + {required final DateTime dateFrom, + required final DateTime dateTo}) = _$GetByStatusImpl; String get status; + DateTime get dateFrom; + DateTime get dateTo; /// Create a copy of OrderLoaderEvent /// with the given fields replaced by the non-null parameter values. @@ -285,7 +313,8 @@ class _$GetByIdImpl implements _GetById { @override @optionalTypeArgs TResult when({ - required TResult Function(String status) getByStatus, + required TResult Function(String status, DateTime dateFrom, DateTime dateTo) + getByStatus, required TResult Function(String id) getById, }) { return getById(id); @@ -294,7 +323,8 @@ class _$GetByIdImpl implements _GetById { @override @optionalTypeArgs TResult? whenOrNull({ - TResult? Function(String status)? getByStatus, + TResult? Function(String status, DateTime dateFrom, DateTime dateTo)? + getByStatus, TResult? Function(String id)? getById, }) { return getById?.call(id); @@ -303,7 +333,8 @@ class _$GetByIdImpl implements _GetById { @override @optionalTypeArgs TResult maybeWhen({ - TResult Function(String status)? getByStatus, + TResult Function(String status, DateTime dateFrom, DateTime dateTo)? + getByStatus, TResult Function(String id)? getById, required TResult orElse(), }) { diff --git a/lib/presentation/sales/blocs/order_loader/order_loader_event.dart b/lib/presentation/sales/blocs/order_loader/order_loader_event.dart index d28bfcb..8381aeb 100644 --- a/lib/presentation/sales/blocs/order_loader/order_loader_event.dart +++ b/lib/presentation/sales/blocs/order_loader/order_loader_event.dart @@ -2,6 +2,10 @@ part of 'order_loader_bloc.dart'; @freezed class OrderLoaderEvent with _$OrderLoaderEvent { - const factory OrderLoaderEvent.getByStatus(String status) = _GetByStatus; + const factory OrderLoaderEvent.getByStatus( + String status, { + required DateTime dateFrom, + required DateTime dateTo, + }) = _GetByStatus; const factory OrderLoaderEvent.getById(String id) = _GetById; } diff --git a/lib/presentation/sales/dialog/refund_dialog.dart b/lib/presentation/sales/dialog/refund_dialog.dart index 06df1b8..6332b74 100644 --- a/lib/presentation/sales/dialog/refund_dialog.dart +++ b/lib/presentation/sales/dialog/refund_dialog.dart @@ -125,9 +125,13 @@ class _RefundDialogState extends State { successMsg: () { context.pop(); AppFlushbar.showSuccess(context, 'Refund Berhasil!'); - context - .read() - .add(OrderLoaderEvent.getByStatus('completed')); + context.read().add( + OrderLoaderEvent.getByStatus( + 'completed', + dateFrom: DateTime.now(), + dateTo: DateTime.now(), + ), + ); }, error: (msg) { AppFlushbar.showError(context, msg); diff --git a/lib/presentation/sales/dialog/void_dialog.dart b/lib/presentation/sales/dialog/void_dialog.dart index e25e4ec..ff51e98 100644 --- a/lib/presentation/sales/dialog/void_dialog.dart +++ b/lib/presentation/sales/dialog/void_dialog.dart @@ -125,9 +125,13 @@ class _VoidDialogState extends State { successMsg: () { context.pop(); AppFlushbar.showSuccess(context, 'Void berhasil!'); - context - .read() - .add(OrderLoaderEvent.getByStatus('pending')); + context.read().add( + OrderLoaderEvent.getByStatus( + 'pending', + dateFrom: DateTime.now(), + dateTo: DateTime.now(), + ), + ); }, error: (msg) { AppFlushbar.showError(context, msg); diff --git a/lib/presentation/sales/pages/sales_page.dart b/lib/presentation/sales/pages/sales_page.dart index 5d65b0c..6d95e36 100644 --- a/lib/presentation/sales/pages/sales_page.dart +++ b/lib/presentation/sales/pages/sales_page.dart @@ -37,9 +37,10 @@ class _SalesPageState extends State { @override void initState() { - context - .read() - .add(OrderLoaderEvent.getByStatus(widget.status)); + context.read().add(OrderLoaderEvent.getByStatus( + widget.status, + dateFrom: startDate, + dateTo: endDate)); super.initState(); } @@ -85,9 +86,9 @@ class _SalesPageState extends State { endDate = end; }); - context.read().add( - DaySalesEvent.getRangeDateSales( - startDate, endDate)); + context.read().add( + OrderLoaderEvent.getByStatus(widget.status, + dateFrom: startDate, dateTo: endDate)); }, ), Expanded(