|  |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/features/insurance/insurance_repo.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/features/lab/lab_repo.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/services/error_handler_service.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class InsuranceViewModel extends ChangeNotifier { | 
					
						
							|  |  |  |   bool isInsuranceLoading = false; | 
					
						
							|  |  |  |   bool isInsuranceHistoryLoading = false; | 
					
						
							|  |  |  |   bool isInsuranceDetailsLoading = false; | 
					
						
							|  |  |  |   bool isInsuranceUpdateDetailsLoading = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   bool isInsuranceDataToBeLoaded = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   InsuranceRepo insuranceRepo; | 
					
						
							|  |  |  |   ErrorHandlerService errorHandlerService; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   List<PatientInsuranceDetailsResponseModel> patientInsuranceList = []; | 
					
						
							|  |  |  |   List<PatientInsuranceCardHistoryResponseModel> patientInsuranceCardHistoryList = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   PatientInsuranceUpdateResponseModel? patientInsuranceUpdateResponseModel; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   InsuranceViewModel({required this.insuranceRepo, required this.errorHandlerService}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   initInsuranceProvider() { | 
					
						
							|  |  |  |     if (isInsuranceDataToBeLoaded) { | 
					
						
							|  |  |  |       patientInsuranceList.clear(); | 
					
						
							|  |  |  |       isInsuranceLoading = true; | 
					
						
							|  |  |  |       getPatientInsuranceDetails(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     patientInsuranceCardHistoryList.clear(); | 
					
						
							|  |  |  |     isInsuranceHistoryLoading = true; | 
					
						
							|  |  |  |     isInsuranceDetailsLoading = true; | 
					
						
							|  |  |  |     isInsuranceUpdateDetailsLoading = true; | 
					
						
							|  |  |  |     notifyListeners(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   setIsInsuranceHistoryLoading(bool val) { | 
					
						
							|  |  |  |     isInsuranceHistoryLoading = val; | 
					
						
							|  |  |  |     notifyListeners(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   setIsInsuranceDetailsLoading(bool val) { | 
					
						
							|  |  |  |     isInsuranceDetailsLoading = val; | 
					
						
							|  |  |  |     notifyListeners(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   setIsInsuranceUpdateDetailsLoading(bool val) { | 
					
						
							|  |  |  |     isInsuranceUpdateDetailsLoading = val; | 
					
						
							|  |  |  |     notifyListeners(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   setIsInsuranceDataToBeLoaded(bool val) { | 
					
						
							|  |  |  |     isInsuranceDataToBeLoaded = val; | 
					
						
							|  |  |  |     notifyListeners(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> getPatientInsuranceDetails({Function(dynamic)? onSuccess, Function(String)? onError}) async { | 
					
						
							|  |  |  |     if (!isInsuranceDataToBeLoaded) return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     final result = await insuranceRepo.getPatientInsuranceDetails(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     result.fold( | 
					
						
							|  |  |  |       // (failure) async => await errorHandlerService.handleError(failure: failure),
 | 
					
						
							|  |  |  |       (failure) async { | 
					
						
							|  |  |  |         isInsuranceLoading = false; | 
					
						
							|  |  |  |         notifyListeners(); | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       (apiResponse) { | 
					
						
							|  |  |  |         if (apiResponse.messageStatus == 2) { | 
					
						
							|  |  |  |           // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {});
 | 
					
						
							|  |  |  |         } else if (apiResponse.messageStatus == 1) { | 
					
						
							|  |  |  |           patientInsuranceList = apiResponse.data!; | 
					
						
							|  |  |  |           isInsuranceLoading = false; | 
					
						
							|  |  |  |           isInsuranceDataToBeLoaded = false; | 
					
						
							|  |  |  |           notifyListeners(); | 
					
						
							|  |  |  |           if (onSuccess != null) { | 
					
						
							|  |  |  |             onSuccess(apiResponse); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> getPatientInsuranceCardHistory({Function(dynamic)? onSuccess, Function(String)? onError}) async { | 
					
						
							|  |  |  |     final result = await insuranceRepo.getPatientInsuranceCardHistory(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     result.fold( | 
					
						
							|  |  |  |       (failure) async { | 
					
						
							|  |  |  |         isInsuranceHistoryLoading = false; | 
					
						
							|  |  |  |         notifyListeners(); | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       (apiResponse) { | 
					
						
							|  |  |  |         if (apiResponse.messageStatus == 2) { | 
					
						
							|  |  |  |           // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {});
 | 
					
						
							|  |  |  |         } else if (apiResponse.messageStatus == 1) { | 
					
						
							|  |  |  |           patientInsuranceCardHistoryList = apiResponse.data!; | 
					
						
							|  |  |  |           patientInsuranceCardHistoryList = patientInsuranceCardHistoryList.take(3).toList(); | 
					
						
							|  |  |  |           isInsuranceHistoryLoading = false; | 
					
						
							|  |  |  |           notifyListeners(); | 
					
						
							|  |  |  |           if (onSuccess != null) { | 
					
						
							|  |  |  |             onSuccess(apiResponse); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> getPatientInsuranceDetailsForUpdate(String patientID, String identificationNo, {Function(dynamic)? onSuccess, Function(String)? onError}) async { | 
					
						
							|  |  |  |     final result = await insuranceRepo.getPatientInsuranceDetailsForUpdate(patientId: patientID, identificationNo: identificationNo); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     result.fold( | 
					
						
							|  |  |  |       (failure) async { | 
					
						
							|  |  |  |         isInsuranceUpdateDetailsLoading = false; | 
					
						
							|  |  |  |         notifyListeners(); | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       (apiResponse) { | 
					
						
							|  |  |  |         if (apiResponse.messageStatus == 2) { | 
					
						
							|  |  |  |           // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {});
 | 
					
						
							|  |  |  |         } else if (apiResponse.messageStatus == 1) { | 
					
						
							|  |  |  |           patientInsuranceUpdateResponseModel = apiResponse.data!; | 
					
						
							|  |  |  |           isInsuranceUpdateDetailsLoading = false; | 
					
						
							|  |  |  |           notifyListeners(); | 
					
						
							|  |  |  |           if (onSuccess != null) { | 
					
						
							|  |  |  |             onSuccess(apiResponse); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |