feat: Dashboard Analytic

This commit is contained in:
efrilm
2025-08-06 13:05:58 +07:00
parent 91335ad8db
commit bdb2c0ba52
11 changed files with 998 additions and 67 deletions
@@ -1,6 +1,6 @@
import 'package:enaklo_pos/data/datasources/analytic_remote_datasource.dart';
import 'package:enaklo_pos/data/models/response/dashboard_analytic_response_model.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:enaklo_pos/data/datasources/order_remote_datasource.dart';
import 'package:enaklo_pos/data/models/response/summary_response_model.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'summary_event.dart';
@@ -8,15 +8,17 @@ part 'summary_state.dart';
part 'summary_bloc.freezed.dart';
class SummaryBloc extends Bloc<SummaryEvent, SummaryState> {
final OrderRemoteDatasource datasource;
final AnalyticRemoteDatasource datasource;
SummaryBloc(
this.datasource,
) : super(const _Initial()) {
on<_GetSummary>((event, emit) async {
emit(const _Loading());
final result = await datasource.getSummaryByRangeDate(
event.startDate, event.endDate);
result.fold((l) => emit(_Error(l)), (r) => emit(_Success(r.data!)));
final result = await datasource.getDashboard(
dateFrom: event.startDate,
dateTo: event.endDate,
);
result.fold((l) => emit(_Error(l)), (r) => emit(_Success(r.data)));
});
}
}
@@ -19,19 +19,19 @@ mixin _$SummaryEvent {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() started,
required TResult Function(String startDate, String endDate) getSummary,
required TResult Function(DateTime startDate, DateTime endDate) getSummary,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? started,
TResult? Function(String startDate, String endDate)? getSummary,
TResult? Function(DateTime startDate, DateTime endDate)? getSummary,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? started,
TResult Function(String startDate, String endDate)? getSummary,
TResult Function(DateTime startDate, DateTime endDate)? getSummary,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@@ -119,7 +119,7 @@ class _$StartedImpl implements _Started {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() started,
required TResult Function(String startDate, String endDate) getSummary,
required TResult Function(DateTime startDate, DateTime endDate) getSummary,
}) {
return started();
}
@@ -128,7 +128,7 @@ class _$StartedImpl implements _Started {
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? started,
TResult? Function(String startDate, String endDate)? getSummary,
TResult? Function(DateTime startDate, DateTime endDate)? getSummary,
}) {
return started?.call();
}
@@ -137,7 +137,7 @@ class _$StartedImpl implements _Started {
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? started,
TResult Function(String startDate, String endDate)? getSummary,
TResult Function(DateTime startDate, DateTime endDate)? getSummary,
required TResult orElse(),
}) {
if (started != null) {
@@ -188,7 +188,7 @@ abstract class _$$GetSummaryImplCopyWith<$Res> {
_$GetSummaryImpl value, $Res Function(_$GetSummaryImpl) then) =
__$$GetSummaryImplCopyWithImpl<$Res>;
@useResult
$Res call({String startDate, String endDate});
$Res call({DateTime startDate, DateTime endDate});
}
/// @nodoc
@@ -211,11 +211,11 @@ class __$$GetSummaryImplCopyWithImpl<$Res>
null == startDate
? _value.startDate
: startDate // ignore: cast_nullable_to_non_nullable
as String,
as DateTime,
null == endDate
? _value.endDate
: endDate // ignore: cast_nullable_to_non_nullable
as String,
as DateTime,
));
}
}
@@ -226,9 +226,9 @@ class _$GetSummaryImpl implements _GetSummary {
const _$GetSummaryImpl(this.startDate, this.endDate);
@override
final String startDate;
final DateTime startDate;
@override
final String endDate;
final DateTime endDate;
@override
String toString() {
@@ -260,7 +260,7 @@ class _$GetSummaryImpl implements _GetSummary {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() started,
required TResult Function(String startDate, String endDate) getSummary,
required TResult Function(DateTime startDate, DateTime endDate) getSummary,
}) {
return getSummary(startDate, endDate);
}
@@ -269,7 +269,7 @@ class _$GetSummaryImpl implements _GetSummary {
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? started,
TResult? Function(String startDate, String endDate)? getSummary,
TResult? Function(DateTime startDate, DateTime endDate)? getSummary,
}) {
return getSummary?.call(startDate, endDate);
}
@@ -278,7 +278,7 @@ class _$GetSummaryImpl implements _GetSummary {
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? started,
TResult Function(String startDate, String endDate)? getSummary,
TResult Function(DateTime startDate, DateTime endDate)? getSummary,
required TResult orElse(),
}) {
if (getSummary != null) {
@@ -320,11 +320,11 @@ class _$GetSummaryImpl implements _GetSummary {
}
abstract class _GetSummary implements SummaryEvent {
const factory _GetSummary(final String startDate, final String endDate) =
const factory _GetSummary(final DateTime startDate, final DateTime endDate) =
_$GetSummaryImpl;
String get startDate;
String get endDate;
DateTime get startDate;
DateTime get endDate;
/// Create a copy of SummaryEvent
/// with the given fields replaced by the non-null parameter values.
@@ -339,7 +339,7 @@ mixin _$SummaryState {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(SummaryModel summary) success,
required TResult Function(DashboardAnalyticData data) success,
required TResult Function(String message) error,
}) =>
throw _privateConstructorUsedError;
@@ -347,7 +347,7 @@ mixin _$SummaryState {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(SummaryModel summary)? success,
TResult? Function(DashboardAnalyticData data)? success,
TResult? Function(String message)? error,
}) =>
throw _privateConstructorUsedError;
@@ -355,7 +355,7 @@ mixin _$SummaryState {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(SummaryModel summary)? success,
TResult Function(DashboardAnalyticData data)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) =>
@@ -451,7 +451,7 @@ class _$InitialImpl implements _Initial {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(SummaryModel summary) success,
required TResult Function(DashboardAnalyticData data) success,
required TResult Function(String message) error,
}) {
return initial();
@@ -462,7 +462,7 @@ class _$InitialImpl implements _Initial {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(SummaryModel summary)? success,
TResult? Function(DashboardAnalyticData data)? success,
TResult? Function(String message)? error,
}) {
return initial?.call();
@@ -473,7 +473,7 @@ class _$InitialImpl implements _Initial {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(SummaryModel summary)? success,
TResult Function(DashboardAnalyticData data)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -568,7 +568,7 @@ class _$LoadingImpl implements _Loading {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(SummaryModel summary) success,
required TResult Function(DashboardAnalyticData data) success,
required TResult Function(String message) error,
}) {
return loading();
@@ -579,7 +579,7 @@ class _$LoadingImpl implements _Loading {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(SummaryModel summary)? success,
TResult? Function(DashboardAnalyticData data)? success,
TResult? Function(String message)? error,
}) {
return loading?.call();
@@ -590,7 +590,7 @@ class _$LoadingImpl implements _Loading {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(SummaryModel summary)? success,
TResult Function(DashboardAnalyticData data)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -648,7 +648,7 @@ abstract class _$$SuccessImplCopyWith<$Res> {
_$SuccessImpl value, $Res Function(_$SuccessImpl) then) =
__$$SuccessImplCopyWithImpl<$Res>;
@useResult
$Res call({SummaryModel summary});
$Res call({DashboardAnalyticData data});
}
/// @nodoc
@@ -664,13 +664,13 @@ class __$$SuccessImplCopyWithImpl<$Res>
@pragma('vm:prefer-inline')
@override
$Res call({
Object? summary = null,
Object? data = null,
}) {
return _then(_$SuccessImpl(
null == summary
? _value.summary
: summary // ignore: cast_nullable_to_non_nullable
as SummaryModel,
null == data
? _value.data
: data // ignore: cast_nullable_to_non_nullable
as DashboardAnalyticData,
));
}
}
@@ -678,14 +678,14 @@ class __$$SuccessImplCopyWithImpl<$Res>
/// @nodoc
class _$SuccessImpl implements _Success {
const _$SuccessImpl(this.summary);
const _$SuccessImpl(this.data);
@override
final SummaryModel summary;
final DashboardAnalyticData data;
@override
String toString() {
return 'SummaryState.success(summary: $summary)';
return 'SummaryState.success(data: $data)';
}
@override
@@ -693,11 +693,11 @@ class _$SuccessImpl implements _Success {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SuccessImpl &&
(identical(other.summary, summary) || other.summary == summary));
(identical(other.data, data) || other.data == data));
}
@override
int get hashCode => Object.hash(runtimeType, summary);
int get hashCode => Object.hash(runtimeType, data);
/// Create a copy of SummaryState
/// with the given fields replaced by the non-null parameter values.
@@ -712,10 +712,10 @@ class _$SuccessImpl implements _Success {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(SummaryModel summary) success,
required TResult Function(DashboardAnalyticData data) success,
required TResult Function(String message) error,
}) {
return success(summary);
return success(data);
}
@override
@@ -723,10 +723,10 @@ class _$SuccessImpl implements _Success {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(SummaryModel summary)? success,
TResult? Function(DashboardAnalyticData data)? success,
TResult? Function(String message)? error,
}) {
return success?.call(summary);
return success?.call(data);
}
@override
@@ -734,12 +734,12 @@ class _$SuccessImpl implements _Success {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(SummaryModel summary)? success,
TResult Function(DashboardAnalyticData data)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
if (success != null) {
return success(summary);
return success(data);
}
return orElse();
}
@@ -783,9 +783,9 @@ class _$SuccessImpl implements _Success {
}
abstract class _Success implements SummaryState {
const factory _Success(final SummaryModel summary) = _$SuccessImpl;
const factory _Success(final DashboardAnalyticData data) = _$SuccessImpl;
SummaryModel get summary;
DashboardAnalyticData get data;
/// Create a copy of SummaryState
/// with the given fields replaced by the non-null parameter values.
@@ -864,7 +864,7 @@ class _$ErrorImpl implements _Error {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(SummaryModel summary) success,
required TResult Function(DashboardAnalyticData data) success,
required TResult Function(String message) error,
}) {
return error(message);
@@ -875,7 +875,7 @@ class _$ErrorImpl implements _Error {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(SummaryModel summary)? success,
TResult? Function(DashboardAnalyticData data)? success,
TResult? Function(String message)? error,
}) {
return error?.call(message);
@@ -886,7 +886,7 @@ class _$ErrorImpl implements _Error {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(SummaryModel summary)? success,
TResult Function(DashboardAnalyticData data)? success,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -3,6 +3,6 @@ part of 'summary_bloc.dart';
@freezed
class SummaryEvent with _$SummaryEvent {
const factory SummaryEvent.started() = _Started;
const factory SummaryEvent.getSummary(String startDate, String endDate) =
const factory SummaryEvent.getSummary(DateTime startDate, DateTime endDate) =
_GetSummary;
}
@@ -4,6 +4,6 @@ part of 'summary_bloc.dart';
class SummaryState with _$SummaryState {
const factory SummaryState.initial() = _Initial;
const factory SummaryState.loading() = _Loading;
const factory SummaryState.success(SummaryModel summary) = _Success;
const factory SummaryState.success(DashboardAnalyticData data) = _Success;
const factory SummaryState.error(String message) = _Error;
}