Aidra Driver 1.3.5+68
Aidra Driver - Your path to green energy
Loading...
Searching...
No Matches
service_locator.dart
Go to the documentation of this file.
1import 'package:get_it/get_it.dart';
2import 'package:shared_preferences/shared_preferences.dart';
3
4import '../../features/auth/data/datasources/local_datasource/credentials_local_datasource.dart';
5import '../../features/auth/data/datasources/local_datasource/session_local_datasource.dart';
6import '../../features/auth/data/datasources/local_datasource/token_local_datasource.dart';
7import '../../features/auth/data/datasources/remote_datasource/authentication_remote_datasource.dart';
8import '../../features/auth/data/datasources/remote_datasource/check_in_out_remote_datasource.dart';
9import '../../features/auth/data/repository_impl/authentication_repository_impl.dart';
10import '../../features/auth/domain/repository/authentication_repository.dart';
11import '../../features/auth/domain/use_cases/check_biometric_auth_availability_usecase.dart';
12import '../../features/auth/domain/use_cases/fast_sign_in_usecase.dart';
13import '../../features/auth/domain/use_cases/get_available_vehicles_usecase.dart';
14import '../../features/auth/domain/use_cases/load_credentials_usecase.dart';
15import '../../features/auth/domain/use_cases/load_session_usecase.dart';
16import '../../features/auth/domain/use_cases/send_vehicle_check_usecase.dart';
17import '../../features/auth/domain/use_cases/signin_usecases.dart';
18import '../../features/auth/domain/use_cases/signout_usecase.dart';
19import '../../features/auth/presentation/bloc/authentication_bloc/authentication_bloc.dart';
20import '../../features/collections/data/datasources/collection_local_datasource.dart';
21import '../../features/collections/data/datasources/collection_remote_datasource.dart';
22import '../../features/collections/data/datasources/planning_remote_datasource.dart';
23import '../../features/collections/data/repositories/collection_repository_impl.dart';
24import '../../features/collections/data/repositories/planning_repository_impl.dart';
25import '../../features/collections/domain/repositories/collection_repository.dart';
26import '../../features/collections/domain/repositories/planning_repository.dart';
27import '../../features/collections/domain/usecases/get_cancellation_reason_usecase.dart';
28import '../../features/collections/domain/usecases/get_collection_contact_list_usecase.dart';
29import '../../features/collections/domain/usecases/get_collection_rating_reasons_usecase.dart';
30import '../../features/collections/domain/usecases/get_collections_usecase.dart';
31import '../../features/collections/domain/usecases/get_partner_payment_methods_list_usecase.dart';
32import '../../features/collections/domain/usecases/get_weekly_collections_usecase.dart';
33import '../../features/collections/domain/usecases/create_routing_usecase.dart';
34import '../../features/collections/domain/usecases/validate_scheduler_usecase.dart';
35import '../../features/collections/domain/usecases/create_driver_collection_usecase.dart';
36import '../../features/collections/domain/usecases/get_collections_to_schedule_usecase.dart';
37import '../../features/home/data/datasources/home_remote_datasource.dart';
38import '../../features/home/data/repositories/home_repository_impl.dart';
39import '../../features/home/domain/repositories/home_repository.dart';
40import '../../features/home/domain/usecases/get_schedule_status_usecase.dart';
41import '../../features/collections/presentation/bloc/weekly_collections_bloc/weekly_collections_bloc.dart';
42import '../../features/collections/presentation/bloc/collections_to_schedule_bloc/collections_to_schedule_bloc.dart';
43import '../../features/collections/domain/usecases/send_collection_confirmation_usecase.dart';
44import '../../features/collections/domain/usecases/send_collection_information_usecase.dart';
45import '../../features/collections/domain/usecases/send_collection_payment_usecase.dart';
46import '../../features/collections/domain/usecases/send_collection_rating_usecase.dart';
47import '../../features/collections/domain/usecases/update_collection_status_usecase.dart';
48import '../../features/collections/domain/usecases/validate_collection_usecase.dart';
49import '../../features/dashboard/data/datasources/dashboard_remote_datasource.dart';
50import '../../features/dashboard/data/repositories/dashboard_repository_impl.dart';
51import '../../features/dashboard/domain/repositories/dashboard_repository.dart';
52import '../../features/dashboard/domain/usecases/get_collection_statistics_usecase.dart';
53import '../../features/e-learning/data/data_sources/elearning_v2_local_data_source.dart';
54import '../../features/e-learning/data/data_sources/elearning_v2_local_data_source_impl.dart';
55import '../../features/e-learning/data/repository_impl/elearning_v2_repository_impl.dart';
56import '../../features/e-learning/domain/repository/elearning_v2_repository.dart';
57import '../../features/e-learning/presentation/logic/cubit/elearning_v2_cubit.dart';
58import '../../features/history/data/datasources/history_local_datasource.dart';
59import '../../features/history/data/datasources/history_remote_datasource.dart';
60import '../../features/history/data/repositories/history_repository_impl.dart';
61import '../../features/history/domain/repositories/history_repository.dart';
62import '../../features/history/domain/usecases/get_history_collections_usecase.dart';
63import '../../features/history/domain/usecases/get_pending_collections_usecase.dart';
64import '../../features/notifications/data/datasources/notifications_remote_datasource.dart';
65import '../../features/notifications/data/repositories/notifications_repository_impl.dart';
66import '../../features/notifications/domain/repositories/notifications_repository.dart';
67import '../../features/notifications/domain/usecases/get_notifications_usecase.dart';
68import '../../features/unloading/data/datasources/unloading_remote_datasource.dart';
69import '../../features/unloading/data/repositories/unloading_repository_impl.dart';
70import '../../features/unloading/domain/repositories/unloading_repository.dart';
71import '../../features/unloading/domain/usecases/get_history_unloading_usecase.dart';
72import '../../features/unloading/domain/usecases/get_pending_unloading_collections_usecase.dart';
73import '../../features/unloading/domain/usecases/get_warehouse_responsible_list_usecase.dart';
74import '../../features/unloading/domain/usecases/send_unloading_usecase.dart';
75import '../api/api_client.dart';
76
77final sl = GetIt.instance;
78
79Future<void> init() async {
80
81 // API DI
82 sl.registerLazySingleton<ApiClient>(() => ApiClient());
83
84 // AUTHENTICATION DI
86 sl.registerLazySingleton<CredentialsLocalDataSource>(() => CredentialsLocalDataSource());
87 sl.registerLazySingleton<SessionLocalDataSource>(() => SessionLocalDataSource());
88 sl.registerLazySingleton<TokenLocalDataSource>(() => TokenLocalDataSource());
89 sl.registerLazySingleton<AuthenticationRepository>(() => AuthenticationReposiptyImpl());
90 sl.registerLazySingleton<SignInUseCase>(() => SignInUseCase());
91 sl.registerLazySingleton<SignOutUseCase>(() => SignOutUseCase());
92 sl.registerLazySingleton<LoadCredentialsUseCase>(() => LoadCredentialsUseCase());
93 sl.registerLazySingleton<LoadSessionUseCase>(() => LoadSessionUseCase());
94 sl.registerLazySingleton<FastSignInUseCase>(() => FastSignInUseCase());
95 sl.registerLazySingleton<CheckBiometricAuthAvailabilityUseCase>(() => CheckBiometricAuthAvailabilityUseCase());
96 sl.registerLazySingleton<AuthenticationBloc>(() => AuthenticationBloc());
97
98 // COLLECTIONS DI
99 sl.registerLazySingleton<CollectionsRemoteDataSource>(() => CollectionsRemoteDataSource());
100 sl.registerLazySingleton<CollectionLocalDatasource>(() => CollectionLocalDatasource());
101 sl.registerLazySingleton<CollectionsRepository>(
102 () => CollectionsRepositoryImpl(
103 remoteDataSource: sl(),
104 localDatasource: sl(),
105 ),
106 );
107
108 // PLANNING DI
109 sl.registerLazySingleton<PlanningRemoteDataSource>(() => PlanningRemoteDataSource());
110 sl.registerLazySingleton<PlanningRepository>(() => PlanningRepositoryImpl(remoteDataSource: sl()));
111 sl.registerLazySingleton(() => GetCollectionsUseCase(repository: sl()));
112 sl.registerLazySingleton(() => UpdateCollectionStatusUsecase(repository: sl()));
113 sl.registerLazySingleton<HistoryRemoteDatasource>(() => HistoryRemoteDatasource());
114 sl.registerLazySingleton<HistoryLocalDatasource>(() => HistoryLocalDatasource());
115 sl.registerLazySingleton<HistoryRepository>(() => HistoryRepositoryImpl(
116 remoteDataSource: sl(),
117 localDataSource: sl(),
118 ));
119 sl.registerLazySingleton(() => GetPendingCollectionsUsecase(repository: sl()));
120 sl.registerLazySingleton(() => GetHistoryCollectionsUsecase(repository: sl()));
121 sl.registerLazySingleton(() => GetCancellationReasonsUseCase(repository: sl()));
122 sl.registerLazySingleton(() => SendCollectionInformationUsecase(repository: sl()));
123 sl.registerLazySingleton(() => ValidateCollectionUsecase(repository: sl()));
124 sl.registerLazySingleton(() => SendCollectionConfirmationUsecase(repository: sl()));
125 sl.registerLazySingleton(() => SendCollectionPaymentUsecase(repository: sl()));
126 sl.registerLazySingleton(() => GetCollectionContactListUseCase(repository: sl()));
127 sl.registerLazySingleton(() => GetCollectionRatingReasonsUseCase(repository: sl()));
128 sl.registerLazySingleton(() => GetPartnerPaymentMethodsListUsecase(repository: sl()));
129 sl.registerLazySingleton(()=> SendCollectionRatingUsecase(repository: sl()));
130 sl.registerLazySingleton(() => GetWeeklyCollectionsUseCase(repository: sl()));
131 sl.registerLazySingleton(() => CreateRoutingUseCase(repository: sl()));
132 sl.registerLazySingleton(() => ValidateSchedulerUseCase(repository: sl()));
133 sl.registerLazySingleton(() => CreateDriverCollectionUseCase(repository: sl()));
134 sl.registerLazySingleton(() => GetCollectionsToScheduleUseCase(repository: sl()));
135 sl.registerLazySingleton(() => GetScheduleStatusUseCase(repository: sl()));
136 sl.registerLazySingleton<HomeRepository>(() => HomeRepositoryImpl(repository: sl()));
137 sl.registerLazySingleton<HomeRemoteDatasource>(() => HomeRemoteDatasource());
138
139 // WEEKLY COLLECTIONS BLOC
140 sl.registerFactory(() => WeeklyCollectionsBloc());
141
142 // COLLECTIONS TO SCHEDULE BLOC
143 sl.registerFactory(() => CollectionsToScheduleBloc());
144
145 // NOTIFICATIONS DI
146 sl.registerLazySingleton<NotificationsRemoteDatasource>(() => NotificationsRemoteDatasource());
147 sl.registerLazySingleton<NotificationsRepository>(() => NotificationsRepositoryImpl(remoteDataSource: sl()));
148 sl.registerLazySingleton(() => GetNotificationsUseCase(repository: sl()));
149
150 // DASHBOARD DI
151 sl.registerLazySingleton<DashboardRemoteDataSource>(() => DashboardRemoteDataSource());
152 sl.registerLazySingleton<DashboardRepository>(()=> DashboardRepositoryImpl(remoteDataSource: sl()));
154
155 // Unloading DI
156 sl.registerLazySingleton<UnloadingRemoteDatasource>(()=> UnloadingRemoteDatasource());
157 sl.registerLazySingleton<UnloadingRepository>(()=> UnloadingRepositoryImpl(remoteDataSource: sl()));
161 sl.registerLazySingleton<SendUnloadingUsecase>(()=> SendUnloadingUsecase(repository: sl()));
162
163 // Check in / out DI
164 sl.registerLazySingleton<CheckInOutRemoteDatasource>(()=> CheckInOutRemoteDatasource());
165 sl.registerLazySingleton<GetAvailableVehiclesUsecase>(()=> GetAvailableVehiclesUsecase());
166 sl.registerLazySingleton<SendVehicleCheckUsecase>(()=> SendVehicleCheckUsecase());
167
168 //ELARNING V2
169 final sharedPreferences = await SharedPreferences.getInstance();
170 sl.registerLazySingleton<SharedPreferences>(() => sharedPreferences);
171
172 sl.registerLazySingleton<ElearningV2LocalDataSource>(
173 () => ElearningV2LocalDataSourceImpl(sharedPreferences: sl()),
174 );
175 sl.registerLazySingleton<ElearningV2Repository>(
176 () => ElearningV2RepositoryImpl(localDataSource: sl()),
177 );
178 sl.registerLazySingleton<ElearningV2Cubit>(
179 () => ElearningV2Cubit(sl()),
180 );
181
182}
GetCollectionContactListUseCase({required this.repository})
class GetCollectionContactListParams repository
GetCollectionStatisticsUseCase(this.repository)
GetCollectionsUseCase({required this.repository})
GetHistoryCollectionsUsecase({required this.repository})
GetNotificationsUseCase({required this.repository})
GetPartnerPaymentMethodsListUsecase({required this.repository})
GetPendingCollectionsUsecase({required this.repository})
GetScheduleStatusUseCase({required this.repository})
GetWeeklyCollectionsUseCase({required this.repository})
SendCollectionConfirmationUsecase({required this.repository})
SendCollectionInformationUsecase({required this.repository})
SendCollectionPaymentUsecase({required this.repository})
SendCollectionRatingUsecase({required this.repository})
SendUnloadingUsecase({required this.repository})
Future< void > init() async
final sl
UpdateCollectionStatusUsecase({required this.repository})
ValidateCollectionUsecase({required this.repository})
ValidateSchedulerUseCase({required this.repository})