Aidra Driver 1.3.5+68
Aidra Driver - Your path to green energy
Loading...
Searching...
No Matches
collection_local_datasource.dart
Go to the documentation of this file.
1// import '../../../../core/common/models/collection_model.dart';
2import '../../../../core/common/enums/collection_status.dart';
3import '../../../../core/common/models/collection_model.dart';
4import '../../../../core/isar/isar_local_database.dart';
5import '../../../../core/isar/models/collections/cancellation_reason_isar_model.dart';
6import '../../../../core/isar/models/collections/collection_rating_reason_isar_model.dart';
7import '../../../../core/isar/models/collections/completed_collection_isar_model.dart';
8import '../../../../core/isar/models/collections/pending_collection_operation_isar_model.dart';
9import '../../../../core/isar/models/collections/restaurant_collection_contacts_isar_model.dart';
10import '../../../../core/isar/models/collections/restaurant_partner_payments_isar_model.dart';
11import '../../../../core/isar/models/collections/todo_collection_isar_model.dart';
12import '../../../../core/services/offline_sync_service.dart';
13import '../../domain/entities/req/req_collection_confirmation_entity.dart';
14import '../../domain/entities/req/req_collection_validation_entity.dart';
15import '../models/req/req_collection_confirmation_model.dart';
16import '../models/req/req_collection_information_model.dart';
17import '../models/req/req_collection_payment_model.dart';
18import '../models/req/req_collection_rating_model.dart';
19import '../models/req/req_collection_status_model.dart';
20import '../models/res/res_cancelation_reason_model.dart';
21import '../models/res/res_collection_confirmation_model.dart';
22import '../models/res/res_collection_contact_model.dart';
23import '../models/res/res_collection_information_model.dart';
24import '../models/res/res_collection_rating_reason_model.dart';
25import '../models/res/res_collection_status_model.dart';
26import '../models/res/res_partner_payment_model.dart';
27
31
32 Future<ResCollectionStatusModel> updateCollectionStatus({
33 required int collectionId,
34 required String status,
35 required String reference,
36 String? cancelationReasonId
37 }) async {
38 try {
39 await offlineSyncService.addPendingOperation(
41 data: ReqCollectionStatusModel(
42 id: collectionId.toString(),
43 status: collectionStatusFromJson(status),
44 cancellationReason: cancelationReasonId != null
45 ? ResCancelationReasonModel(
46 id: int.tryParse(cancelationReasonId),
47 )
48 : null
49 ).toJson(),
50 operationOrder: 0,
51 step: CollectionStep.statusUpdate,
52 );
53
54 if (cancelationReasonId != null && status == CollectionStatus.cancelled.value){
55 final todoCollection = await localDatabase.get<TodoCollectionIsarModel>(collectionId);
56 if (todoCollection != null){
57 todoCollection.status = CollectionStatus.cancelled.value;
58 await localDatabase.put<CompletedCollectionIsarModel>(todoCollection.toCompletedIsarModel());
60 }
61 } else {
62 final todoCollection = await localDatabase.get<TodoCollectionIsarModel>(collectionId);
63 if (todoCollection != null){
64 todoCollection.status = status;
65 await localDatabase.put<TodoCollectionIsarModel>(todoCollection);
66 }
67 }
68
69 return ResCollectionStatusModel(
70 id: collectionId,
72 status: collectionStatusFromJson(status),
73 cancelationReason: null,
74 );
75 } catch (e) {
76 rethrow;
77 }
78 }
79
80 Future<void> validateCollection({
82 }) async {
83 await offlineSyncService.addPendingOperation(
84 collectionId: int.tryParse(validateCollection.id ?? '') ?? 0,
85 step: CollectionStep.validation,
86 data: validateCollection.toJson(),
87 operationOrder: 1,
88 );
89 }
90
91 Future<ResCollectionInformationModel> sendCollectionInformation({
92 required ReqCollectionInformationModel model,
93 required String reference,
94 required String address,
95 required String restaurant,
96 required int restaurantId,
97 }) async {
98 try {
99 await offlineSyncService.addPendingOperation(
100 collectionId: int.tryParse(model.id) ?? 0,
101 step: CollectionStep.information,
102 data: ReqCollectionInformationModel(
103 id: model.id,
104 collectionRequest: model.collectionRequest,
105 depositedDrum: model.depositedDrum,
106 recoveredDrum: model.recoveredDrum,
107 userId: model.userId,
108 volumeCollected: model.volumeCollected,
109 volumeDeclared: model.volumeDeclared,
110 ).toJson(),
111 operationOrder: 2,
112 );
113
114 return ResCollectionInformationModel(
115 id: int.tryParse(model.id) ?? 0,
117 depositedDrum: model.depositedDrum,
118 recoveredDrum: model.recoveredDrum,
121 volume: double.tryParse(model.volumeDeclared) ?? 0.0,
122 volumeCollected: double.tryParse(model.volumeCollected) ?? 0.0,
124 );
125 } catch (e) {
126 rethrow;
127 }
128 }
129
130 Future<ResCollectionConfirmationModel> sendCollectionConfirmation({
132 required String address,
133 required String reference,
134 required String restaurant,
135 required int? restaurantId,
136 required double volumeCollected,
137 required double volumeDeclared
138 }) async {
139 try {
140 await offlineSyncService.addPendingOperation(
141 collectionId: int.tryParse(confirmation.id) ?? 0,
142 step: CollectionStep.confirmation,
143 data: ReqCollectionConfirmationModel(
144 id: confirmation.id,
145 containerImage: confirmation.containerImage,
146 invoiceDateDue: confirmation.invoiceDateDue,
147 userId: confirmation.userId,
148 voucherImage: confirmation.voucherImage,
149 ).toJson(),
150 operationOrder: 3,
151 );
152
153 return ResCollectionConfirmationModel(
154 id: int.tryParse(confirmation.id) ?? 0,
161 );
162 } catch (e) {
163 rethrow;
164 }
165 }
166
167 Future<List<ResCancelationReasonModel>> getCollectionCancelationReasons() async {
168 final result = await localDatabase.getAll<CancellationReasonIsarModel>();
169 final cancelationReasons = result.map((e) => e.toModel()).toList();
170 return cancelationReasons;
171 }
172
173 Future<List<CollectionModel>> getCollections({
174 required bool notForToday,
175 required String? type,
176 }) async {
177 if (type == 'todo' && notForToday == false){
178 final result = await localDatabase.getAll<TodoCollectionIsarModel>();
179 final todoCollections = result.map((e) => e.toModel()).toList();
180 return todoCollections;
181 } else {
182 final result = await localDatabase.getAll<CompletedCollectionIsarModel>();
183 final completedCollections = result.map((e) => e.toModel()).toList();
184 return completedCollections;
185 }
186 }
187
188 Future<List<ResPartnerPaymentModel>> getCollectionPaymentModeList({
189 required int restaurentId,
190 }) async {
191 final partnerPaymentsIsar = await localDatabase.getAll<RestaurantPartnerPaymentsIsarModel>();
192 final result = partnerPaymentsIsar.where(
193 (e) => e.restaurantId == restaurentId
194 ).toList();
195 final resPartnerPaymentModelList = result.first.partnerPayments?.map(
196 (e) => e.toModel()
197 ).toList();
198 return resPartnerPaymentModelList ?? [];
199 }
200
201 Future<List<ResCollectionContactModel>> getCollectionContactList({
202 required int restaurentId,
203 }) async {
204 final partnerContactsIsar = await localDatabase.getAll<RestaurantCollectionContactsIsarModel>();
205 final result = partnerContactsIsar.where(
206 (e) => e.restaurantId == restaurentId
207 ).toList();
208 final resPartnerContactsList = result.first.collectionContacts?.map(
209 (e) => e.toModel()
210 ).toList();
211 return resPartnerContactsList ?? [];
212 }
213
215 required ReqCollectionPaymentModel reqCollectionPaymentModel,
216 }) async {
217 await offlineSyncService.addPendingOperation(
218 collectionId: int.parse(reqCollectionPaymentModel.id),
219 data: reqCollectionPaymentModel.toJson(),
220 operationOrder: 4,
221 step: CollectionStep.payment,
222 );
223 }
224
225 Future<List<ResCollectionRatingReasonModel>> getRatingReasons() async {
226 final result = await localDatabase.getAll<CollectionRatingReasonIsarModel>();
227 final ratingReasons = result.map((e) => e.toModel()).toList();
228 return ratingReasons;
229 }
230
231 Future<void> sendCollectionRating({
232 required ReqCollectionRatingModel reqCollectionRatingModel,
233 }) async {
234 await offlineSyncService.addPendingOperation(
235 collectionId: int.parse(reqCollectionRatingModel.id),
236 data: reqCollectionRatingModel.toJson(),
237 operationOrder: 5,
238 step: CollectionStep.rating,
239 );
240 final todoCollection = await localDatabase.get<TodoCollectionIsarModel>(
241 int.parse(reqCollectionRatingModel.id),
242 );
243 if (todoCollection != null){
244 todoCollection.status = CollectionStatus.done.value;
245 await localDatabase.put<CompletedCollectionIsarModel>(todoCollection.toCompletedIsarModel());
246 await localDatabase.delete<TodoCollectionIsarModel>(int.parse(reqCollectionRatingModel.id));
247 }
248 }
249}
sealed class CheckInOutEvent extends Equatable userId
Future< void > sendCollectionRating({ required ReqCollectionRatingModel reqCollectionRatingModel, }) async
Future< List< ResCollectionContactModel > > getCollectionContactList({ required int restaurentId, }) async
Future< ResCollectionConfirmationModel > sendCollectionConfirmation({ required ReqCollectionConfirmationEntity confirmation, required String address, required String reference, required String restaurant, required int? restaurantId, required double volumeCollected, required double volumeDeclared }) async
Future< List< ResPartnerPaymentModel > > getCollectionPaymentModeList({ required int restaurentId, }) async
Future< List< ResCollectionRatingReasonModel > > getRatingReasons() async
Future< List< ResCancelationReasonModel > > getCollectionCancelationReasons() async
Future< void > sendCollectionPayment({ required ReqCollectionPaymentModel reqCollectionPaymentModel, }) async
Future< void > validateCollection({ required ReqCollectionValidationEntity validateCollection, }) async
Future< ResCollectionStatusModel > updateCollectionStatus({ required int collectionId, required String status, required String reference, String? cancelationReasonId }) async
Future< List< CollectionModel > > getCollections({ required bool notForToday, required String? type, }) async
Future< ResCollectionInformationModel > sendCollectionInformation({ required ReqCollectionInformationModel model, required String reference, required String address, required String restaurant, required int restaurantId, }) async
static IsarLocalDatabase get instance
CollectionStatus
Map< String, dynamic > toJson()
class UpdateCollectionStatusEvent extends CollectionsEvent collectionId
final String type
final bool notForToday
final String volumeDeclared
final String invoiceDateDue
final String collectionRequest
final int restaurantId
class GetCollectionContactListEvent extends CollectionsInformationEvent restaurentId
final String recoveredDrum
final String volumeCollected
final String restaurant
final String depositedDrum
class Partner String
final String address