import 'dart:developer'; import 'package:easy_localization/easy_localization.dart'; import 'package:mc_common_app/api/api_client.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependency_injection.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/shipping_models/shipping_status_model.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/utils.dart'; abstract class ShippingRepo { Future> getSelfPickupRequestListByStatus({SelfPickupRequestStatusEnum? selfPickupRequestStatus, int? requestId}); Future> getShippingRequestListByStatus({ShippingRequestStatusEnum? shippingStatusEnum, int? requestId}); Future updateShippingRequestStatus({required ShippingRequestStatusEnum shippingStatusEnum, required int shippingRequestId, String? comment}); Future updateSelfPickupRequestStatus({required SelfPickupRequestStatusEnum selfPickupStatusEnum, required int shippingRequestId, String? comment}); } class ShippingRepoImp extends ShippingRepo { ApiClient apiClient = injector.get(); AppState appState = injector.get(); @override Future> getShippingRequestListByStatus({ShippingRequestStatusEnum? shippingStatusEnum, int? requestId}) async { String token = appState.getUser.data!.accessToken ?? ""; Map queryParameters = { "requestID": "${requestId ?? 0}", "shippingStatus": "${shippingStatusEnum != null ? shippingStatusEnum.getIdFromShippingStatusEnum() : -1}", // -1 to get all requests }; GenericRespModel genericRespModel = await apiClient.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.shippingRequestStatusGet, queryParameters, token: token, ); if (genericRespModel.messageStatus != 1 || genericRespModel.data == null) { Utils.showToast(genericRespModel.message ?? LocaleKeys.somethingWrong.tr()); return []; } List list = List.generate(genericRespModel.data.length, (index) => ShippingRequestModel.fromJson(genericRespModel.data[index])); return list; } @override Future> getSelfPickupRequestListByStatus({SelfPickupRequestStatusEnum? selfPickupRequestStatus, int? requestId}) async { String token = appState.getUser.data!.accessToken ?? ""; Map queryParameters = { "requestID": "${requestId ?? 0}", "selfPickUpStatus": "${selfPickupRequestStatus != null ? selfPickupRequestStatus.getIdFromSelfPickupStatusEnum() : -1}", // -1 to get all requests }; GenericRespModel genericRespModel = await apiClient.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.selfPickupRequestStatusGet, queryParameters, token: token, ); if (genericRespModel.messageStatus != 1 || genericRespModel.data == null) { Utils.showToast(genericRespModel.message ?? LocaleKeys.somethingWrong.tr()); return []; } List list = List.generate(genericRespModel.data.length, (index) => ShippingRequestModel.fromJson(genericRespModel.data[index])); return list; } @override Future updateShippingRequestStatus({required ShippingRequestStatusEnum shippingStatusEnum, required int shippingRequestId, String? comment}) async { String token = appState.getUser.data!.accessToken ?? ""; Map queryParameters = { "id": "$shippingRequestId", "shippingStatus": "${shippingStatusEnum.getIdFromShippingStatusEnum()}", "comment": comment ?? "", }; GenericRespModel genericRespModel = await apiClient.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.shippingRequestStatusUpdate, queryParameters, token: token, ); if (genericRespModel.messageStatus != 1 || genericRespModel.data == null) { Utils.showToast(genericRespModel.message ?? LocaleKeys.somethingWrong.tr()); } return genericRespModel; } @override Future updateSelfPickupRequestStatus({required SelfPickupRequestStatusEnum selfPickupStatusEnum, required int shippingRequestId, String? comment}) async { String token = appState.getUser.data!.accessToken ?? ""; Map queryParameters = { "id": "$shippingRequestId", "selfPickUpStatus": "${selfPickupStatusEnum.getIdFromSelfPickupStatusEnum()}", "comment": comment ?? "", }; GenericRespModel genericRespModel = await apiClient.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.selfPickupRequestStatusUpdate, queryParameters, token: token, ); if (genericRespModel.messageStatus != 1 || genericRespModel.data == null) { Utils.showToast(genericRespModel.message ?? LocaleKeys.somethingWrong.tr()); } return genericRespModel; } }