diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart index 2cdd303..a4f7fb3 100644 --- a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart @@ -11,6 +11,6 @@ class InventoryAnalyticLoaderState with _$InventoryAnalyticLoaderState { factory InventoryAnalyticLoaderState.initial() => InventoryAnalyticLoaderState( inventoryAnalytic: InventoryAnalytic.empty(), - failureOptionInventoryAnalytic: None(), + failureOptionInventoryAnalytic: none(), ); } diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart new file mode 100644 index 0000000..ff03c25 --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart @@ -0,0 +1,55 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'payment_method_analytic_loader_event.dart'; +part 'payment_method_analytic_loader_state.dart'; +part 'payment_method_analytic_loader_bloc.freezed.dart'; + +@injectable +class PaymentMethodAnalyticLoaderBloc + extends + Bloc< + PaymentMethodAnalyticLoaderEvent, + PaymentMethodAnalyticLoaderState + > { + final IAnalyticRepository _repository; + PaymentMethodAnalyticLoaderBloc(this._repository) + : super(PaymentMethodAnalyticLoaderState.initial()) { + on(_onPaymentMethodAnalyticLoaderEvent); + } + + Future _onPaymentMethodAnalyticLoaderEvent( + PaymentMethodAnalyticLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionPaymentMethodAnalytic: none(), + ), + ); + + final result = await _repository.getPaymentMethod( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => + state.copyWith(failureOptionPaymentMethodAnalytic: optionOf(f)), + (paymentMethodAnalytic) => + state.copyWith(paymentMethodAnalytic: paymentMethodAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart new file mode 100644 index 0000000..376f974 --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart @@ -0,0 +1,410 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'payment_method_analytic_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$PaymentMethodAnalyticLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticLoaderEventCopyWith<$Res> { + factory $PaymentMethodAnalyticLoaderEventCopyWith( + PaymentMethodAnalyticLoaderEvent value, + $Res Function(PaymentMethodAnalyticLoaderEvent) then, + ) = + _$PaymentMethodAnalyticLoaderEventCopyWithImpl< + $Res, + PaymentMethodAnalyticLoaderEvent + >; +} + +/// @nodoc +class _$PaymentMethodAnalyticLoaderEventCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalyticLoaderEvent +> + implements $PaymentMethodAnalyticLoaderEventCopyWith<$Res> { + _$PaymentMethodAnalyticLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$PaymentMethodAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'PaymentMethodAnalyticLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements PaymentMethodAnalyticLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$PaymentMethodAnalyticLoaderState { + PaymentMethodAnalytic get paymentMethodAnalytic => + throw _privateConstructorUsedError; + Option get failureOptionPaymentMethodAnalytic => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodAnalyticLoaderStateCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticLoaderStateCopyWith<$Res> { + factory $PaymentMethodAnalyticLoaderStateCopyWith( + PaymentMethodAnalyticLoaderState value, + $Res Function(PaymentMethodAnalyticLoaderState) then, + ) = + _$PaymentMethodAnalyticLoaderStateCopyWithImpl< + $Res, + PaymentMethodAnalyticLoaderState + >; + @useResult + $Res call({ + PaymentMethodAnalytic paymentMethodAnalytic, + Option failureOptionPaymentMethodAnalytic, + bool isFetching, + }); + + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic; +} + +/// @nodoc +class _$PaymentMethodAnalyticLoaderStateCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalyticLoaderState +> + implements $PaymentMethodAnalyticLoaderStateCopyWith<$Res> { + _$PaymentMethodAnalyticLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodAnalytic = null, + Object? failureOptionPaymentMethodAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + paymentMethodAnalytic: null == paymentMethodAnalytic + ? _value.paymentMethodAnalytic + : paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as PaymentMethodAnalytic, + failureOptionPaymentMethodAnalytic: + null == failureOptionPaymentMethodAnalytic + ? _value.failureOptionPaymentMethodAnalytic + : failureOptionPaymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic { + return $PaymentMethodAnalyticCopyWith<$Res>(_value.paymentMethodAnalytic, ( + value, + ) { + return _then(_value.copyWith(paymentMethodAnalytic: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$PaymentMethodAnalyticLoaderStateImplCopyWith<$Res> + implements $PaymentMethodAnalyticLoaderStateCopyWith<$Res> { + factory _$$PaymentMethodAnalyticLoaderStateImplCopyWith( + _$PaymentMethodAnalyticLoaderStateImpl value, + $Res Function(_$PaymentMethodAnalyticLoaderStateImpl) then, + ) = __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + PaymentMethodAnalytic paymentMethodAnalytic, + Option failureOptionPaymentMethodAnalytic, + bool isFetching, + }); + + @override + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic; +} + +/// @nodoc +class __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl<$Res> + extends + _$PaymentMethodAnalyticLoaderStateCopyWithImpl< + $Res, + _$PaymentMethodAnalyticLoaderStateImpl + > + implements _$$PaymentMethodAnalyticLoaderStateImplCopyWith<$Res> { + __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl( + _$PaymentMethodAnalyticLoaderStateImpl _value, + $Res Function(_$PaymentMethodAnalyticLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodAnalytic = null, + Object? failureOptionPaymentMethodAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _$PaymentMethodAnalyticLoaderStateImpl( + paymentMethodAnalytic: null == paymentMethodAnalytic + ? _value.paymentMethodAnalytic + : paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as PaymentMethodAnalytic, + failureOptionPaymentMethodAnalytic: + null == failureOptionPaymentMethodAnalytic + ? _value.failureOptionPaymentMethodAnalytic + : failureOptionPaymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodAnalyticLoaderStateImpl + implements _PaymentMethodAnalyticLoaderState { + const _$PaymentMethodAnalyticLoaderStateImpl({ + required this.paymentMethodAnalytic, + required this.failureOptionPaymentMethodAnalytic, + this.isFetching = false, + }); + + @override + final PaymentMethodAnalytic paymentMethodAnalytic; + @override + final Option failureOptionPaymentMethodAnalytic; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'PaymentMethodAnalyticLoaderState(paymentMethodAnalytic: $paymentMethodAnalytic, failureOptionPaymentMethodAnalytic: $failureOptionPaymentMethodAnalytic, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodAnalyticLoaderStateImpl && + (identical(other.paymentMethodAnalytic, paymentMethodAnalytic) || + other.paymentMethodAnalytic == paymentMethodAnalytic) && + (identical( + other.failureOptionPaymentMethodAnalytic, + failureOptionPaymentMethodAnalytic, + ) || + other.failureOptionPaymentMethodAnalytic == + failureOptionPaymentMethodAnalytic) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodAnalytic, + failureOptionPaymentMethodAnalytic, + isFetching, + ); + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodAnalyticLoaderStateImplCopyWith< + _$PaymentMethodAnalyticLoaderStateImpl + > + get copyWith => + __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl< + _$PaymentMethodAnalyticLoaderStateImpl + >(this, _$identity); +} + +abstract class _PaymentMethodAnalyticLoaderState + implements PaymentMethodAnalyticLoaderState { + const factory _PaymentMethodAnalyticLoaderState({ + required final PaymentMethodAnalytic paymentMethodAnalytic, + required final Option failureOptionPaymentMethodAnalytic, + final bool isFetching, + }) = _$PaymentMethodAnalyticLoaderStateImpl; + + @override + PaymentMethodAnalytic get paymentMethodAnalytic; + @override + Option get failureOptionPaymentMethodAnalytic; + @override + bool get isFetching; + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodAnalyticLoaderStateImplCopyWith< + _$PaymentMethodAnalyticLoaderStateImpl + > + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart new file mode 100644 index 0000000..04e5543 --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart @@ -0,0 +1,6 @@ +part of 'payment_method_analytic_loader_bloc.dart'; + +@freezed +class PaymentMethodAnalyticLoaderEvent with _$PaymentMethodAnalyticLoaderEvent { + const factory PaymentMethodAnalyticLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart new file mode 100644 index 0000000..62cb5cd --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart @@ -0,0 +1,16 @@ +part of 'payment_method_analytic_loader_bloc.dart'; + +@freezed +class PaymentMethodAnalyticLoaderState with _$PaymentMethodAnalyticLoaderState { + const factory PaymentMethodAnalyticLoaderState({ + required PaymentMethodAnalytic paymentMethodAnalytic, + required Option failureOptionPaymentMethodAnalytic, + @Default(false) bool isFetching, + }) = _PaymentMethodAnalyticLoaderState; + + factory PaymentMethodAnalyticLoaderState.initial() => + PaymentMethodAnalyticLoaderState( + paymentMethodAnalytic: PaymentMethodAnalytic.empty(), + failureOptionPaymentMethodAnalytic: none(), + ); +} diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart index d35c1aa..9a7fc21 100644 --- a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart @@ -174,7 +174,7 @@ abstract class _Fetched implements ProductAnalyticLoaderEvent { /// @nodoc mixin _$ProductAnalyticLoaderState { ProductAnalytic get productAnalytic => throw _privateConstructorUsedError; - dynamic get failureOptionProductAnalytic => + Option get failureOptionProductAnalytic => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; @@ -198,9 +198,11 @@ abstract class $ProductAnalyticLoaderStateCopyWith<$Res> { @useResult $Res call({ ProductAnalytic productAnalytic, - dynamic failureOptionProductAnalytic, + Option failureOptionProductAnalytic, bool isFetching, }); + + $ProductAnalyticCopyWith<$Res> get productAnalytic; } /// @nodoc @@ -221,21 +223,20 @@ class _$ProductAnalyticLoaderStateCopyWithImpl< @pragma('vm:prefer-inline') @override $Res call({ - Object? productAnalytic = freezed, - Object? failureOptionProductAnalytic = freezed, + Object? productAnalytic = null, + Object? failureOptionProductAnalytic = null, Object? isFetching = null, }) { return _then( _value.copyWith( - productAnalytic: freezed == productAnalytic + productAnalytic: null == productAnalytic ? _value.productAnalytic : productAnalytic // ignore: cast_nullable_to_non_nullable as ProductAnalytic, - failureOptionProductAnalytic: - freezed == failureOptionProductAnalytic + failureOptionProductAnalytic: null == failureOptionProductAnalytic ? _value.failureOptionProductAnalytic : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable - as dynamic, + as Option, isFetching: null == isFetching ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable @@ -244,6 +245,16 @@ class _$ProductAnalyticLoaderStateCopyWithImpl< as $Val, ); } + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProductAnalyticCopyWith<$Res> get productAnalytic { + return $ProductAnalyticCopyWith<$Res>(_value.productAnalytic, (value) { + return _then(_value.copyWith(productAnalytic: value) as $Val); + }); + } } /// @nodoc @@ -257,9 +268,12 @@ abstract class _$$ProductAnalyticLoaderStateImplCopyWith<$Res> @useResult $Res call({ ProductAnalytic productAnalytic, - dynamic failureOptionProductAnalytic, + Option failureOptionProductAnalytic, bool isFetching, }); + + @override + $ProductAnalyticCopyWith<$Res> get productAnalytic; } /// @nodoc @@ -280,19 +294,20 @@ class __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res> @pragma('vm:prefer-inline') @override $Res call({ - Object? productAnalytic = freezed, - Object? failureOptionProductAnalytic = freezed, + Object? productAnalytic = null, + Object? failureOptionProductAnalytic = null, Object? isFetching = null, }) { return _then( _$ProductAnalyticLoaderStateImpl( - productAnalytic: freezed == productAnalytic + productAnalytic: null == productAnalytic ? _value.productAnalytic : productAnalytic // ignore: cast_nullable_to_non_nullable as ProductAnalytic, - failureOptionProductAnalytic: freezed == failureOptionProductAnalytic - ? _value.failureOptionProductAnalytic! - : failureOptionProductAnalytic, + failureOptionProductAnalytic: null == failureOptionProductAnalytic + ? _value.failureOptionProductAnalytic + : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable + as Option, isFetching: null == isFetching ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable @@ -314,7 +329,7 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { @override final ProductAnalytic productAnalytic; @override - final dynamic failureOptionProductAnalytic; + final Option failureOptionProductAnalytic; @override @JsonKey() final bool isFetching; @@ -329,14 +344,14 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { return identical(this, other) || (other.runtimeType == runtimeType && other is _$ProductAnalyticLoaderStateImpl && - const DeepCollectionEquality().equals( - other.productAnalytic, - productAnalytic, - ) && - const DeepCollectionEquality().equals( - other.failureOptionProductAnalytic, - failureOptionProductAnalytic, - ) && + (identical(other.productAnalytic, productAnalytic) || + other.productAnalytic == productAnalytic) && + (identical( + other.failureOptionProductAnalytic, + failureOptionProductAnalytic, + ) || + other.failureOptionProductAnalytic == + failureOptionProductAnalytic) && (identical(other.isFetching, isFetching) || other.isFetching == isFetching)); } @@ -344,8 +359,8 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { @override int get hashCode => Object.hash( runtimeType, - const DeepCollectionEquality().hash(productAnalytic), - const DeepCollectionEquality().hash(failureOptionProductAnalytic), + productAnalytic, + failureOptionProductAnalytic, isFetching, ); @@ -365,14 +380,14 @@ abstract class _ProductAnalyticLoaderState implements ProductAnalyticLoaderState { const factory _ProductAnalyticLoaderState({ required final ProductAnalytic productAnalytic, - required final dynamic failureOptionProductAnalytic, + required final Option failureOptionProductAnalytic, final bool isFetching, }) = _$ProductAnalyticLoaderStateImpl; @override ProductAnalytic get productAnalytic; @override - dynamic get failureOptionProductAnalytic; + Option get failureOptionProductAnalytic; @override bool get isFetching; diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 4f8bee7..20031cf 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -9,6 +9,8 @@ class ApiPath { static const String categoryAnalytic = '/api/v1/analytics/categories'; static const String dashboardAnalytic = '/api/v1/analytics/dashboard'; static const String productAnalytic = '/api/v1/analytics/products'; + static const String paymentMethodAnalytic = + '/api/v1/analytics/paymentMethods'; // Inventory static const String inventoryReportDetail = diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 99ab431..f51eb5a 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -10,4 +10,5 @@ part 'entities/category_analytic_entity.dart'; part 'entities/inventory_analytic_entity.dart'; part 'entities/dashboard_analytic_entity.dart'; part 'entities/product_analytic_entity.dart'; +part 'entities/payment_method_analytic_entity.dart'; part 'failures/analytic_failure.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index 879b068..ac7fd5b 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -6269,6 +6269,814 @@ abstract class _ProductAnalyticData implements ProductAnalyticData { throw _privateConstructorUsedError; } +/// @nodoc +mixin _$PaymentMethodAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get dateFrom => throw _privateConstructorUsedError; + String get dateTo => throw _privateConstructorUsedError; + String get groupBy => throw _privateConstructorUsedError; + PaymentMethodSummary get summary => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticCopyWith<$Res> { + factory $PaymentMethodAnalyticCopyWith( + PaymentMethodAnalytic value, + $Res Function(PaymentMethodAnalytic) then, + ) = _$PaymentMethodAnalyticCopyWithImpl<$Res, PaymentMethodAnalytic>; + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + String groupBy, + PaymentMethodSummary summary, + List data, + }); + + $PaymentMethodSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class _$PaymentMethodAnalyticCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalytic +> + implements $PaymentMethodAnalyticCopyWith<$Res> { + _$PaymentMethodAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummary, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodSummaryCopyWith<$Res> get summary { + return $PaymentMethodSummaryCopyWith<$Res>(_value.summary, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$PaymentMethodAnalyticImplCopyWith<$Res> + implements $PaymentMethodAnalyticCopyWith<$Res> { + factory _$$PaymentMethodAnalyticImplCopyWith( + _$PaymentMethodAnalyticImpl value, + $Res Function(_$PaymentMethodAnalyticImpl) then, + ) = __$$PaymentMethodAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + String groupBy, + PaymentMethodSummary summary, + List data, + }); + + @override + $PaymentMethodSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class __$$PaymentMethodAnalyticImplCopyWithImpl<$Res> + extends + _$PaymentMethodAnalyticCopyWithImpl<$Res, _$PaymentMethodAnalyticImpl> + implements _$$PaymentMethodAnalyticImplCopyWith<$Res> { + __$$PaymentMethodAnalyticImplCopyWithImpl( + _$PaymentMethodAnalyticImpl _value, + $Res Function(_$PaymentMethodAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + }) { + return _then( + _$PaymentMethodAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummary, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodAnalyticImpl implements _PaymentMethodAnalytic { + const _$PaymentMethodAnalyticImpl({ + required this.organizationId, + required this.outletId, + required this.dateFrom, + required this.dateTo, + required this.groupBy, + required this.summary, + required final List data, + }) : _data = data; + + @override + final String organizationId; + @override + final String outletId; + @override + final String dateFrom; + @override + final String dateTo; + @override + final String groupBy; + @override + final PaymentMethodSummary summary; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + @override + String toString() { + return 'PaymentMethodAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodAnalyticImplCopyWith<_$PaymentMethodAnalyticImpl> + get copyWith => + __$$PaymentMethodAnalyticImplCopyWithImpl<_$PaymentMethodAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentMethodAnalytic implements PaymentMethodAnalytic { + const factory _PaymentMethodAnalytic({ + required final String organizationId, + required final String outletId, + required final String dateFrom, + required final String dateTo, + required final String groupBy, + required final PaymentMethodSummary summary, + required final List data, + }) = _$PaymentMethodAnalyticImpl; + + @override + String get organizationId; + @override + String get outletId; + @override + String get dateFrom; + @override + String get dateTo; + @override + String get groupBy; + @override + PaymentMethodSummary get summary; + @override + List get data; + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodAnalyticImplCopyWith<_$PaymentMethodAnalyticImpl> + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$PaymentMethodItem { + String get paymentMethodId => throw _privateConstructorUsedError; + String get paymentMethodName => throw _privateConstructorUsedError; + String get paymentMethodType => throw _privateConstructorUsedError; + num get totalAmount => throw _privateConstructorUsedError; + int get orderCount => throw _privateConstructorUsedError; + int get paymentCount => throw _privateConstructorUsedError; + double get percentage => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodItemCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodItemCopyWith<$Res> { + factory $PaymentMethodItemCopyWith( + PaymentMethodItem value, + $Res Function(PaymentMethodItem) then, + ) = _$PaymentMethodItemCopyWithImpl<$Res, PaymentMethodItem>; + @useResult + $Res call({ + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + num totalAmount, + int orderCount, + int paymentCount, + double percentage, + }); +} + +/// @nodoc +class _$PaymentMethodItemCopyWithImpl<$Res, $Val extends PaymentMethodItem> + implements $PaymentMethodItemCopyWith<$Res> { + _$PaymentMethodItemCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? totalAmount = null, + Object? orderCount = null, + Object? paymentCount = null, + Object? percentage = null, + }) { + return _then( + _value.copyWith( + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + percentage: null == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodItemImplCopyWith<$Res> + implements $PaymentMethodItemCopyWith<$Res> { + factory _$$PaymentMethodItemImplCopyWith( + _$PaymentMethodItemImpl value, + $Res Function(_$PaymentMethodItemImpl) then, + ) = __$$PaymentMethodItemImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + num totalAmount, + int orderCount, + int paymentCount, + double percentage, + }); +} + +/// @nodoc +class __$$PaymentMethodItemImplCopyWithImpl<$Res> + extends _$PaymentMethodItemCopyWithImpl<$Res, _$PaymentMethodItemImpl> + implements _$$PaymentMethodItemImplCopyWith<$Res> { + __$$PaymentMethodItemImplCopyWithImpl( + _$PaymentMethodItemImpl _value, + $Res Function(_$PaymentMethodItemImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? totalAmount = null, + Object? orderCount = null, + Object? paymentCount = null, + Object? percentage = null, + }) { + return _then( + _$PaymentMethodItemImpl( + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + percentage: null == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodItemImpl implements _PaymentMethodItem { + const _$PaymentMethodItemImpl({ + required this.paymentMethodId, + required this.paymentMethodName, + required this.paymentMethodType, + required this.totalAmount, + required this.orderCount, + required this.paymentCount, + required this.percentage, + }); + + @override + final String paymentMethodId; + @override + final String paymentMethodName; + @override + final String paymentMethodType; + @override + final num totalAmount; + @override + final int orderCount; + @override + final int paymentCount; + @override + final double percentage; + + @override + String toString() { + return 'PaymentMethodItem(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodItemImpl && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.percentage, percentage) || + other.percentage == percentage)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodId, + paymentMethodName, + paymentMethodType, + totalAmount, + orderCount, + paymentCount, + percentage, + ); + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodItemImplCopyWith<_$PaymentMethodItemImpl> get copyWith => + __$$PaymentMethodItemImplCopyWithImpl<_$PaymentMethodItemImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentMethodItem implements PaymentMethodItem { + const factory _PaymentMethodItem({ + required final String paymentMethodId, + required final String paymentMethodName, + required final String paymentMethodType, + required final num totalAmount, + required final int orderCount, + required final int paymentCount, + required final double percentage, + }) = _$PaymentMethodItemImpl; + + @override + String get paymentMethodId; + @override + String get paymentMethodName; + @override + String get paymentMethodType; + @override + num get totalAmount; + @override + int get orderCount; + @override + int get paymentCount; + @override + double get percentage; + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodItemImplCopyWith<_$PaymentMethodItemImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$PaymentMethodSummary { + num get totalAmount => throw _privateConstructorUsedError; + int get totalOrders => throw _privateConstructorUsedError; + int get totalPayments => throw _privateConstructorUsedError; + double get averageOrderValue => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodSummaryCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodSummaryCopyWith<$Res> { + factory $PaymentMethodSummaryCopyWith( + PaymentMethodSummary value, + $Res Function(PaymentMethodSummary) then, + ) = _$PaymentMethodSummaryCopyWithImpl<$Res, PaymentMethodSummary>; + @useResult + $Res call({ + num totalAmount, + int totalOrders, + int totalPayments, + double averageOrderValue, + }); +} + +/// @nodoc +class _$PaymentMethodSummaryCopyWithImpl< + $Res, + $Val extends PaymentMethodSummary +> + implements $PaymentMethodSummaryCopyWith<$Res> { + _$PaymentMethodSummaryCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = null, + Object? totalOrders = null, + Object? totalPayments = null, + Object? averageOrderValue = null, + }) { + return _then( + _value.copyWith( + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + totalPayments: null == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodSummaryImplCopyWith<$Res> + implements $PaymentMethodSummaryCopyWith<$Res> { + factory _$$PaymentMethodSummaryImplCopyWith( + _$PaymentMethodSummaryImpl value, + $Res Function(_$PaymentMethodSummaryImpl) then, + ) = __$$PaymentMethodSummaryImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + num totalAmount, + int totalOrders, + int totalPayments, + double averageOrderValue, + }); +} + +/// @nodoc +class __$$PaymentMethodSummaryImplCopyWithImpl<$Res> + extends _$PaymentMethodSummaryCopyWithImpl<$Res, _$PaymentMethodSummaryImpl> + implements _$$PaymentMethodSummaryImplCopyWith<$Res> { + __$$PaymentMethodSummaryImplCopyWithImpl( + _$PaymentMethodSummaryImpl _value, + $Res Function(_$PaymentMethodSummaryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = null, + Object? totalOrders = null, + Object? totalPayments = null, + Object? averageOrderValue = null, + }) { + return _then( + _$PaymentMethodSummaryImpl( + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + totalPayments: null == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodSummaryImpl implements _PaymentMethodSummary { + const _$PaymentMethodSummaryImpl({ + required this.totalAmount, + required this.totalOrders, + required this.totalPayments, + required this.averageOrderValue, + }); + + @override + final num totalAmount; + @override + final int totalOrders; + @override + final int totalPayments; + @override + final double averageOrderValue; + + @override + String toString() { + return 'PaymentMethodSummary(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodSummaryImpl && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.totalPayments, totalPayments) || + other.totalPayments == totalPayments) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + totalAmount, + totalOrders, + totalPayments, + averageOrderValue, + ); + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodSummaryImplCopyWith<_$PaymentMethodSummaryImpl> + get copyWith => + __$$PaymentMethodSummaryImplCopyWithImpl<_$PaymentMethodSummaryImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentMethodSummary implements PaymentMethodSummary { + const factory _PaymentMethodSummary({ + required final num totalAmount, + required final int totalOrders, + required final int totalPayments, + required final double averageOrderValue, + }) = _$PaymentMethodSummaryImpl; + + @override + num get totalAmount; + @override + int get totalOrders; + @override + int get totalPayments; + @override + double get averageOrderValue; + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodSummaryImplCopyWith<_$PaymentMethodSummaryImpl> + get copyWith => throw _privateConstructorUsedError; +} + /// @nodoc mixin _$AnalyticFailure { @optionalTypeArgs diff --git a/lib/domain/analytic/entities/payment_method_analytic_entity.dart b/lib/domain/analytic/entities/payment_method_analytic_entity.dart new file mode 100644 index 0000000..859e06d --- /dev/null +++ b/lib/domain/analytic/entities/payment_method_analytic_entity.dart @@ -0,0 +1,64 @@ +part of '../analytic.dart'; + +@freezed +class PaymentMethodAnalytic with _$PaymentMethodAnalytic { + const factory PaymentMethodAnalytic({ + required String organizationId, + required String outletId, + required String dateFrom, + required String dateTo, + required String groupBy, + required PaymentMethodSummary summary, + required List data, + }) = _PaymentMethodAnalytic; + + factory PaymentMethodAnalytic.empty() => PaymentMethodAnalytic( + organizationId: '', + outletId: '', + dateFrom: '', + dateTo: '', + groupBy: '', + summary: PaymentMethodSummary.empty(), + data: [], + ); +} + +@freezed +class PaymentMethodItem with _$PaymentMethodItem { + const factory PaymentMethodItem({ + required String paymentMethodId, + required String paymentMethodName, + required String paymentMethodType, + required num totalAmount, + required int orderCount, + required int paymentCount, + required double percentage, + }) = _PaymentMethodItem; + + factory PaymentMethodItem.empty() => const PaymentMethodItem( + paymentMethodId: '', + paymentMethodName: '', + paymentMethodType: '', + totalAmount: 0, + orderCount: 0, + paymentCount: 0, + percentage: 0.0, + ); +} + +@freezed +class PaymentMethodSummary with _$PaymentMethodSummary { + const factory PaymentMethodSummary({ + required num totalAmount, + required int totalOrders, + required int totalPayments, + required double averageOrderValue, + }) = _PaymentMethodSummary; + + factory PaymentMethodSummary.empty() => const PaymentMethodSummary( + totalAmount: 0, + totalOrders: 0, + totalPayments: 0, + averageOrderValue: 0.0, + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index a2a0c99..60fb168 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -32,4 +32,9 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + + Future> getPaymentMethod({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index f5ae672..abdb439 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -11,3 +11,4 @@ part 'dto/category_analytic_dto.dart'; part 'dto/inventory_analytic_dto.dart'; part 'dto/dashboard_analytic_dto.dart'; part 'dto/product_analytic_dto.dart'; +part 'dto/payment_method_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index 3385538..199c7a8 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -7280,3 +7280,945 @@ abstract class _ProductAnalyticDataDto extends ProductAnalyticDataDto { _$$ProductAnalyticDataDtoImplCopyWith<_$ProductAnalyticDataDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +PaymentMethodAnalyticDto _$PaymentMethodAnalyticDtoFromJson( + Map json, +) { + return _PaymentMethodAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentMethodAnalyticDto { + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + String? get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + String? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'group_by') + String? get groupBy => throw _privateConstructorUsedError; + @JsonKey(name: 'summary') + PaymentMethodSummaryDto? get summary => throw _privateConstructorUsedError; + @JsonKey(name: 'data') + List? get data => throw _privateConstructorUsedError; + + /// Serializes this PaymentMethodAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticDtoCopyWith<$Res> { + factory $PaymentMethodAnalyticDtoCopyWith( + PaymentMethodAnalyticDto value, + $Res Function(PaymentMethodAnalyticDto) then, + ) = _$PaymentMethodAnalyticDtoCopyWithImpl<$Res, PaymentMethodAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }); + + $PaymentMethodSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class _$PaymentMethodAnalyticDtoCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalyticDto +> + implements $PaymentMethodAnalyticDtoCopyWith<$Res> { + _$PaymentMethodAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + }) { + return _then( + _value.copyWith( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummaryDto?, + data: freezed == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodSummaryDtoCopyWith<$Res>? get summary { + if (_value.summary == null) { + return null; + } + + return $PaymentMethodSummaryDtoCopyWith<$Res>(_value.summary!, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$PaymentMethodAnalyticDtoImplCopyWith<$Res> + implements $PaymentMethodAnalyticDtoCopyWith<$Res> { + factory _$$PaymentMethodAnalyticDtoImplCopyWith( + _$PaymentMethodAnalyticDtoImpl value, + $Res Function(_$PaymentMethodAnalyticDtoImpl) then, + ) = __$$PaymentMethodAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }); + + @override + $PaymentMethodSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class __$$PaymentMethodAnalyticDtoImplCopyWithImpl<$Res> + extends + _$PaymentMethodAnalyticDtoCopyWithImpl< + $Res, + _$PaymentMethodAnalyticDtoImpl + > + implements _$$PaymentMethodAnalyticDtoImplCopyWith<$Res> { + __$$PaymentMethodAnalyticDtoImplCopyWithImpl( + _$PaymentMethodAnalyticDtoImpl _value, + $Res Function(_$PaymentMethodAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + }) { + return _then( + _$PaymentMethodAnalyticDtoImpl( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummaryDto?, + data: freezed == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentMethodAnalyticDtoImpl extends _PaymentMethodAnalyticDto { + const _$PaymentMethodAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'group_by') this.groupBy, + @JsonKey(name: 'summary') this.summary, + @JsonKey(name: 'data') final List? data, + }) : _data = data, + super._(); + + factory _$PaymentMethodAnalyticDtoImpl.fromJson(Map json) => + _$$PaymentMethodAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'date_from') + final String? dateFrom; + @override + @JsonKey(name: 'date_to') + final String? dateTo; + @override + @JsonKey(name: 'group_by') + final String? groupBy; + @override + @JsonKey(name: 'summary') + final PaymentMethodSummaryDto? summary; + final List? _data; + @override + @JsonKey(name: 'data') + List? get data { + final value = _data; + if (value == null) return null; + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'PaymentMethodAnalyticDto(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodAnalyticDtoImplCopyWith<_$PaymentMethodAnalyticDtoImpl> + get copyWith => + __$$PaymentMethodAnalyticDtoImplCopyWithImpl< + _$PaymentMethodAnalyticDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$PaymentMethodAnalyticDtoImplToJson(this); + } +} + +abstract class _PaymentMethodAnalyticDto extends PaymentMethodAnalyticDto { + const factory _PaymentMethodAnalyticDto({ + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'date_from') final String? dateFrom, + @JsonKey(name: 'date_to') final String? dateTo, + @JsonKey(name: 'group_by') final String? groupBy, + @JsonKey(name: 'summary') final PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') final List? data, + }) = _$PaymentMethodAnalyticDtoImpl; + const _PaymentMethodAnalyticDto._() : super._(); + + factory _PaymentMethodAnalyticDto.fromJson(Map json) = + _$PaymentMethodAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'date_from') + String? get dateFrom; + @override + @JsonKey(name: 'date_to') + String? get dateTo; + @override + @JsonKey(name: 'group_by') + String? get groupBy; + @override + @JsonKey(name: 'summary') + PaymentMethodSummaryDto? get summary; + @override + @JsonKey(name: 'data') + List? get data; + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodAnalyticDtoImplCopyWith<_$PaymentMethodAnalyticDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +PaymentMethodItemDto _$PaymentMethodItemDtoFromJson(Map json) { + return _PaymentMethodItemDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentMethodItemDto { + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType => throw _privateConstructorUsedError; + @JsonKey(name: 'total_amount') + num? get totalAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'order_count') + int? get orderCount => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_count') + int? get paymentCount => throw _privateConstructorUsedError; + @JsonKey(name: 'percentage') + double? get percentage => throw _privateConstructorUsedError; + + /// Serializes this PaymentMethodItemDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodItemDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodItemDtoCopyWith<$Res> { + factory $PaymentMethodItemDtoCopyWith( + PaymentMethodItemDto value, + $Res Function(PaymentMethodItemDto) then, + ) = _$PaymentMethodItemDtoCopyWithImpl<$Res, PaymentMethodItemDto>; + @useResult + $Res call({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }); +} + +/// @nodoc +class _$PaymentMethodItemDtoCopyWithImpl< + $Res, + $Val extends PaymentMethodItemDto +> + implements $PaymentMethodItemDtoCopyWith<$Res> { + _$PaymentMethodItemDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? totalAmount = freezed, + Object? orderCount = freezed, + Object? paymentCount = freezed, + Object? percentage = freezed, + }) { + return _then( + _value.copyWith( + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + percentage: freezed == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodItemDtoImplCopyWith<$Res> + implements $PaymentMethodItemDtoCopyWith<$Res> { + factory _$$PaymentMethodItemDtoImplCopyWith( + _$PaymentMethodItemDtoImpl value, + $Res Function(_$PaymentMethodItemDtoImpl) then, + ) = __$$PaymentMethodItemDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }); +} + +/// @nodoc +class __$$PaymentMethodItemDtoImplCopyWithImpl<$Res> + extends _$PaymentMethodItemDtoCopyWithImpl<$Res, _$PaymentMethodItemDtoImpl> + implements _$$PaymentMethodItemDtoImplCopyWith<$Res> { + __$$PaymentMethodItemDtoImplCopyWithImpl( + _$PaymentMethodItemDtoImpl _value, + $Res Function(_$PaymentMethodItemDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? totalAmount = freezed, + Object? orderCount = freezed, + Object? paymentCount = freezed, + Object? percentage = freezed, + }) { + return _then( + _$PaymentMethodItemDtoImpl( + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + percentage: freezed == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentMethodItemDtoImpl extends _PaymentMethodItemDto { + const _$PaymentMethodItemDtoImpl({ + @JsonKey(name: 'payment_method_id') this.paymentMethodId, + @JsonKey(name: 'payment_method_name') this.paymentMethodName, + @JsonKey(name: 'payment_method_type') this.paymentMethodType, + @JsonKey(name: 'total_amount') this.totalAmount, + @JsonKey(name: 'order_count') this.orderCount, + @JsonKey(name: 'payment_count') this.paymentCount, + @JsonKey(name: 'percentage') this.percentage, + }) : super._(); + + factory _$PaymentMethodItemDtoImpl.fromJson(Map json) => + _$$PaymentMethodItemDtoImplFromJson(json); + + @override + @JsonKey(name: 'payment_method_id') + final String? paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + final String? paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + final String? paymentMethodType; + @override + @JsonKey(name: 'total_amount') + final num? totalAmount; + @override + @JsonKey(name: 'order_count') + final int? orderCount; + @override + @JsonKey(name: 'payment_count') + final int? paymentCount; + @override + @JsonKey(name: 'percentage') + final double? percentage; + + @override + String toString() { + return 'PaymentMethodItemDto(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodItemDtoImpl && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.percentage, percentage) || + other.percentage == percentage)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodId, + paymentMethodName, + paymentMethodType, + totalAmount, + orderCount, + paymentCount, + percentage, + ); + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodItemDtoImplCopyWith<_$PaymentMethodItemDtoImpl> + get copyWith => + __$$PaymentMethodItemDtoImplCopyWithImpl<_$PaymentMethodItemDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$PaymentMethodItemDtoImplToJson(this); + } +} + +abstract class _PaymentMethodItemDto extends PaymentMethodItemDto { + const factory _PaymentMethodItemDto({ + @JsonKey(name: 'payment_method_id') final String? paymentMethodId, + @JsonKey(name: 'payment_method_name') final String? paymentMethodName, + @JsonKey(name: 'payment_method_type') final String? paymentMethodType, + @JsonKey(name: 'total_amount') final num? totalAmount, + @JsonKey(name: 'order_count') final int? orderCount, + @JsonKey(name: 'payment_count') final int? paymentCount, + @JsonKey(name: 'percentage') final double? percentage, + }) = _$PaymentMethodItemDtoImpl; + const _PaymentMethodItemDto._() : super._(); + + factory _PaymentMethodItemDto.fromJson(Map json) = + _$PaymentMethodItemDtoImpl.fromJson; + + @override + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType; + @override + @JsonKey(name: 'total_amount') + num? get totalAmount; + @override + @JsonKey(name: 'order_count') + int? get orderCount; + @override + @JsonKey(name: 'payment_count') + int? get paymentCount; + @override + @JsonKey(name: 'percentage') + double? get percentage; + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodItemDtoImplCopyWith<_$PaymentMethodItemDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +PaymentMethodSummaryDto _$PaymentMethodSummaryDtoFromJson( + Map json, +) { + return _PaymentMethodSummaryDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentMethodSummaryDto { + @JsonKey(name: 'total_amount') + num? get totalAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'total_orders') + int? get totalOrders => throw _privateConstructorUsedError; + @JsonKey(name: 'total_payments') + int? get totalPayments => throw _privateConstructorUsedError; + @JsonKey(name: 'average_order_value') + double? get averageOrderValue => throw _privateConstructorUsedError; + + /// Serializes this PaymentMethodSummaryDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodSummaryDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodSummaryDtoCopyWith<$Res> { + factory $PaymentMethodSummaryDtoCopyWith( + PaymentMethodSummaryDto value, + $Res Function(PaymentMethodSummaryDto) then, + ) = _$PaymentMethodSummaryDtoCopyWithImpl<$Res, PaymentMethodSummaryDto>; + @useResult + $Res call({ + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'total_payments') int? totalPayments, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + }); +} + +/// @nodoc +class _$PaymentMethodSummaryDtoCopyWithImpl< + $Res, + $Val extends PaymentMethodSummaryDto +> + implements $PaymentMethodSummaryDtoCopyWith<$Res> { + _$PaymentMethodSummaryDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = freezed, + Object? totalOrders = freezed, + Object? totalPayments = freezed, + Object? averageOrderValue = freezed, + }) { + return _then( + _value.copyWith( + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + totalPayments: freezed == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodSummaryDtoImplCopyWith<$Res> + implements $PaymentMethodSummaryDtoCopyWith<$Res> { + factory _$$PaymentMethodSummaryDtoImplCopyWith( + _$PaymentMethodSummaryDtoImpl value, + $Res Function(_$PaymentMethodSummaryDtoImpl) then, + ) = __$$PaymentMethodSummaryDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'total_payments') int? totalPayments, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + }); +} + +/// @nodoc +class __$$PaymentMethodSummaryDtoImplCopyWithImpl<$Res> + extends + _$PaymentMethodSummaryDtoCopyWithImpl< + $Res, + _$PaymentMethodSummaryDtoImpl + > + implements _$$PaymentMethodSummaryDtoImplCopyWith<$Res> { + __$$PaymentMethodSummaryDtoImplCopyWithImpl( + _$PaymentMethodSummaryDtoImpl _value, + $Res Function(_$PaymentMethodSummaryDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = freezed, + Object? totalOrders = freezed, + Object? totalPayments = freezed, + Object? averageOrderValue = freezed, + }) { + return _then( + _$PaymentMethodSummaryDtoImpl( + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + totalPayments: freezed == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentMethodSummaryDtoImpl extends _PaymentMethodSummaryDto { + const _$PaymentMethodSummaryDtoImpl({ + @JsonKey(name: 'total_amount') this.totalAmount, + @JsonKey(name: 'total_orders') this.totalOrders, + @JsonKey(name: 'total_payments') this.totalPayments, + @JsonKey(name: 'average_order_value') this.averageOrderValue, + }) : super._(); + + factory _$PaymentMethodSummaryDtoImpl.fromJson(Map json) => + _$$PaymentMethodSummaryDtoImplFromJson(json); + + @override + @JsonKey(name: 'total_amount') + final num? totalAmount; + @override + @JsonKey(name: 'total_orders') + final int? totalOrders; + @override + @JsonKey(name: 'total_payments') + final int? totalPayments; + @override + @JsonKey(name: 'average_order_value') + final double? averageOrderValue; + + @override + String toString() { + return 'PaymentMethodSummaryDto(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodSummaryDtoImpl && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.totalPayments, totalPayments) || + other.totalPayments == totalPayments) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + totalAmount, + totalOrders, + totalPayments, + averageOrderValue, + ); + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodSummaryDtoImplCopyWith<_$PaymentMethodSummaryDtoImpl> + get copyWith => + __$$PaymentMethodSummaryDtoImplCopyWithImpl< + _$PaymentMethodSummaryDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$PaymentMethodSummaryDtoImplToJson(this); + } +} + +abstract class _PaymentMethodSummaryDto extends PaymentMethodSummaryDto { + const factory _PaymentMethodSummaryDto({ + @JsonKey(name: 'total_amount') final num? totalAmount, + @JsonKey(name: 'total_orders') final int? totalOrders, + @JsonKey(name: 'total_payments') final int? totalPayments, + @JsonKey(name: 'average_order_value') final double? averageOrderValue, + }) = _$PaymentMethodSummaryDtoImpl; + const _PaymentMethodSummaryDto._() : super._(); + + factory _PaymentMethodSummaryDto.fromJson(Map json) = + _$PaymentMethodSummaryDtoImpl.fromJson; + + @override + @JsonKey(name: 'total_amount') + num? get totalAmount; + @override + @JsonKey(name: 'total_orders') + int? get totalOrders; + @override + @JsonKey(name: 'total_payments') + int? get totalPayments; + @override + @JsonKey(name: 'average_order_value') + double? get averageOrderValue; + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodSummaryDtoImplCopyWith<_$PaymentMethodSummaryDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index 6a760d7..f29e863 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -565,3 +565,75 @@ Map _$$ProductAnalyticDataDtoImplToJson( 'average_price': instance.averagePrice, 'order_count': instance.orderCount, }; + +_$PaymentMethodAnalyticDtoImpl _$$PaymentMethodAnalyticDtoImplFromJson( + Map json, +) => _$PaymentMethodAnalyticDtoImpl( + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + dateFrom: json['date_from'] as String?, + dateTo: json['date_to'] as String?, + groupBy: json['group_by'] as String?, + summary: json['summary'] == null + ? null + : PaymentMethodSummaryDto.fromJson( + json['summary'] as Map, + ), + data: (json['data'] as List?) + ?.map((e) => PaymentMethodItemDto.fromJson(e as Map)) + .toList(), +); + +Map _$$PaymentMethodAnalyticDtoImplToJson( + _$PaymentMethodAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'date_from': instance.dateFrom, + 'date_to': instance.dateTo, + 'group_by': instance.groupBy, + 'summary': instance.summary, + 'data': instance.data, +}; + +_$PaymentMethodItemDtoImpl _$$PaymentMethodItemDtoImplFromJson( + Map json, +) => _$PaymentMethodItemDtoImpl( + paymentMethodId: json['payment_method_id'] as String?, + paymentMethodName: json['payment_method_name'] as String?, + paymentMethodType: json['payment_method_type'] as String?, + totalAmount: json['total_amount'] as num?, + orderCount: (json['order_count'] as num?)?.toInt(), + paymentCount: (json['payment_count'] as num?)?.toInt(), + percentage: (json['percentage'] as num?)?.toDouble(), +); + +Map _$$PaymentMethodItemDtoImplToJson( + _$PaymentMethodItemDtoImpl instance, +) => { + 'payment_method_id': instance.paymentMethodId, + 'payment_method_name': instance.paymentMethodName, + 'payment_method_type': instance.paymentMethodType, + 'total_amount': instance.totalAmount, + 'order_count': instance.orderCount, + 'payment_count': instance.paymentCount, + 'percentage': instance.percentage, +}; + +_$PaymentMethodSummaryDtoImpl _$$PaymentMethodSummaryDtoImplFromJson( + Map json, +) => _$PaymentMethodSummaryDtoImpl( + totalAmount: json['total_amount'] as num?, + totalOrders: (json['total_orders'] as num?)?.toInt(), + totalPayments: (json['total_payments'] as num?)?.toInt(), + averageOrderValue: (json['average_order_value'] as num?)?.toDouble(), +); + +Map _$$PaymentMethodSummaryDtoImplToJson( + _$PaymentMethodSummaryDtoImpl instance, +) => { + 'total_amount': instance.totalAmount, + 'total_orders': instance.totalOrders, + 'total_payments': instance.totalPayments, + 'average_order_value': instance.averageOrderValue, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index f6283dc..ff52f3d 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -182,4 +182,32 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchPaymentMethod({ + required String outletId, + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.paymentMethodAnalytic, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = PaymentMethodAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchPaymentMethodError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart b/lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart new file mode 100644 index 0000000..b29f877 --- /dev/null +++ b/lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart @@ -0,0 +1,85 @@ +part of '../analytic_dtos.dart'; + +@freezed +class PaymentMethodAnalyticDto with _$PaymentMethodAnalyticDto { + const PaymentMethodAnalyticDto._(); + + const factory PaymentMethodAnalyticDto({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }) = _PaymentMethodAnalyticDto; + + factory PaymentMethodAnalyticDto.fromJson(Map json) => + _$PaymentMethodAnalyticDtoFromJson(json); + + PaymentMethodAnalytic toDomain() { + return PaymentMethodAnalytic( + organizationId: organizationId ?? '', + outletId: outletId ?? '', + dateFrom: dateFrom ?? '', + dateTo: dateTo ?? '', + groupBy: groupBy ?? '', + summary: summary?.toDomain() ?? PaymentMethodSummary.empty(), + data: data?.map((e) => e.toDomain()).toList() ?? [], + ); + } +} + +@freezed +class PaymentMethodItemDto with _$PaymentMethodItemDto { + const PaymentMethodItemDto._(); + + const factory PaymentMethodItemDto({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }) = _PaymentMethodItemDto; + + factory PaymentMethodItemDto.fromJson(Map json) => + _$PaymentMethodItemDtoFromJson(json); + + PaymentMethodItem toDomain() { + return PaymentMethodItem( + paymentMethodId: paymentMethodId ?? '', + paymentMethodName: paymentMethodName ?? '', + paymentMethodType: paymentMethodType ?? '', + totalAmount: totalAmount ?? 0, + orderCount: orderCount ?? 0, + paymentCount: paymentCount ?? 0, + percentage: percentage ?? 0.0, + ); + } +} + +@freezed +class PaymentMethodSummaryDto with _$PaymentMethodSummaryDto { + const PaymentMethodSummaryDto._(); + + const factory PaymentMethodSummaryDto({ + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'total_payments') int? totalPayments, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + }) = _PaymentMethodSummaryDto; + + factory PaymentMethodSummaryDto.fromJson(Map json) => + _$PaymentMethodSummaryDtoFromJson(json); + + PaymentMethodSummary toDomain() { + return PaymentMethodSummary( + totalAmount: totalAmount ?? 0, + totalOrders: totalOrders ?? 0, + totalPayments: totalPayments ?? 0, + averageOrderValue: averageOrderValue ?? 0.0, + ); + } +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 67b7c9a..77f2368 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -169,4 +169,31 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getPaymentMethod({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + + final result = await _dataProvider.fetchPaymentMethod( + outletId: currentUser.outletId, + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getPaymentMethodError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index e6b0cdf..ebc0cf1 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -15,6 +15,8 @@ import 'package:apskel_owner_flutter/application/analytic/dashboard_analytic_loa as _i516; import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart' as _i785; +import 'package:apskel_owner_flutter/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart' + as _i552; import 'package:apskel_owner_flutter/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart' as _i221; import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' @@ -184,6 +186,11 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i221.ProductAnalyticLoaderBloc>( () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i552.PaymentMethodAnalyticLoaderBloc>( + () => _i552.PaymentMethodAnalyticLoaderBloc( + gh<_i477.IAnalyticRepository>(), + ), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), );