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_approval_response_model.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; bool isInsuranceApprovalsLoading = false; InsuranceRepo insuranceRepo; ErrorHandlerService errorHandlerService; List patientInsuranceList = []; List patientInsuranceCardHistoryList = []; List patientInsuranceApprovalsList = []; 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; isInsuranceApprovalsLoading = 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(); } setIsInsuranceApprovalsLoading(bool val) { isInsuranceApprovalsLoading = val; notifyListeners(); } Future 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 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 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); } } }, ); } Future getPatientInsuranceApprovalsList({Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await insuranceRepo.getPatientInsuranceApprovalsList(); result.fold( (failure) async { isInsuranceApprovalsLoading = false; notifyListeners(); }, (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { patientInsuranceApprovalsList = apiResponse.data!; isInsuranceApprovalsLoading = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); } } }, ); } }