feat: payment method analytic repo

This commit is contained in:
efrilm 2025-08-18 02:23:25 +07:00
parent d58198e7f0
commit bc95336a19
18 changed files with 2573 additions and 29 deletions

View File

@ -11,6 +11,6 @@ class InventoryAnalyticLoaderState with _$InventoryAnalyticLoaderState {
factory InventoryAnalyticLoaderState.initial() => factory InventoryAnalyticLoaderState.initial() =>
InventoryAnalyticLoaderState( InventoryAnalyticLoaderState(
inventoryAnalytic: InventoryAnalytic.empty(), inventoryAnalytic: InventoryAnalytic.empty(),
failureOptionInventoryAnalytic: None(), failureOptionInventoryAnalytic: none(),
); );
} }

View File

@ -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<PaymentMethodAnalyticLoaderEvent>(_onPaymentMethodAnalyticLoaderEvent);
}
Future<void> _onPaymentMethodAnalyticLoaderEvent(
PaymentMethodAnalyticLoaderEvent event,
Emitter<PaymentMethodAnalyticLoaderState> 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));
},
);
}
}

View File

@ -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>(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<TResult extends Object?>({
required TResult Function() fetched,
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? fetched,
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? fetched,
required TResult orElse(),
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(_Fetched value) fetched,
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(_Fetched value)? fetched,
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
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<TResult extends Object?>({required TResult Function() fetched}) {
return fetched();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({TResult? Function()? fetched}) {
return fetched?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? fetched,
required TResult orElse(),
}) {
if (fetched != null) {
return fetched();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(_Fetched value) fetched,
}) {
return fetched(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(_Fetched value)? fetched,
}) {
return fetched?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
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<AnalyticFailure> 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<PaymentMethodAnalyticLoaderState>
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<AnalyticFailure> 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<AnalyticFailure>,
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<AnalyticFailure> 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<AnalyticFailure>,
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<AnalyticFailure> 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<AnalyticFailure> failureOptionPaymentMethodAnalytic,
final bool isFetching,
}) = _$PaymentMethodAnalyticLoaderStateImpl;
@override
PaymentMethodAnalytic get paymentMethodAnalytic;
@override
Option<AnalyticFailure> 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;
}

View File

@ -0,0 +1,6 @@
part of 'payment_method_analytic_loader_bloc.dart';
@freezed
class PaymentMethodAnalyticLoaderEvent with _$PaymentMethodAnalyticLoaderEvent {
const factory PaymentMethodAnalyticLoaderEvent.fetched() = _Fetched;
}

View File

@ -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<AnalyticFailure> failureOptionPaymentMethodAnalytic,
@Default(false) bool isFetching,
}) = _PaymentMethodAnalyticLoaderState;
factory PaymentMethodAnalyticLoaderState.initial() =>
PaymentMethodAnalyticLoaderState(
paymentMethodAnalytic: PaymentMethodAnalytic.empty(),
failureOptionPaymentMethodAnalytic: none(),
);
}

View File

@ -174,7 +174,7 @@ abstract class _Fetched implements ProductAnalyticLoaderEvent {
/// @nodoc /// @nodoc
mixin _$ProductAnalyticLoaderState { mixin _$ProductAnalyticLoaderState {
ProductAnalytic get productAnalytic => throw _privateConstructorUsedError; ProductAnalytic get productAnalytic => throw _privateConstructorUsedError;
dynamic get failureOptionProductAnalytic => Option<AnalyticFailure> get failureOptionProductAnalytic =>
throw _privateConstructorUsedError; throw _privateConstructorUsedError;
bool get isFetching => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError;
@ -198,9 +198,11 @@ abstract class $ProductAnalyticLoaderStateCopyWith<$Res> {
@useResult @useResult
$Res call({ $Res call({
ProductAnalytic productAnalytic, ProductAnalytic productAnalytic,
dynamic failureOptionProductAnalytic, Option<AnalyticFailure> failureOptionProductAnalytic,
bool isFetching, bool isFetching,
}); });
$ProductAnalyticCopyWith<$Res> get productAnalytic;
} }
/// @nodoc /// @nodoc
@ -221,21 +223,20 @@ class _$ProductAnalyticLoaderStateCopyWithImpl<
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@override @override
$Res call({ $Res call({
Object? productAnalytic = freezed, Object? productAnalytic = null,
Object? failureOptionProductAnalytic = freezed, Object? failureOptionProductAnalytic = null,
Object? isFetching = null, Object? isFetching = null,
}) { }) {
return _then( return _then(
_value.copyWith( _value.copyWith(
productAnalytic: freezed == productAnalytic productAnalytic: null == productAnalytic
? _value.productAnalytic ? _value.productAnalytic
: productAnalytic // ignore: cast_nullable_to_non_nullable : productAnalytic // ignore: cast_nullable_to_non_nullable
as ProductAnalytic, as ProductAnalytic,
failureOptionProductAnalytic: failureOptionProductAnalytic: null == failureOptionProductAnalytic
freezed == failureOptionProductAnalytic
? _value.failureOptionProductAnalytic ? _value.failureOptionProductAnalytic
: failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable
as dynamic, as Option<AnalyticFailure>,
isFetching: null == isFetching isFetching: null == isFetching
? _value.isFetching ? _value.isFetching
: isFetching // ignore: cast_nullable_to_non_nullable : isFetching // ignore: cast_nullable_to_non_nullable
@ -244,6 +245,16 @@ class _$ProductAnalyticLoaderStateCopyWithImpl<
as $Val, 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 /// @nodoc
@ -257,9 +268,12 @@ abstract class _$$ProductAnalyticLoaderStateImplCopyWith<$Res>
@useResult @useResult
$Res call({ $Res call({
ProductAnalytic productAnalytic, ProductAnalytic productAnalytic,
dynamic failureOptionProductAnalytic, Option<AnalyticFailure> failureOptionProductAnalytic,
bool isFetching, bool isFetching,
}); });
@override
$ProductAnalyticCopyWith<$Res> get productAnalytic;
} }
/// @nodoc /// @nodoc
@ -280,19 +294,20 @@ class __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res>
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@override @override
$Res call({ $Res call({
Object? productAnalytic = freezed, Object? productAnalytic = null,
Object? failureOptionProductAnalytic = freezed, Object? failureOptionProductAnalytic = null,
Object? isFetching = null, Object? isFetching = null,
}) { }) {
return _then( return _then(
_$ProductAnalyticLoaderStateImpl( _$ProductAnalyticLoaderStateImpl(
productAnalytic: freezed == productAnalytic productAnalytic: null == productAnalytic
? _value.productAnalytic ? _value.productAnalytic
: productAnalytic // ignore: cast_nullable_to_non_nullable : productAnalytic // ignore: cast_nullable_to_non_nullable
as ProductAnalytic, as ProductAnalytic,
failureOptionProductAnalytic: freezed == failureOptionProductAnalytic failureOptionProductAnalytic: null == failureOptionProductAnalytic
? _value.failureOptionProductAnalytic! ? _value.failureOptionProductAnalytic
: failureOptionProductAnalytic, : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable
as Option<AnalyticFailure>,
isFetching: null == isFetching isFetching: null == isFetching
? _value.isFetching ? _value.isFetching
: isFetching // ignore: cast_nullable_to_non_nullable : isFetching // ignore: cast_nullable_to_non_nullable
@ -314,7 +329,7 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState {
@override @override
final ProductAnalytic productAnalytic; final ProductAnalytic productAnalytic;
@override @override
final dynamic failureOptionProductAnalytic; final Option<AnalyticFailure> failureOptionProductAnalytic;
@override @override
@JsonKey() @JsonKey()
final bool isFetching; final bool isFetching;
@ -329,14 +344,14 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState {
return identical(this, other) || return identical(this, other) ||
(other.runtimeType == runtimeType && (other.runtimeType == runtimeType &&
other is _$ProductAnalyticLoaderStateImpl && other is _$ProductAnalyticLoaderStateImpl &&
const DeepCollectionEquality().equals( (identical(other.productAnalytic, productAnalytic) ||
other.productAnalytic, other.productAnalytic == productAnalytic) &&
productAnalytic, (identical(
) &&
const DeepCollectionEquality().equals(
other.failureOptionProductAnalytic, other.failureOptionProductAnalytic,
failureOptionProductAnalytic, failureOptionProductAnalytic,
) && ) ||
other.failureOptionProductAnalytic ==
failureOptionProductAnalytic) &&
(identical(other.isFetching, isFetching) || (identical(other.isFetching, isFetching) ||
other.isFetching == isFetching)); other.isFetching == isFetching));
} }
@ -344,8 +359,8 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState {
@override @override
int get hashCode => Object.hash( int get hashCode => Object.hash(
runtimeType, runtimeType,
const DeepCollectionEquality().hash(productAnalytic), productAnalytic,
const DeepCollectionEquality().hash(failureOptionProductAnalytic), failureOptionProductAnalytic,
isFetching, isFetching,
); );
@ -365,14 +380,14 @@ abstract class _ProductAnalyticLoaderState
implements ProductAnalyticLoaderState { implements ProductAnalyticLoaderState {
const factory _ProductAnalyticLoaderState({ const factory _ProductAnalyticLoaderState({
required final ProductAnalytic productAnalytic, required final ProductAnalytic productAnalytic,
required final dynamic failureOptionProductAnalytic, required final Option<AnalyticFailure> failureOptionProductAnalytic,
final bool isFetching, final bool isFetching,
}) = _$ProductAnalyticLoaderStateImpl; }) = _$ProductAnalyticLoaderStateImpl;
@override @override
ProductAnalytic get productAnalytic; ProductAnalytic get productAnalytic;
@override @override
dynamic get failureOptionProductAnalytic; Option<AnalyticFailure> get failureOptionProductAnalytic;
@override @override
bool get isFetching; bool get isFetching;

View File

@ -9,6 +9,8 @@ class ApiPath {
static const String categoryAnalytic = '/api/v1/analytics/categories'; static const String categoryAnalytic = '/api/v1/analytics/categories';
static const String dashboardAnalytic = '/api/v1/analytics/dashboard'; static const String dashboardAnalytic = '/api/v1/analytics/dashboard';
static const String productAnalytic = '/api/v1/analytics/products'; static const String productAnalytic = '/api/v1/analytics/products';
static const String paymentMethodAnalytic =
'/api/v1/analytics/paymentMethods';
// Inventory // Inventory
static const String inventoryReportDetail = static const String inventoryReportDetail =

View File

@ -10,4 +10,5 @@ part 'entities/category_analytic_entity.dart';
part 'entities/inventory_analytic_entity.dart'; part 'entities/inventory_analytic_entity.dart';
part 'entities/dashboard_analytic_entity.dart'; part 'entities/dashboard_analytic_entity.dart';
part 'entities/product_analytic_entity.dart'; part 'entities/product_analytic_entity.dart';
part 'entities/payment_method_analytic_entity.dart';
part 'failures/analytic_failure.dart'; part 'failures/analytic_failure.dart';

View File

@ -6269,6 +6269,814 @@ abstract class _ProductAnalyticData implements ProductAnalyticData {
throw _privateConstructorUsedError; 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<PaymentMethodItem> 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<PaymentMethodAnalytic> 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<PaymentMethodItem> 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<PaymentMethodItem>,
)
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<PaymentMethodItem> 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<PaymentMethodItem>,
),
);
}
}
/// @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<PaymentMethodItem> 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<PaymentMethodItem> _data;
@override
List<PaymentMethodItem> 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<PaymentMethodItem> 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<PaymentMethodItem> 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<PaymentMethodItem> 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<PaymentMethodSummary> 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 /// @nodoc
mixin _$AnalyticFailure { mixin _$AnalyticFailure {
@optionalTypeArgs @optionalTypeArgs

View File

@ -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<PaymentMethodItem> 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,
);
}

View File

@ -32,4 +32,9 @@ abstract class IAnalyticRepository {
required DateTime dateFrom, required DateTime dateFrom,
required DateTime dateTo, required DateTime dateTo,
}); });
Future<Either<AnalyticFailure, PaymentMethodAnalytic>> getPaymentMethod({
required DateTime dateFrom,
required DateTime dateTo,
});
} }

View File

@ -11,3 +11,4 @@ part 'dto/category_analytic_dto.dart';
part 'dto/inventory_analytic_dto.dart'; part 'dto/inventory_analytic_dto.dart';
part 'dto/dashboard_analytic_dto.dart'; part 'dto/dashboard_analytic_dto.dart';
part 'dto/product_analytic_dto.dart'; part 'dto/product_analytic_dto.dart';
part 'dto/payment_method_analytic_dto.dart';

View File

@ -7280,3 +7280,945 @@ abstract class _ProductAnalyticDataDto extends ProductAnalyticDataDto {
_$$ProductAnalyticDataDtoImplCopyWith<_$ProductAnalyticDataDtoImpl> _$$ProductAnalyticDataDtoImplCopyWith<_$ProductAnalyticDataDtoImpl>
get copyWith => throw _privateConstructorUsedError; get copyWith => throw _privateConstructorUsedError;
} }
PaymentMethodAnalyticDto _$PaymentMethodAnalyticDtoFromJson(
Map<String, dynamic> 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<PaymentMethodItemDto>? get data => throw _privateConstructorUsedError;
/// Serializes this PaymentMethodAnalyticDto to a JSON map.
Map<String, dynamic> 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<PaymentMethodAnalyticDto> 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<PaymentMethodItemDto>? 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<PaymentMethodItemDto>?,
)
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<PaymentMethodItemDto>? 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<PaymentMethodItemDto>?,
),
);
}
}
/// @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<PaymentMethodItemDto>? data,
}) : _data = data,
super._();
factory _$PaymentMethodAnalyticDtoImpl.fromJson(Map<String, dynamic> 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<PaymentMethodItemDto>? _data;
@override
@JsonKey(name: 'data')
List<PaymentMethodItemDto>? 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<String, dynamic> 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<PaymentMethodItemDto>? data,
}) = _$PaymentMethodAnalyticDtoImpl;
const _PaymentMethodAnalyticDto._() : super._();
factory _PaymentMethodAnalyticDto.fromJson(Map<String, dynamic> 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<PaymentMethodItemDto>? 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<String, dynamic> 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<String, dynamic> 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<PaymentMethodItemDto> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<PaymentMethodSummaryDto> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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;
}

View File

@ -565,3 +565,75 @@ Map<String, dynamic> _$$ProductAnalyticDataDtoImplToJson(
'average_price': instance.averagePrice, 'average_price': instance.averagePrice,
'order_count': instance.orderCount, 'order_count': instance.orderCount,
}; };
_$PaymentMethodAnalyticDtoImpl _$$PaymentMethodAnalyticDtoImplFromJson(
Map<String, dynamic> 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<String, dynamic>,
),
data: (json['data'] as List<dynamic>?)
?.map((e) => PaymentMethodItemDto.fromJson(e as Map<String, dynamic>))
.toList(),
);
Map<String, dynamic> _$$PaymentMethodAnalyticDtoImplToJson(
_$PaymentMethodAnalyticDtoImpl instance,
) => <String, dynamic>{
'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<String, dynamic> 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<String, dynamic> _$$PaymentMethodItemDtoImplToJson(
_$PaymentMethodItemDtoImpl instance,
) => <String, dynamic>{
'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<String, dynamic> 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<String, dynamic> _$$PaymentMethodSummaryDtoImplToJson(
_$PaymentMethodSummaryDtoImpl instance,
) => <String, dynamic>{
'total_amount': instance.totalAmount,
'total_orders': instance.totalOrders,
'total_payments': instance.totalPayments,
'average_order_value': instance.averageOrderValue,
};

View File

@ -182,4 +182,32 @@ class AnalyticRemoteDataProvider {
return DC.error(AnalyticFailure.serverError(e)); return DC.error(AnalyticFailure.serverError(e));
} }
} }
Future<DC<AnalyticFailure, PaymentMethodAnalyticDto>> 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));
}
}
} }

View File

@ -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<PaymentMethodItemDto>? data,
}) = _PaymentMethodAnalyticDto;
factory PaymentMethodAnalyticDto.fromJson(Map<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) =>
_$PaymentMethodSummaryDtoFromJson(json);
PaymentMethodSummary toDomain() {
return PaymentMethodSummary(
totalAmount: totalAmount ?? 0,
totalOrders: totalOrders ?? 0,
totalPayments: totalPayments ?? 0,
averageOrderValue: averageOrderValue ?? 0.0,
);
}
}

View File

@ -169,4 +169,31 @@ class AnalyticRepository implements IAnalyticRepository {
return left(const AnalyticFailure.unexpectedError()); return left(const AnalyticFailure.unexpectedError());
} }
} }
@override
Future<Either<AnalyticFailure, PaymentMethodAnalytic>> 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());
}
}
} }

View File

@ -15,6 +15,8 @@ import 'package:apskel_owner_flutter/application/analytic/dashboard_analytic_loa
as _i516; as _i516;
import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart' import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart'
as _i785; 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' import 'package:apskel_owner_flutter/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart'
as _i221; as _i221;
import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' 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>( gh.factory<_i221.ProductAnalyticLoaderBloc>(
() => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()),
); );
gh.factory<_i552.PaymentMethodAnalyticLoaderBloc>(
() => _i552.PaymentMethodAnalyticLoaderBloc(
gh<_i477.IAnalyticRepository>(),
),
);
gh.factory<_i775.LoginFormBloc>( gh.factory<_i775.LoginFormBloc>(
() => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()),
); );