report payment method

This commit is contained in:
efrilm 2025-11-03 20:32:46 +07:00
parent 14c3c69ad6
commit 5a7892aa99
18 changed files with 2938 additions and 1 deletions

View File

@ -0,0 +1,59 @@
import 'package:bloc/bloc.dart';
import 'package:dartz/dartz.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:injectable/injectable.dart';
import '../../../domain/analytic/analytic.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 _analyticRepository;
PaymentMethodAnalyticLoaderBloc(this._analyticRepository)
: 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, failureOption: none()));
final result = await _analyticRepository.getPaymentMethod(
dateFrom: e.startDate,
dateTo: e.endDate,
);
await result.fold(
(failure) async {
emit(
state.copyWith(
isFetching: false,
failureOption: optionOf(failure),
),
);
},
(paymentMethod) async {
emit(
state.copyWith(
isFetching: false,
paymentMethodAnalytic: paymentMethod,
),
);
},
);
},
);
}
}

View File

@ -0,0 +1,487 @@
// 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 {
DateTime get startDate => throw _privateConstructorUsedError;
DateTime get endDate => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function(DateTime startDate, DateTime endDate) fetched,
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function(DateTime startDate, DateTime endDate)? fetched,
}) => throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function(DateTime startDate, DateTime endDate)? 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;
/// Create a copy of PaymentMethodAnalyticLoaderEvent
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$PaymentMethodAnalyticLoaderEventCopyWith<PaymentMethodAnalyticLoaderEvent>
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $PaymentMethodAnalyticLoaderEventCopyWith<$Res> {
factory $PaymentMethodAnalyticLoaderEventCopyWith(
PaymentMethodAnalyticLoaderEvent value,
$Res Function(PaymentMethodAnalyticLoaderEvent) then,
) =
_$PaymentMethodAnalyticLoaderEventCopyWithImpl<
$Res,
PaymentMethodAnalyticLoaderEvent
>;
@useResult
$Res call({DateTime startDate, DateTime endDate});
}
/// @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.
@pragma('vm:prefer-inline')
@override
$Res call({Object? startDate = null, Object? endDate = null}) {
return _then(
_value.copyWith(
startDate: null == startDate
? _value.startDate
: startDate // ignore: cast_nullable_to_non_nullable
as DateTime,
endDate: null == endDate
? _value.endDate
: endDate // ignore: cast_nullable_to_non_nullable
as DateTime,
)
as $Val,
);
}
}
/// @nodoc
abstract class _$$FetchedImplCopyWith<$Res>
implements $PaymentMethodAnalyticLoaderEventCopyWith<$Res> {
factory _$$FetchedImplCopyWith(
_$FetchedImpl value,
$Res Function(_$FetchedImpl) then,
) = __$$FetchedImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({DateTime startDate, DateTime endDate});
}
/// @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.
@pragma('vm:prefer-inline')
@override
$Res call({Object? startDate = null, Object? endDate = null}) {
return _then(
_$FetchedImpl(
startDate: null == startDate
? _value.startDate
: startDate // ignore: cast_nullable_to_non_nullable
as DateTime,
endDate: null == endDate
? _value.endDate
: endDate // ignore: cast_nullable_to_non_nullable
as DateTime,
),
);
}
}
/// @nodoc
class _$FetchedImpl implements _Fetched {
const _$FetchedImpl({required this.startDate, required this.endDate});
@override
final DateTime startDate;
@override
final DateTime endDate;
@override
String toString() {
return 'PaymentMethodAnalyticLoaderEvent.fetched(startDate: $startDate, endDate: $endDate)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$FetchedImpl &&
(identical(other.startDate, startDate) ||
other.startDate == startDate) &&
(identical(other.endDate, endDate) || other.endDate == endDate));
}
@override
int get hashCode => Object.hash(runtimeType, startDate, endDate);
/// Create a copy of PaymentMethodAnalyticLoaderEvent
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$FetchedImplCopyWith<_$FetchedImpl> get copyWith =>
__$$FetchedImplCopyWithImpl<_$FetchedImpl>(this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function(DateTime startDate, DateTime endDate) fetched,
}) {
return fetched(startDate, endDate);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function(DateTime startDate, DateTime endDate)? fetched,
}) {
return fetched?.call(startDate, endDate);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function(DateTime startDate, DateTime endDate)? fetched,
required TResult orElse(),
}) {
if (fetched != null) {
return fetched(startDate, endDate);
}
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({
required final DateTime startDate,
required final DateTime endDate,
}) = _$FetchedImpl;
@override
DateTime get startDate;
@override
DateTime get endDate;
/// Create a copy of PaymentMethodAnalyticLoaderEvent
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$FetchedImplCopyWith<_$FetchedImpl> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
mixin _$PaymentMethodAnalyticLoaderState {
PaymentMethodAnalytic get paymentMethodAnalytic =>
throw _privateConstructorUsedError;
Option<AnalyticFailure> get failureOption =>
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> failureOption,
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? failureOption = null,
Object? isFetching = null,
}) {
return _then(
_value.copyWith(
paymentMethodAnalytic: null == paymentMethodAnalytic
? _value.paymentMethodAnalytic
: paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable
as PaymentMethodAnalytic,
failureOption: null == failureOption
? _value.failureOption
: failureOption // 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> failureOption,
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? failureOption = null,
Object? isFetching = null,
}) {
return _then(
_$PaymentMethodAnalyticLoaderStateImpl(
paymentMethodAnalytic: null == paymentMethodAnalytic
? _value.paymentMethodAnalytic
: paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable
as PaymentMethodAnalytic,
failureOption: null == failureOption
? _value.failureOption
: failureOption // 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 {
_$PaymentMethodAnalyticLoaderStateImpl({
required this.paymentMethodAnalytic,
required this.failureOption,
this.isFetching = false,
});
@override
final PaymentMethodAnalytic paymentMethodAnalytic;
@override
final Option<AnalyticFailure> failureOption;
@override
@JsonKey()
final bool isFetching;
@override
String toString() {
return 'PaymentMethodAnalyticLoaderState(paymentMethodAnalytic: $paymentMethodAnalytic, failureOption: $failureOption, 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.failureOption, failureOption) ||
other.failureOption == failureOption) &&
(identical(other.isFetching, isFetching) ||
other.isFetching == isFetching));
}
@override
int get hashCode => Object.hash(
runtimeType,
paymentMethodAnalytic,
failureOption,
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 {
factory _PaymentMethodAnalyticLoaderState({
required final PaymentMethodAnalytic paymentMethodAnalytic,
required final Option<AnalyticFailure> failureOption,
final bool isFetching,
}) = _$PaymentMethodAnalyticLoaderStateImpl;
@override
PaymentMethodAnalytic get paymentMethodAnalytic;
@override
Option<AnalyticFailure> get failureOption;
@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,9 @@
part of 'payment_method_analytic_loader_bloc.dart';
@freezed
class PaymentMethodAnalyticLoaderEvent with _$PaymentMethodAnalyticLoaderEvent {
const factory PaymentMethodAnalyticLoaderEvent.fetched({
required DateTime startDate,
required DateTime endDate,
}) = _Fetched;
}

View File

@ -0,0 +1,16 @@
part of 'payment_method_analytic_loader_bloc.dart';
@freezed
class PaymentMethodAnalyticLoaderState with _$PaymentMethodAnalyticLoaderState {
factory PaymentMethodAnalyticLoaderState({
required PaymentMethodAnalytic paymentMethodAnalytic,
required Option<AnalyticFailure> failureOption,
@Default(false) bool isFetching,
}) = _PaymentMethodAnalyticLoaderState;
factory PaymentMethodAnalyticLoaderState.initial() =>
PaymentMethodAnalyticLoaderState(
paymentMethodAnalytic: PaymentMethodAnalytic.empty(),
failureOption: none(),
);
}

View File

@ -11,4 +11,6 @@ class ApiPath {
static const String analyticDashboard = '/api/v1/analytics/dashboard';
static const String analyticSales = '/api/v1/analytics/sales';
static const String analyticProducts = '/api/v1/analytics/products';
static const String analyticPaymentMethods =
'/api/v1/analytics/payment-methods';
}

View File

@ -8,5 +8,6 @@ part 'analytic.freezed.dart';
part 'entities/dashboard_entity.dart';
part 'entities/sales_entity.dart';
part 'entities/product_analytic_entity.dart';
part 'entities/payment_method_analytic_entity.dart';
part 'failures/analytic_failure.dart';
part 'repositories/i_analytic_repository.dart';

View File

@ -3093,6 +3093,836 @@ abstract class _ProductAnalyticCategoryItem
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
mixin _$PaymentMethodAnalytic {
String get organizationId => throw _privateConstructorUsedError;
String get outletId => throw _privateConstructorUsedError;
DateTime get dateFrom => throw _privateConstructorUsedError;
DateTime get dateTo => throw _privateConstructorUsedError;
String get groupBy => throw _privateConstructorUsedError;
PaymentMethodAnalyticSummary get summary =>
throw _privateConstructorUsedError;
List<PaymentMethodAnalyticItem> 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,
DateTime dateFrom,
DateTime dateTo,
String groupBy,
PaymentMethodAnalyticSummary summary,
List<PaymentMethodAnalyticItem> data,
});
$PaymentMethodAnalyticSummaryCopyWith<$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 DateTime,
dateTo: null == dateTo
? _value.dateTo
: dateTo // ignore: cast_nullable_to_non_nullable
as DateTime,
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 PaymentMethodAnalyticSummary,
data: null == data
? _value.data
: data // ignore: cast_nullable_to_non_nullable
as List<PaymentMethodAnalyticItem>,
)
as $Val,
);
}
/// Create a copy of PaymentMethodAnalytic
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$PaymentMethodAnalyticSummaryCopyWith<$Res> get summary {
return $PaymentMethodAnalyticSummaryCopyWith<$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,
DateTime dateFrom,
DateTime dateTo,
String groupBy,
PaymentMethodAnalyticSummary summary,
List<PaymentMethodAnalyticItem> data,
});
@override
$PaymentMethodAnalyticSummaryCopyWith<$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 DateTime,
dateTo: null == dateTo
? _value.dateTo
: dateTo // ignore: cast_nullable_to_non_nullable
as DateTime,
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 PaymentMethodAnalyticSummary,
data: null == data
? _value._data
: data // ignore: cast_nullable_to_non_nullable
as List<PaymentMethodAnalyticItem>,
),
);
}
}
/// @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<PaymentMethodAnalyticItem> data,
}) : _data = data;
@override
final String organizationId;
@override
final String outletId;
@override
final DateTime dateFrom;
@override
final DateTime dateTo;
@override
final String groupBy;
@override
final PaymentMethodAnalyticSummary summary;
final List<PaymentMethodAnalyticItem> _data;
@override
List<PaymentMethodAnalyticItem> 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 DateTime dateFrom,
required final DateTime dateTo,
required final String groupBy,
required final PaymentMethodAnalyticSummary summary,
required final List<PaymentMethodAnalyticItem> data,
}) = _$PaymentMethodAnalyticImpl;
@override
String get organizationId;
@override
String get outletId;
@override
DateTime get dateFrom;
@override
DateTime get dateTo;
@override
String get groupBy;
@override
PaymentMethodAnalyticSummary get summary;
@override
List<PaymentMethodAnalyticItem> 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 _$PaymentMethodAnalyticItem {
String get paymentMethodId => throw _privateConstructorUsedError;
String get paymentMethodName => throw _privateConstructorUsedError;
String get paymentMethodType => throw _privateConstructorUsedError;
int get totalAmount => throw _privateConstructorUsedError;
int get orderCount => throw _privateConstructorUsedError;
int get paymentCount => throw _privateConstructorUsedError;
num get percentage => throw _privateConstructorUsedError;
/// Create a copy of PaymentMethodAnalyticItem
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$PaymentMethodAnalyticItemCopyWith<PaymentMethodAnalyticItem> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $PaymentMethodAnalyticItemCopyWith<$Res> {
factory $PaymentMethodAnalyticItemCopyWith(
PaymentMethodAnalyticItem value,
$Res Function(PaymentMethodAnalyticItem) then,
) = _$PaymentMethodAnalyticItemCopyWithImpl<$Res, PaymentMethodAnalyticItem>;
@useResult
$Res call({
String paymentMethodId,
String paymentMethodName,
String paymentMethodType,
int totalAmount,
int orderCount,
int paymentCount,
num percentage,
});
}
/// @nodoc
class _$PaymentMethodAnalyticItemCopyWithImpl<
$Res,
$Val extends PaymentMethodAnalyticItem
>
implements $PaymentMethodAnalyticItemCopyWith<$Res> {
_$PaymentMethodAnalyticItemCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of PaymentMethodAnalyticItem
/// 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 int,
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 num,
)
as $Val,
);
}
}
/// @nodoc
abstract class _$$PaymentMethodAnalyticItemImplCopyWith<$Res>
implements $PaymentMethodAnalyticItemCopyWith<$Res> {
factory _$$PaymentMethodAnalyticItemImplCopyWith(
_$PaymentMethodAnalyticItemImpl value,
$Res Function(_$PaymentMethodAnalyticItemImpl) then,
) = __$$PaymentMethodAnalyticItemImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({
String paymentMethodId,
String paymentMethodName,
String paymentMethodType,
int totalAmount,
int orderCount,
int paymentCount,
num percentage,
});
}
/// @nodoc
class __$$PaymentMethodAnalyticItemImplCopyWithImpl<$Res>
extends
_$PaymentMethodAnalyticItemCopyWithImpl<
$Res,
_$PaymentMethodAnalyticItemImpl
>
implements _$$PaymentMethodAnalyticItemImplCopyWith<$Res> {
__$$PaymentMethodAnalyticItemImplCopyWithImpl(
_$PaymentMethodAnalyticItemImpl _value,
$Res Function(_$PaymentMethodAnalyticItemImpl) _then,
) : super(_value, _then);
/// Create a copy of PaymentMethodAnalyticItem
/// 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(
_$PaymentMethodAnalyticItemImpl(
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 int,
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 num,
),
);
}
}
/// @nodoc
class _$PaymentMethodAnalyticItemImpl implements _PaymentMethodAnalyticItem {
const _$PaymentMethodAnalyticItemImpl({
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 int totalAmount;
@override
final int orderCount;
@override
final int paymentCount;
@override
final num percentage;
@override
String toString() {
return 'PaymentMethodAnalyticItem(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 _$PaymentMethodAnalyticItemImpl &&
(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 PaymentMethodAnalyticItem
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$PaymentMethodAnalyticItemImplCopyWith<_$PaymentMethodAnalyticItemImpl>
get copyWith =>
__$$PaymentMethodAnalyticItemImplCopyWithImpl<
_$PaymentMethodAnalyticItemImpl
>(this, _$identity);
}
abstract class _PaymentMethodAnalyticItem implements PaymentMethodAnalyticItem {
const factory _PaymentMethodAnalyticItem({
required final String paymentMethodId,
required final String paymentMethodName,
required final String paymentMethodType,
required final int totalAmount,
required final int orderCount,
required final int paymentCount,
required final num percentage,
}) = _$PaymentMethodAnalyticItemImpl;
@override
String get paymentMethodId;
@override
String get paymentMethodName;
@override
String get paymentMethodType;
@override
int get totalAmount;
@override
int get orderCount;
@override
int get paymentCount;
@override
num get percentage;
/// Create a copy of PaymentMethodAnalyticItem
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$PaymentMethodAnalyticItemImplCopyWith<_$PaymentMethodAnalyticItemImpl>
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
mixin _$PaymentMethodAnalyticSummary {
int get totalAmount => throw _privateConstructorUsedError;
int get totalOrders => throw _privateConstructorUsedError;
int get totalPayments => throw _privateConstructorUsedError;
double get averageOrderValue => throw _privateConstructorUsedError;
/// Create a copy of PaymentMethodAnalyticSummary
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$PaymentMethodAnalyticSummaryCopyWith<PaymentMethodAnalyticSummary>
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $PaymentMethodAnalyticSummaryCopyWith<$Res> {
factory $PaymentMethodAnalyticSummaryCopyWith(
PaymentMethodAnalyticSummary value,
$Res Function(PaymentMethodAnalyticSummary) then,
) =
_$PaymentMethodAnalyticSummaryCopyWithImpl<
$Res,
PaymentMethodAnalyticSummary
>;
@useResult
$Res call({
int totalAmount,
int totalOrders,
int totalPayments,
double averageOrderValue,
});
}
/// @nodoc
class _$PaymentMethodAnalyticSummaryCopyWithImpl<
$Res,
$Val extends PaymentMethodAnalyticSummary
>
implements $PaymentMethodAnalyticSummaryCopyWith<$Res> {
_$PaymentMethodAnalyticSummaryCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of PaymentMethodAnalyticSummary
/// 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 int,
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 _$$PaymentMethodAnalyticSummaryImplCopyWith<$Res>
implements $PaymentMethodAnalyticSummaryCopyWith<$Res> {
factory _$$PaymentMethodAnalyticSummaryImplCopyWith(
_$PaymentMethodAnalyticSummaryImpl value,
$Res Function(_$PaymentMethodAnalyticSummaryImpl) then,
) = __$$PaymentMethodAnalyticSummaryImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({
int totalAmount,
int totalOrders,
int totalPayments,
double averageOrderValue,
});
}
/// @nodoc
class __$$PaymentMethodAnalyticSummaryImplCopyWithImpl<$Res>
extends
_$PaymentMethodAnalyticSummaryCopyWithImpl<
$Res,
_$PaymentMethodAnalyticSummaryImpl
>
implements _$$PaymentMethodAnalyticSummaryImplCopyWith<$Res> {
__$$PaymentMethodAnalyticSummaryImplCopyWithImpl(
_$PaymentMethodAnalyticSummaryImpl _value,
$Res Function(_$PaymentMethodAnalyticSummaryImpl) _then,
) : super(_value, _then);
/// Create a copy of PaymentMethodAnalyticSummary
/// 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(
_$PaymentMethodAnalyticSummaryImpl(
totalAmount: null == totalAmount
? _value.totalAmount
: totalAmount // ignore: cast_nullable_to_non_nullable
as int,
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 _$PaymentMethodAnalyticSummaryImpl
implements _PaymentMethodAnalyticSummary {
const _$PaymentMethodAnalyticSummaryImpl({
required this.totalAmount,
required this.totalOrders,
required this.totalPayments,
required this.averageOrderValue,
});
@override
final int totalAmount;
@override
final int totalOrders;
@override
final int totalPayments;
@override
final double averageOrderValue;
@override
String toString() {
return 'PaymentMethodAnalyticSummary(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$PaymentMethodAnalyticSummaryImpl &&
(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 PaymentMethodAnalyticSummary
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$PaymentMethodAnalyticSummaryImplCopyWith<
_$PaymentMethodAnalyticSummaryImpl
>
get copyWith =>
__$$PaymentMethodAnalyticSummaryImplCopyWithImpl<
_$PaymentMethodAnalyticSummaryImpl
>(this, _$identity);
}
abstract class _PaymentMethodAnalyticSummary
implements PaymentMethodAnalyticSummary {
const factory _PaymentMethodAnalyticSummary({
required final int totalAmount,
required final int totalOrders,
required final int totalPayments,
required final double averageOrderValue,
}) = _$PaymentMethodAnalyticSummaryImpl;
@override
int get totalAmount;
@override
int get totalOrders;
@override
int get totalPayments;
@override
double get averageOrderValue;
/// Create a copy of PaymentMethodAnalyticSummary
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$PaymentMethodAnalyticSummaryImplCopyWith<
_$PaymentMethodAnalyticSummaryImpl
>
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
mixin _$AnalyticFailure {
@optionalTypeArgs

View File

@ -0,0 +1,65 @@
part of '../analytic.dart';
@freezed
class PaymentMethodAnalytic with _$PaymentMethodAnalytic {
const factory PaymentMethodAnalytic({
required String organizationId,
required String outletId,
required DateTime dateFrom,
required DateTime dateTo,
required String groupBy,
required PaymentMethodAnalyticSummary summary,
required List<PaymentMethodAnalyticItem> data,
}) = _PaymentMethodAnalytic;
factory PaymentMethodAnalytic.empty() => PaymentMethodAnalytic(
organizationId: '',
outletId: '',
dateFrom: DateTime.now(),
dateTo: DateTime.now(),
groupBy: '',
summary: PaymentMethodAnalyticSummary.empty(),
data: const [],
);
}
@freezed
class PaymentMethodAnalyticItem with _$PaymentMethodAnalyticItem {
const factory PaymentMethodAnalyticItem({
required String paymentMethodId,
required String paymentMethodName,
required String paymentMethodType,
required int totalAmount,
required int orderCount,
required int paymentCount,
required num percentage,
}) = _PaymentMethodAnalyticItem;
factory PaymentMethodAnalyticItem.empty() => const PaymentMethodAnalyticItem(
paymentMethodId: '',
paymentMethodName: '',
paymentMethodType: '',
totalAmount: 0,
orderCount: 0,
paymentCount: 0,
percentage: 0,
);
}
@freezed
class PaymentMethodAnalyticSummary with _$PaymentMethodAnalyticSummary {
const factory PaymentMethodAnalyticSummary({
required int totalAmount,
required int totalOrders,
required int totalPayments,
required double averageOrderValue,
}) = _PaymentMethodAnalyticSummary;
factory PaymentMethodAnalyticSummary.empty() =>
const PaymentMethodAnalyticSummary(
totalAmount: 0,
totalOrders: 0,
totalPayments: 0,
averageOrderValue: 0.0,
);
}

View File

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

View File

@ -8,3 +8,4 @@ part 'analytic_dtos.g.dart';
part 'dtos/dashboard_dto.dart';
part 'dtos/sales_dto.dart';
part 'dtos/product_analytic_dto.dart';
part 'dtos/payment_method_analytic_dto.dart';

View File

@ -3374,3 +3374,975 @@ abstract class _ProductAnalyticItemDto extends ProductAnalyticItemDto {
_$$ProductAnalyticItemDtoImplCopyWith<_$ProductAnalyticItemDtoImpl>
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")
DateTime? get dateFrom => throw _privateConstructorUsedError;
@JsonKey(name: "date_to")
DateTime? get dateTo => throw _privateConstructorUsedError;
@JsonKey(name: "group_by")
String? get groupBy => throw _privateConstructorUsedError;
@JsonKey(name: "summary")
PaymentMethodAnalyticSummaryDto? get summary =>
throw _privateConstructorUsedError;
@JsonKey(name: "data")
List<PaymentMethodAnalyticItemDto>? 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") DateTime? dateFrom,
@JsonKey(name: "date_to") DateTime? dateTo,
@JsonKey(name: "group_by") String? groupBy,
@JsonKey(name: "summary") PaymentMethodAnalyticSummaryDto? summary,
@JsonKey(name: "data") List<PaymentMethodAnalyticItemDto>? data,
});
$PaymentMethodAnalyticSummaryDtoCopyWith<$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 DateTime?,
dateTo: freezed == dateTo
? _value.dateTo
: dateTo // ignore: cast_nullable_to_non_nullable
as DateTime?,
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 PaymentMethodAnalyticSummaryDto?,
data: freezed == data
? _value.data
: data // ignore: cast_nullable_to_non_nullable
as List<PaymentMethodAnalyticItemDto>?,
)
as $Val,
);
}
/// Create a copy of PaymentMethodAnalyticDto
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$PaymentMethodAnalyticSummaryDtoCopyWith<$Res>? get summary {
if (_value.summary == null) {
return null;
}
return $PaymentMethodAnalyticSummaryDtoCopyWith<$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") DateTime? dateFrom,
@JsonKey(name: "date_to") DateTime? dateTo,
@JsonKey(name: "group_by") String? groupBy,
@JsonKey(name: "summary") PaymentMethodAnalyticSummaryDto? summary,
@JsonKey(name: "data") List<PaymentMethodAnalyticItemDto>? data,
});
@override
$PaymentMethodAnalyticSummaryDtoCopyWith<$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 DateTime?,
dateTo: freezed == dateTo
? _value.dateTo
: dateTo // ignore: cast_nullable_to_non_nullable
as DateTime?,
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 PaymentMethodAnalyticSummaryDto?,
data: freezed == data
? _value._data
: data // ignore: cast_nullable_to_non_nullable
as List<PaymentMethodAnalyticItemDto>?,
),
);
}
}
/// @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<PaymentMethodAnalyticItemDto>? 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 DateTime? dateFrom;
@override
@JsonKey(name: "date_to")
final DateTime? dateTo;
@override
@JsonKey(name: "group_by")
final String? groupBy;
@override
@JsonKey(name: "summary")
final PaymentMethodAnalyticSummaryDto? summary;
final List<PaymentMethodAnalyticItemDto>? _data;
@override
@JsonKey(name: "data")
List<PaymentMethodAnalyticItemDto>? 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 DateTime? dateFrom,
@JsonKey(name: "date_to") final DateTime? dateTo,
@JsonKey(name: "group_by") final String? groupBy,
@JsonKey(name: "summary") final PaymentMethodAnalyticSummaryDto? summary,
@JsonKey(name: "data") final List<PaymentMethodAnalyticItemDto>? 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")
DateTime? get dateFrom;
@override
@JsonKey(name: "date_to")
DateTime? get dateTo;
@override
@JsonKey(name: "group_by")
String? get groupBy;
@override
@JsonKey(name: "summary")
PaymentMethodAnalyticSummaryDto? get summary;
@override
@JsonKey(name: "data")
List<PaymentMethodAnalyticItemDto>? 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;
}
PaymentMethodAnalyticItemDto _$PaymentMethodAnalyticItemDtoFromJson(
Map<String, dynamic> json,
) {
return _PaymentMethodAnalyticItemDto.fromJson(json);
}
/// @nodoc
mixin _$PaymentMethodAnalyticItemDto {
@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")
int? 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")
num? get percentage => throw _privateConstructorUsedError;
/// Serializes this PaymentMethodAnalyticItemDto to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of PaymentMethodAnalyticItemDto
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$PaymentMethodAnalyticItemDtoCopyWith<PaymentMethodAnalyticItemDto>
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $PaymentMethodAnalyticItemDtoCopyWith<$Res> {
factory $PaymentMethodAnalyticItemDtoCopyWith(
PaymentMethodAnalyticItemDto value,
$Res Function(PaymentMethodAnalyticItemDto) then,
) =
_$PaymentMethodAnalyticItemDtoCopyWithImpl<
$Res,
PaymentMethodAnalyticItemDto
>;
@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") int? totalAmount,
@JsonKey(name: "order_count") int? orderCount,
@JsonKey(name: "payment_count") int? paymentCount,
@JsonKey(name: "percentage") num? percentage,
});
}
/// @nodoc
class _$PaymentMethodAnalyticItemDtoCopyWithImpl<
$Res,
$Val extends PaymentMethodAnalyticItemDto
>
implements $PaymentMethodAnalyticItemDtoCopyWith<$Res> {
_$PaymentMethodAnalyticItemDtoCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of PaymentMethodAnalyticItemDto
/// 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 int?,
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 num?,
)
as $Val,
);
}
}
/// @nodoc
abstract class _$$PaymentMethodAnalyticItemDtoImplCopyWith<$Res>
implements $PaymentMethodAnalyticItemDtoCopyWith<$Res> {
factory _$$PaymentMethodAnalyticItemDtoImplCopyWith(
_$PaymentMethodAnalyticItemDtoImpl value,
$Res Function(_$PaymentMethodAnalyticItemDtoImpl) then,
) = __$$PaymentMethodAnalyticItemDtoImplCopyWithImpl<$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") int? totalAmount,
@JsonKey(name: "order_count") int? orderCount,
@JsonKey(name: "payment_count") int? paymentCount,
@JsonKey(name: "percentage") num? percentage,
});
}
/// @nodoc
class __$$PaymentMethodAnalyticItemDtoImplCopyWithImpl<$Res>
extends
_$PaymentMethodAnalyticItemDtoCopyWithImpl<
$Res,
_$PaymentMethodAnalyticItemDtoImpl
>
implements _$$PaymentMethodAnalyticItemDtoImplCopyWith<$Res> {
__$$PaymentMethodAnalyticItemDtoImplCopyWithImpl(
_$PaymentMethodAnalyticItemDtoImpl _value,
$Res Function(_$PaymentMethodAnalyticItemDtoImpl) _then,
) : super(_value, _then);
/// Create a copy of PaymentMethodAnalyticItemDto
/// 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(
_$PaymentMethodAnalyticItemDtoImpl(
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 int?,
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 num?,
),
);
}
}
/// @nodoc
@JsonSerializable()
class _$PaymentMethodAnalyticItemDtoImpl extends _PaymentMethodAnalyticItemDto {
const _$PaymentMethodAnalyticItemDtoImpl({
@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 _$PaymentMethodAnalyticItemDtoImpl.fromJson(
Map<String, dynamic> json,
) => _$$PaymentMethodAnalyticItemDtoImplFromJson(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 int? totalAmount;
@override
@JsonKey(name: "order_count")
final int? orderCount;
@override
@JsonKey(name: "payment_count")
final int? paymentCount;
@override
@JsonKey(name: "percentage")
final num? percentage;
@override
String toString() {
return 'PaymentMethodAnalyticItemDto(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 _$PaymentMethodAnalyticItemDtoImpl &&
(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 PaymentMethodAnalyticItemDto
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$PaymentMethodAnalyticItemDtoImplCopyWith<
_$PaymentMethodAnalyticItemDtoImpl
>
get copyWith =>
__$$PaymentMethodAnalyticItemDtoImplCopyWithImpl<
_$PaymentMethodAnalyticItemDtoImpl
>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$PaymentMethodAnalyticItemDtoImplToJson(this);
}
}
abstract class _PaymentMethodAnalyticItemDto
extends PaymentMethodAnalyticItemDto {
const factory _PaymentMethodAnalyticItemDto({
@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 int? totalAmount,
@JsonKey(name: "order_count") final int? orderCount,
@JsonKey(name: "payment_count") final int? paymentCount,
@JsonKey(name: "percentage") final num? percentage,
}) = _$PaymentMethodAnalyticItemDtoImpl;
const _PaymentMethodAnalyticItemDto._() : super._();
factory _PaymentMethodAnalyticItemDto.fromJson(Map<String, dynamic> json) =
_$PaymentMethodAnalyticItemDtoImpl.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")
int? get totalAmount;
@override
@JsonKey(name: "order_count")
int? get orderCount;
@override
@JsonKey(name: "payment_count")
int? get paymentCount;
@override
@JsonKey(name: "percentage")
num? get percentage;
/// Create a copy of PaymentMethodAnalyticItemDto
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$PaymentMethodAnalyticItemDtoImplCopyWith<
_$PaymentMethodAnalyticItemDtoImpl
>
get copyWith => throw _privateConstructorUsedError;
}
PaymentMethodAnalyticSummaryDto _$PaymentMethodAnalyticSummaryDtoFromJson(
Map<String, dynamic> json,
) {
return _PaymentMethodAnalyticSummaryDto.fromJson(json);
}
/// @nodoc
mixin _$PaymentMethodAnalyticSummaryDto {
@JsonKey(name: "total_amount")
int? 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 PaymentMethodAnalyticSummaryDto to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of PaymentMethodAnalyticSummaryDto
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$PaymentMethodAnalyticSummaryDtoCopyWith<PaymentMethodAnalyticSummaryDto>
get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $PaymentMethodAnalyticSummaryDtoCopyWith<$Res> {
factory $PaymentMethodAnalyticSummaryDtoCopyWith(
PaymentMethodAnalyticSummaryDto value,
$Res Function(PaymentMethodAnalyticSummaryDto) then,
) =
_$PaymentMethodAnalyticSummaryDtoCopyWithImpl<
$Res,
PaymentMethodAnalyticSummaryDto
>;
@useResult
$Res call({
@JsonKey(name: "total_amount") int? totalAmount,
@JsonKey(name: "total_orders") int? totalOrders,
@JsonKey(name: "total_payments") int? totalPayments,
@JsonKey(name: "average_order_value") double? averageOrderValue,
});
}
/// @nodoc
class _$PaymentMethodAnalyticSummaryDtoCopyWithImpl<
$Res,
$Val extends PaymentMethodAnalyticSummaryDto
>
implements $PaymentMethodAnalyticSummaryDtoCopyWith<$Res> {
_$PaymentMethodAnalyticSummaryDtoCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of PaymentMethodAnalyticSummaryDto
/// 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 int?,
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 _$$PaymentMethodAnalyticSummaryDtoImplCopyWith<$Res>
implements $PaymentMethodAnalyticSummaryDtoCopyWith<$Res> {
factory _$$PaymentMethodAnalyticSummaryDtoImplCopyWith(
_$PaymentMethodAnalyticSummaryDtoImpl value,
$Res Function(_$PaymentMethodAnalyticSummaryDtoImpl) then,
) = __$$PaymentMethodAnalyticSummaryDtoImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({
@JsonKey(name: "total_amount") int? totalAmount,
@JsonKey(name: "total_orders") int? totalOrders,
@JsonKey(name: "total_payments") int? totalPayments,
@JsonKey(name: "average_order_value") double? averageOrderValue,
});
}
/// @nodoc
class __$$PaymentMethodAnalyticSummaryDtoImplCopyWithImpl<$Res>
extends
_$PaymentMethodAnalyticSummaryDtoCopyWithImpl<
$Res,
_$PaymentMethodAnalyticSummaryDtoImpl
>
implements _$$PaymentMethodAnalyticSummaryDtoImplCopyWith<$Res> {
__$$PaymentMethodAnalyticSummaryDtoImplCopyWithImpl(
_$PaymentMethodAnalyticSummaryDtoImpl _value,
$Res Function(_$PaymentMethodAnalyticSummaryDtoImpl) _then,
) : super(_value, _then);
/// Create a copy of PaymentMethodAnalyticSummaryDto
/// 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(
_$PaymentMethodAnalyticSummaryDtoImpl(
totalAmount: freezed == totalAmount
? _value.totalAmount
: totalAmount // ignore: cast_nullable_to_non_nullable
as int?,
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 _$PaymentMethodAnalyticSummaryDtoImpl
extends _PaymentMethodAnalyticSummaryDto {
const _$PaymentMethodAnalyticSummaryDtoImpl({
@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 _$PaymentMethodAnalyticSummaryDtoImpl.fromJson(
Map<String, dynamic> json,
) => _$$PaymentMethodAnalyticSummaryDtoImplFromJson(json);
@override
@JsonKey(name: "total_amount")
final int? 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 'PaymentMethodAnalyticSummaryDto(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$PaymentMethodAnalyticSummaryDtoImpl &&
(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 PaymentMethodAnalyticSummaryDto
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$PaymentMethodAnalyticSummaryDtoImplCopyWith<
_$PaymentMethodAnalyticSummaryDtoImpl
>
get copyWith =>
__$$PaymentMethodAnalyticSummaryDtoImplCopyWithImpl<
_$PaymentMethodAnalyticSummaryDtoImpl
>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$PaymentMethodAnalyticSummaryDtoImplToJson(this);
}
}
abstract class _PaymentMethodAnalyticSummaryDto
extends PaymentMethodAnalyticSummaryDto {
const factory _PaymentMethodAnalyticSummaryDto({
@JsonKey(name: "total_amount") final int? totalAmount,
@JsonKey(name: "total_orders") final int? totalOrders,
@JsonKey(name: "total_payments") final int? totalPayments,
@JsonKey(name: "average_order_value") final double? averageOrderValue,
}) = _$PaymentMethodAnalyticSummaryDtoImpl;
const _PaymentMethodAnalyticSummaryDto._() : super._();
factory _PaymentMethodAnalyticSummaryDto.fromJson(Map<String, dynamic> json) =
_$PaymentMethodAnalyticSummaryDtoImpl.fromJson;
@override
@JsonKey(name: "total_amount")
int? 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 PaymentMethodAnalyticSummaryDto
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(includeFromJson: false, includeToJson: false)
_$$PaymentMethodAnalyticSummaryDtoImplCopyWith<
_$PaymentMethodAnalyticSummaryDtoImpl
>
get copyWith => throw _privateConstructorUsedError;
}

View File

@ -269,3 +269,81 @@ Map<String, dynamic> _$$ProductAnalyticItemDtoImplToJson(
'average_price': instance.averagePrice,
'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'] == null
? null
: DateTime.parse(json['date_from'] as String),
dateTo: json['date_to'] == null
? null
: DateTime.parse(json['date_to'] as String),
groupBy: json['group_by'] as String?,
summary: json['summary'] == null
? null
: PaymentMethodAnalyticSummaryDto.fromJson(
json['summary'] as Map<String, dynamic>,
),
data: (json['data'] as List<dynamic>?)
?.map(
(e) => PaymentMethodAnalyticItemDto.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?.toIso8601String(),
'date_to': instance.dateTo?.toIso8601String(),
'group_by': instance.groupBy,
'summary': instance.summary,
'data': instance.data,
};
_$PaymentMethodAnalyticItemDtoImpl _$$PaymentMethodAnalyticItemDtoImplFromJson(
Map<String, dynamic> json,
) => _$PaymentMethodAnalyticItemDtoImpl(
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?)?.toInt(),
orderCount: (json['order_count'] as num?)?.toInt(),
paymentCount: (json['payment_count'] as num?)?.toInt(),
percentage: json['percentage'] as num?,
);
Map<String, dynamic> _$$PaymentMethodAnalyticItemDtoImplToJson(
_$PaymentMethodAnalyticItemDtoImpl 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,
};
_$PaymentMethodAnalyticSummaryDtoImpl
_$$PaymentMethodAnalyticSummaryDtoImplFromJson(Map<String, dynamic> json) =>
_$PaymentMethodAnalyticSummaryDtoImpl(
totalAmount: (json['total_amount'] as num?)?.toInt(),
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> _$$PaymentMethodAnalyticSummaryDtoImplToJson(
_$PaymentMethodAnalyticSummaryDtoImpl instance,
) => <String, dynamic>{
'total_amount': instance.totalAmount,
'total_orders': instance.totalOrders,
'total_payments': instance.totalPayments,
'average_order_value': instance.averageOrderValue,
};

View File

@ -105,4 +105,33 @@ class AnalyticRemoteDataProvider {
return DC.error(AnalyticFailure.serverError(e));
}
}
Future<DC<AnalyticFailure, PaymentMethodAnalyticDto>> fetchPaymentMethod({
required DateTime dateFrom,
required DateTime dateTo,
}) async {
try {
final response = await _apiClient.get(
ApiPath.analyticPaymentMethods,
params: {
'date_from': dateFrom.toServerDate(),
'date_to': dateTo.toServerDate(),
},
headers: getAuthorizationHeader(),
);
if (response.data['success'] == false) {
return DC.error(AnalyticFailure.unexpectedError());
}
final paymentMethods = PaymentMethodAnalyticDto.fromJson(
response.data['data'] as Map<String, dynamic>,
);
return DC.data(paymentMethods);
} on ApiFailure catch (e, s) {
log('fetchPaymentMethod', name: _logName, error: e, stackTrace: s);
return DC.error(AnalyticFailure.serverError(e));
}
}
}

View File

@ -0,0 +1,82 @@
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") DateTime? dateFrom,
@JsonKey(name: "date_to") DateTime? dateTo,
@JsonKey(name: "group_by") String? groupBy,
@JsonKey(name: "summary") PaymentMethodAnalyticSummaryDto? summary,
@JsonKey(name: "data") List<PaymentMethodAnalyticItemDto>? data,
}) = _PaymentMethodAnalyticDto;
factory PaymentMethodAnalyticDto.fromJson(Map<String, dynamic> json) =>
_$PaymentMethodAnalyticDtoFromJson(json);
// Optional mapper ke domain
PaymentMethodAnalytic toDomain() => PaymentMethodAnalytic(
organizationId: organizationId ?? '',
outletId: outletId ?? '',
dateFrom: dateFrom ?? DateTime.now(),
dateTo: dateTo ?? DateTime.now(),
groupBy: groupBy ?? '',
summary: summary?.toDomain() ?? PaymentMethodAnalyticSummary.empty(),
data: data?.map((e) => e.toDomain()).toList() ?? [],
);
}
@freezed
class PaymentMethodAnalyticItemDto with _$PaymentMethodAnalyticItemDto {
const PaymentMethodAnalyticItemDto._();
const factory PaymentMethodAnalyticItemDto({
@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") int? totalAmount,
@JsonKey(name: "order_count") int? orderCount,
@JsonKey(name: "payment_count") int? paymentCount,
@JsonKey(name: "percentage") num? percentage,
}) = _PaymentMethodAnalyticItemDto;
factory PaymentMethodAnalyticItemDto.fromJson(Map<String, dynamic> json) =>
_$PaymentMethodAnalyticItemDtoFromJson(json);
// Optional mapper ke domain
PaymentMethodAnalyticItem toDomain() => PaymentMethodAnalyticItem(
paymentMethodId: paymentMethodId ?? '',
paymentMethodName: paymentMethodName ?? '',
paymentMethodType: paymentMethodType ?? '',
totalAmount: totalAmount ?? 0,
orderCount: orderCount ?? 0,
paymentCount: paymentCount ?? 0,
percentage: percentage ?? 0,
);
}
@freezed
class PaymentMethodAnalyticSummaryDto with _$PaymentMethodAnalyticSummaryDto {
const PaymentMethodAnalyticSummaryDto._();
const factory PaymentMethodAnalyticSummaryDto({
@JsonKey(name: "total_amount") int? totalAmount,
@JsonKey(name: "total_orders") int? totalOrders,
@JsonKey(name: "total_payments") int? totalPayments,
@JsonKey(name: "average_order_value") double? averageOrderValue,
}) = _PaymentMethodAnalyticSummaryDto;
factory PaymentMethodAnalyticSummaryDto.fromJson(Map<String, dynamic> json) =>
_$PaymentMethodAnalyticSummaryDtoFromJson(json);
// Optional mapping ke domain entity
PaymentMethodAnalyticSummary toDomain() => PaymentMethodAnalyticSummary(
totalAmount: totalAmount ?? 0,
totalOrders: totalOrders ?? 0,
totalPayments: totalPayments ?? 0,
averageOrderValue: averageOrderValue ?? 0.0,
);
}

View File

@ -85,4 +85,28 @@ class AnalyticRepository implements IAnalyticRepository {
return left(const AnalyticFailure.unexpectedError());
}
}
@override
Future<Either<AnalyticFailure, PaymentMethodAnalytic>> getPaymentMethod({
required DateTime dateFrom,
required DateTime dateTo,
}) async {
try {
final result = await _dataProvider.fetchPaymentMethod(
dateFrom: dateFrom,
dateTo: dateTo,
);
if (result.hasError) {
return left(result.error!);
}
final paymentMethod = result.data!.toDomain();
return right(paymentMethod);
} catch (e) {
log('getPaymentMethodError', name: _logName, error: e);
return left(const AnalyticFailure.unexpectedError());
}
}
}

View File

@ -11,6 +11,8 @@
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:apskel_pos_flutter_v2/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart'
as _i80;
import 'package:apskel_pos_flutter_v2/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart'
as _i733;
import 'package:apskel_pos_flutter_v2/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart'
as _i268;
import 'package:apskel_pos_flutter_v2/application/analytic/sales_analytic_loader/sales_analytic_loader_bloc.dart'
@ -303,6 +305,11 @@ extension GetItInjectableX on _i174.GetIt {
gh.factory<_i268.ProductAnalyticLoaderBloc>(
() => _i268.ProductAnalyticLoaderBloc(gh<_i346.IAnalyticRepository>()),
);
gh.factory<_i733.PaymentMethodAnalyticLoaderBloc>(
() => _i733.PaymentMethodAnalyticLoaderBloc(
gh<_i346.IAnalyticRepository>(),
),
);
return this;
}
}

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../../../application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart';
import '../../../../../application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart';
import '../../../../../application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart';
import '../../../../../application/analytic/sales_analytic_loader/sales_analytic_loader_bloc.dart';
import '../../../../../application/report/report_bloc.dart';
@ -15,6 +16,7 @@ import '../../../../components/picker/date_range_picker.dart';
import '../../../../components/spaces/space.dart';
import '../../../../router/app_router.gr.dart';
import 'sections/report_dashboard_section.dart';
import 'sections/report_payment_method_section.dart';
import 'sections/report_product_section.dart';
import 'sections/report_sales_section.dart';
import 'widgets/report_menu_card.dart';
@ -151,7 +153,20 @@ class ReportPage extends StatelessWidget implements AutoRouteWrapper {
);
},
),
4 => Text(state.title),
4 =>
BlocBuilder<
PaymentMethodAnalyticLoaderBloc,
PaymentMethodAnalyticLoaderState
>(
builder: (context, paymentMethod) {
return ReportPaymentMethodSection(
menu: reportMenus[state.selectedMenu],
state: paymentMethod,
startDate: state.startDate,
endDate: state.endDate,
);
},
),
5 => Text(state.title),
6 => Text(state.title),
7 => Text(state.title),
@ -195,6 +210,13 @@ class ReportPage extends StatelessWidget implements AutoRouteWrapper {
),
);
case 4:
return context.read<PaymentMethodAnalyticLoaderBloc>().add(
PaymentMethodAnalyticLoaderEvent.fetched(
startDate: state.startDate,
endDate: state.endDate,
),
);
case 5:
case 6:
case 7:
@ -234,6 +256,15 @@ class ReportPage extends StatelessWidget implements AutoRouteWrapper {
),
),
),
BlocProvider(
create: (context) => getIt<PaymentMethodAnalyticLoaderBloc>()
..add(
PaymentMethodAnalyticLoaderEvent.fetched(
startDate: DateTime.now().subtract(const Duration(days: 30)),
endDate: DateTime.now(),
),
),
),
],
child: this,
);

View File

@ -0,0 +1,240 @@
import 'package:flutter/material.dart';
import '../../../../../../application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart';
import '../../../../../../common/data/report_menu.dart';
import '../../../../../../common/extension/extension.dart';
import '../../../../../../common/theme/theme.dart';
import '../../../../../../domain/analytic/analytic.dart';
import '../../../../../components/loader/loader_with_text.dart';
import '../../../../../components/spaces/space.dart';
import '../../../../../components/widgets/report/report_header.dart';
import '../../../../../components/widgets/report/report_summary_card.dart';
class ReportPaymentMethodSection extends StatelessWidget {
final ReportMenu menu;
final PaymentMethodAnalyticLoaderState state;
final DateTime startDate;
final DateTime endDate;
const ReportPaymentMethodSection({
super.key,
required this.menu,
required this.state,
required this.startDate,
required this.endDate,
});
@override
Widget build(BuildContext context) {
if (state.isFetching) {
return const Center(child: LoaderWithText());
}
return ListView(
padding: EdgeInsets.all(16),
children: [
ReportHeader(menu: menu, endDate: endDate, startDate: startDate),
_buildSummary(),
Container(
padding: const EdgeInsets.all(12),
margin: EdgeInsets.only(top: 16),
decoration: BoxDecoration(
color: AppColor.white,
borderRadius: BorderRadius.circular(14),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Rincian Metode Pembayaran',
style: AppStyle.lg.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.textPrimary,
),
),
SpaceHeight(16),
...List.generate(state.paymentMethodAnalytic.data.length, (
index,
) {
final item = state.paymentMethodAnalytic.data[index];
return Padding(
padding: const EdgeInsets.only(bottom: 16),
child: _buildPaymentCard(item),
);
}),
],
),
),
],
);
}
Container _buildPaymentCard(PaymentMethodAnalyticItem item) {
return Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
border: Border.all(color: AppColor.border, width: 1),
),
child: Row(
children: [
// Payment Method Icon
Container(
width: 40,
height: 40,
decoration: BoxDecoration(
color: AppColor.primary,
borderRadius: BorderRadius.circular(8),
border: Border.all(color: AppColor.primary, width: 1),
),
child: Icon(Icons.money, color: AppColor.white, size: 20),
),
SpaceWidth(16),
// Payment Method Details
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
item.paymentMethodName,
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.textPrimary,
),
),
Text(
"${item.percentage}%",
style: AppStyle.md.copyWith(
fontWeight: FontWeight.bold,
color: AppColor.primary,
),
),
],
),
SpaceHeight(8),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
item.totalAmount.currencyFormatRpV2,
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w500,
color: AppColor.textSecondary,
),
),
Text(
'${item.orderCount} Pesanan',
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w500,
color: AppColor.textSecondary,
),
),
],
),
SpaceHeight(8),
// Progress Bar
Container(
width: double.infinity,
height: 6,
decoration: BoxDecoration(
color: Colors.grey.shade200,
borderRadius: BorderRadius.circular(3),
),
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: (item.percentage / 100), // 100%
child: Container(
decoration: BoxDecoration(
color: AppColor.primary,
borderRadius: BorderRadius.circular(3),
),
),
),
),
],
),
),
],
),
);
}
Padding _buildSummary() {
return Padding(
padding: const EdgeInsets.only(top: 16),
child: Column(
children: [
Row(
children: [
Expanded(
child: ReportSummaryCard(
color: AppColor.success,
icon: Icons.trending_up,
title: "Pendapatan Total",
value: state
.paymentMethodAnalytic
.summary
.totalAmount
.currencyFormatRpV2,
),
),
SpaceWidth(12),
Expanded(
child: ReportSummaryCard(
color: AppColor.info,
icon: Icons.shopping_cart_outlined,
title: 'Jumlah Pesanan',
value: state
.paymentMethodAnalytic
.summary
.totalOrders
.currencyFormatRpV2,
),
),
],
),
SpaceHeight(12),
Row(
children: [
Expanded(
child: ReportSummaryCard(
color: AppColor.success,
icon: Icons.attach_money_outlined,
title: "Nilai Rata Rata",
value: state
.paymentMethodAnalytic
.summary
.averageOrderValue
.currencyFormatRpV2,
),
),
SpaceWidth(12),
Expanded(
child: ReportSummaryCard(
color: AppColor.info,
icon: Icons.wallet_outlined,
title: 'Jumlah Pembayaran',
value: state
.paymentMethodAnalytic
.summary
.totalPayments
.currencyFormatRpV2,
),
),
],
),
],
),
);
}
}