Aidra Driver 1.3.5+68
Aidra Driver - Your path to green energy
Loading...
Searching...
No Matches
collections_bloc.dart
Go to the documentation of this file.
1import 'package:bloc/bloc.dart';
2import 'package:equatable/equatable.dart';
3import '../../../../../core/common/enums/collection_status.dart';
4import '../../../../../core/common/use_case/use_case.dart';
5import '../../../../../core/error/failures.dart';
6import '../../../../../core/services/service_locator.dart';
7import '../../../../../core/ui/theme/color_palette.dart';
8import '../../../../../core/common/entities/collection_entity.dart';
9import '../../../domain/entities/res/res_cancellation_reason_entity.dart';
10import '../../../domain/entities/res/res_collection_status_entity.dart';
11import '../../../domain/usecases/get_cancellation_reason_usecase.dart';
12import '../../../domain/usecases/get_collections_usecase.dart';
13import '../../../domain/usecases/update_collection_status_usecase.dart';
14import '../../../domain/usecases/validate_collection_usecase.dart';
15
16part 'collections_event.dart';
17part 'collections_state.dart';
18
19class CollectionsBloc extends Bloc<CollectionsEvent, CollectionsState> {
21 final GetCancellationReasonsUseCase getCancelationReasonsUseCase = sl<GetCancellationReasonsUseCase>();
24
25 CollectionsBloc() : super(CollectionsInitial()) {
26 on<LoadCollectionsEvent>(_onLoadCollections);
27 on<UpdateCollectionStatusEvent>(_onUpdateCollectionStatus);
28 on<LoadCancellationReasonsEvent>(_onLoadCancellationReasons);
29 on<ValidateCollectionEvent>(_onValidateCollection);
30 }
31
32 Future<void> _onLoadCollections(
34 Emitter<CollectionsState> emit,
35 ) async {
36 emit(CollectionsLoading());
37
38 final result = await getCollectionsUseCase(
39 GetCollectionsParams(
40 userId: event.userId,
41 notForToday: event.notForToday,
42 type: event.type,
43 ),
44 );
45
46 result.fold(
47 (failure) => emit(CollectionsError(failure: failure)),
48 (collections) => emit(
51 (a, b) => (a.order ?? 0).compareTo(b.order ?? 0),
52 ),
53 ),
54 ),
55 );
56 }
57
59 UpdateCollectionStatusEvent event,
60 Emitter<CollectionsState> emit,
61 ) async {
62 emit(CollectionsLoading());
63 final result = await updateCollectionStatusUsecase(
64 UpdateCollectionStatusParams(
65 collectionId: event.collectionId,
66 status: event.status,
67 cancellationReasonId: event.cancellationReasonId,
68 reference: event.reference,
69 ),
70 );
71
72 result.fold(
73 (failure) => emit(CollectionStatusUpdateError(failure: failure)),
74 (success) {
76 if (event.userId != null) {
77 add(
79 userId: event.userId!,
80 notForToday: false,
81 type: "todo",
82 ),
83 );
84 } else {
85 emit(const CollectionStatusUpdateError(
87 message: "Error, action not complited",
89 ),
90 ));
91 }
92 },
93 );
94 }
95
97 LoadCancellationReasonsEvent event,
98 Emitter<CollectionsState> emit,
99 ) async {
100 emit(CancellationReasonsLoading());
101 final result = await getCancelationReasonsUseCase(NoParams());
102 result.fold(
103 (failure) => emit(CancellationReasonsError(failure: failure)),
105 );
106 }
107
110 Emitter<CollectionsState> emit,
111 ) async {
112 emit(CollectionValidationLoading());
113 final result = await validateCollectionUseCase(
115 collectionId: event.collectionId,
116 userId: event.userId,
117 ),
118 );
119
120 result.fold(
121 (failure) => emit(CollectionValidationError(failure: failure)),
122 (success) => emit(CollectionValidationSuccess(isValid: success)),
123 );
124 }
125}
sealed class AuthenticationState extends Equatable failure
sealed class CheckInOutEvent extends Equatable userId
final GetCollectionsUseCase getCollectionsUseCase
final ValidateCollectionUsecase validateCollectionUseCase
Future< void > _onLoadCancellationReasons(LoadCancellationReasonsEvent event, Emitter< CollectionsState > emit,) async
final GetCancellationReasonsUseCase getCancelationReasonsUseCase
Future< void > _onValidateCollection(ValidateCollectionEvent event, Emitter< CollectionsState > emit,) async
final UpdateCollectionStatusUsecase updateCollectionStatusUsecase
Future< void > _onLoadCollections(LoadCollectionsEvent event, Emitter< CollectionsState > emit,) async
Future< void > _onUpdateCollectionStatus(UpdateCollectionStatusEvent event, Emitter< CollectionsState > emit,) async
static const red
class UpdateCollectionStatusEvent extends CollectionsEvent collectionId
const LoadCollectionsEvent({ required this.userId, required this.notForToday, required this.type, })
final String type
final bool notForToday
const ValidateCollectionEvent({ required this.collectionId, required this.userId })
class CollectionStatusUpdateError extends CollectionsState reasons
class CancellationReasonsError extends CollectionsState isValid
const CollectionsLoaded({required this.collections})
sealed class CollectionsState extends Equatable collections
const CancellationReasonsLoaded({required this.reasons})
const CollectionStatusUpdateSuccess({required this.resCollectionStatusEntity})
class CollectionsError extends CollectionsState resCollectionStatusEntity
const CollectionValidationSuccess({required this.isValid})
final Color color
Definition failures.dart:1
class BiometricFailure extends Failure UnknownFailure({ required super.message, required super.color, })
final String message
Definition failures.dart:0
GetCollectionsUseCase({required this.repository})
final sl
UpdateCollectionStatusUsecase({required this.repository})
ValidateCollectionUsecase({required this.repository})