|  |  |  | import 'package:dartz/dartz.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/api/api_client.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/api_consts.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_card_history.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_details_response_model.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_update_response_model.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/services/logger_service.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | abstract class InsuranceRepo { | 
					
						
							|  |  |  |   Future<Either<Failure, GenericApiModel<List<PatientInsuranceDetailsResponseModel>>>> getPatientInsuranceDetails({required String patientId}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<Either<Failure, GenericApiModel<List<PatientInsuranceCardHistoryResponseModel>>>> getPatientInsuranceCardHistory({required String patientId}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<Either<Failure, GenericApiModel<PatientInsuranceUpdateResponseModel>>> getPatientInsuranceDetailsForUpdate({required String patientId, required String identificationNo}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class InsuranceRepoImp implements InsuranceRepo { | 
					
						
							|  |  |  |   final ApiClient apiClient; | 
					
						
							|  |  |  |   final LoggerService loggerService; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   InsuranceRepoImp({required this.loggerService, required this.apiClient}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<Either<Failure, GenericApiModel<List<PatientInsuranceDetailsResponseModel>>>> getPatientInsuranceDetails({required String patientId}) async { | 
					
						
							|  |  |  |     final mapDevice = { | 
					
						
							|  |  |  |       "isDentalAllowedBackend": false, | 
					
						
							|  |  |  |       "VersionID": 50.0, | 
					
						
							|  |  |  |       "Channel": 3, | 
					
						
							|  |  |  |       "LanguageID": 2, | 
					
						
							|  |  |  |       "IPAdress": "10.20.10.20", | 
					
						
							|  |  |  |       "generalid": "Cs2020@2016\$2958", | 
					
						
							|  |  |  |       "Latitude": 0.0, | 
					
						
							|  |  |  |       "Longitude": 0.0, | 
					
						
							|  |  |  |       "DeviceTypeID": 1, | 
					
						
							|  |  |  |       "PatientType": 1, | 
					
						
							|  |  |  |       "PatientTypeID": 1, | 
					
						
							|  |  |  |       "TokenID": "@dm!n", | 
					
						
							|  |  |  |       "PatientID": "3628599", | 
					
						
							|  |  |  |       "PatientOutSA": "0", | 
					
						
							|  |  |  |       "SessionID": "03478TYC02N80874CTYN04883475!?" | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |       GenericApiModel<List<PatientInsuranceDetailsResponseModel>>? apiResponse; | 
					
						
							|  |  |  |       Failure? failure; | 
					
						
							|  |  |  |       await apiClient.post( | 
					
						
							|  |  |  |         GET_PAtIENTS_INSURANCE, | 
					
						
							|  |  |  |         body: mapDevice, | 
					
						
							|  |  |  |         onFailure: (error, statusCode, {messageStatus, failureType}) { | 
					
						
							|  |  |  |           failure = failureType; | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onSuccess: (response, statusCode, {messageStatus, errorMessage}) { | 
					
						
							|  |  |  |           try { | 
					
						
							|  |  |  |             final list = response['List_PatientInsuranceCard']; | 
					
						
							|  |  |  |             if (list == null || list.isEmpty) { | 
					
						
							|  |  |  |               throw Exception("insurance list is empty"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             final labOrders = list.map((item) => PatientInsuranceDetailsResponseModel.fromJson(item as Map<String, dynamic>)).toList().cast<PatientInsuranceDetailsResponseModel>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             apiResponse = GenericApiModel<List<PatientInsuranceDetailsResponseModel>>( | 
					
						
							|  |  |  |               messageStatus: messageStatus, | 
					
						
							|  |  |  |               statusCode: statusCode, | 
					
						
							|  |  |  |               errorMessage: null, | 
					
						
							|  |  |  |               data: labOrders, | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |           } catch (e) { | 
					
						
							|  |  |  |             failure = DataParsingFailure(e.toString()); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |       if (failure != null) return Left(failure!); | 
					
						
							|  |  |  |       if (apiResponse == null) return Left(ServerFailure("Unknown error")); | 
					
						
							|  |  |  |       return Right(apiResponse!); | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |       return Left(UnknownFailure(e.toString())); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     throw UnimplementedError(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<Either<Failure, GenericApiModel<List<PatientInsuranceCardHistoryResponseModel>>>> getPatientInsuranceCardHistory({required String patientId}) async { | 
					
						
							|  |  |  |     final mapDevice = { | 
					
						
							|  |  |  |       "isDentalAllowedBackend": false, | 
					
						
							|  |  |  |       "VersionID": 50.0, | 
					
						
							|  |  |  |       "Channel": 3, | 
					
						
							|  |  |  |       "LanguageID": 2, | 
					
						
							|  |  |  |       "IPAdress": "10.20.10.20", | 
					
						
							|  |  |  |       "generalid": "Cs2020@2016\$2958", | 
					
						
							|  |  |  |       "Latitude": 0.0, | 
					
						
							|  |  |  |       "Longitude": 0.0, | 
					
						
							|  |  |  |       "DeviceTypeID": 1, | 
					
						
							|  |  |  |       "PatientType": 1, | 
					
						
							|  |  |  |       "PatientTypeID": 1, | 
					
						
							|  |  |  |       "TokenID": "@dm!n", | 
					
						
							|  |  |  |       "PatientID": "3628599", | 
					
						
							|  |  |  |       "PatientOutSA": "0", | 
					
						
							|  |  |  |       "SessionID": "03478TYC02N80874CTYN04883475!?" | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |       GenericApiModel<List<PatientInsuranceCardHistoryResponseModel>>? apiResponse; | 
					
						
							|  |  |  |       Failure? failure; | 
					
						
							|  |  |  |       await apiClient.post( | 
					
						
							|  |  |  |         GET_PAtIENTS_INSURANCE_UPDATED, | 
					
						
							|  |  |  |         body: mapDevice, | 
					
						
							|  |  |  |         onFailure: (error, statusCode, {messageStatus, failureType}) { | 
					
						
							|  |  |  |           failure = failureType; | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onSuccess: (response, statusCode, {messageStatus, errorMessage}) { | 
					
						
							|  |  |  |           try { | 
					
						
							|  |  |  |             final list = response['List_PatientInsuranceCardHistory']; | 
					
						
							|  |  |  |             if (list == null || list.isEmpty) { | 
					
						
							|  |  |  |               throw Exception("insurance list is empty"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             final insuranceCardsList = list.map((item) => PatientInsuranceCardHistoryResponseModel.fromJson(item as Map<String, dynamic>)).toList().cast<PatientInsuranceCardHistoryResponseModel>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             apiResponse = GenericApiModel<List<PatientInsuranceCardHistoryResponseModel>>( | 
					
						
							|  |  |  |               messageStatus: messageStatus, | 
					
						
							|  |  |  |               statusCode: statusCode, | 
					
						
							|  |  |  |               errorMessage: null, | 
					
						
							|  |  |  |               data: insuranceCardsList, | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |           } catch (e) { | 
					
						
							|  |  |  |             failure = DataParsingFailure(e.toString()); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |       if (failure != null) return Left(failure!); | 
					
						
							|  |  |  |       if (apiResponse == null) return Left(ServerFailure("Unknown error")); | 
					
						
							|  |  |  |       return Right(apiResponse!); | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |       return Left(UnknownFailure(e.toString())); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<Either<Failure, GenericApiModel<PatientInsuranceUpdateResponseModel>>> getPatientInsuranceDetailsForUpdate({required String patientId, required String identificationNo}) async { | 
					
						
							|  |  |  |     final mapDevice = { | 
					
						
							|  |  |  |       "SetupID": "010266", | 
					
						
							|  |  |  |       "ProjectID": 15, | 
					
						
							|  |  |  |       "PatientIdentificationID": "2464169354", | 
					
						
							|  |  |  |       "isDentalAllowedBackend": false, | 
					
						
							|  |  |  |       "PatientID": "3628599", | 
					
						
							|  |  |  |       "IsFamily": false, | 
					
						
							|  |  |  |       "ParentID": 0, | 
					
						
							|  |  |  |       "VersionID": 18.8, | 
					
						
							|  |  |  |       "Channel": 3, | 
					
						
							|  |  |  |       "LanguageID": 2, | 
					
						
							|  |  |  |       "IPAdress": "10.20.10.20", | 
					
						
							|  |  |  |       "generalid": "Cs2020@2016\$2958", | 
					
						
							|  |  |  |       "Latitude": 0.0, | 
					
						
							|  |  |  |       "Longitude": 0.0, | 
					
						
							|  |  |  |       "DeviceTypeID": 2, | 
					
						
							|  |  |  |       "PatientType": 1, | 
					
						
							|  |  |  |       "PatientTypeID": 1, | 
					
						
							|  |  |  |       "TokenID": "@dm!n", | 
					
						
							|  |  |  |       "PatientOutSA": 0, | 
					
						
							|  |  |  |       "SessionID": "eyy7u090a9dfadsghfpsadiuhf234" | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |       GenericApiModel<PatientInsuranceUpdateResponseModel>? apiResponse; | 
					
						
							|  |  |  |       Failure? failure; | 
					
						
							|  |  |  |       await apiClient.post( | 
					
						
							|  |  |  |         GET_PATIENT_INSURANCE_DETAILS, | 
					
						
							|  |  |  |         body: mapDevice, | 
					
						
							|  |  |  |         onFailure: (error, statusCode, {messageStatus, failureType}) { | 
					
						
							|  |  |  |           failure = failureType; | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onSuccess: (response, statusCode, {messageStatus, errorMessage}) { | 
					
						
							|  |  |  |           try { | 
					
						
							|  |  |  |             final list = response['List_PatientInsuranceDetails']; | 
					
						
							|  |  |  |             if (list == null || list.isEmpty) { | 
					
						
							|  |  |  |               throw Exception("insurance list is empty"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             final insuranceCardsList = PatientInsuranceUpdateResponseModel.fromJson(list[0]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             apiResponse = GenericApiModel<PatientInsuranceUpdateResponseModel>( | 
					
						
							|  |  |  |               messageStatus: messageStatus, | 
					
						
							|  |  |  |               statusCode: statusCode, | 
					
						
							|  |  |  |               errorMessage: null, | 
					
						
							|  |  |  |               data: insuranceCardsList, | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |           } catch (e) { | 
					
						
							|  |  |  |             failure = DataParsingFailure(e.toString()); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |       if (failure != null) return Left(failure!); | 
					
						
							|  |  |  |       if (apiResponse == null) return Left(ServerFailure("Unknown error")); | 
					
						
							|  |  |  |       return Right(apiResponse!); | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |       return Left(UnknownFailure(e.toString())); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |