Insurance update implementation contd.
							parent
							
								
									efb22aec4e
								
							
						
					
					
						commit
						e8cc6407b6
					
				| @ -0,0 +1,3 @@ | ||||
| <svg width="14" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
|     <path fill-rule="evenodd" clip-rule="evenodd" d="M6.99984 12.7702C3.53655 12.7702 0.729004 9.96263 0.729004 6.49935C0.729004 3.03606 3.53655 0.228516 6.99984 0.228516C10.4631 0.228516 13.2707 3.03606 13.2707 6.49935C13.2707 9.96263 10.4631 12.7702 6.99984 12.7702ZM9.1623 5.16184C9.39012 4.93404 9.39013 4.5647 9.16233 4.33688C8.93453 4.10907 8.56519 4.10906 8.33737 4.33686L6.99972 5.67442L5.6623 4.33709C5.43449 4.10929 5.06514 4.1093 4.83734 4.33711C4.60955 4.56493 4.60956 4.93427 4.83737 5.16207L6.17474 6.49935L4.83737 7.83663C4.60956 8.06442 4.60955 8.43377 4.83734 8.66158C5.06514 8.8894 5.43449 8.88941 5.6623 8.66161L6.99972 7.32428L8.33737 8.66184C8.56519 8.88964 8.93453 8.88963 9.16233 8.66181C9.39013 8.434 9.39012 8.06465 9.1623 7.83686L7.82471 6.49935L9.1623 5.16184Z" fill="#ED1C2B"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 909 B | 
| @ -0,0 +1,4 @@ | ||||
| <svg width="22" height="23" viewBox="0 0 22 23" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
|     <path d="M19.4932 13.7808C20.7528 9.09639 17.955 4.27023 13.2297 3.00853C9.70851 2.06832 6.11906 3.37593 3.99728 6.04158C3.84468 6.2333 3.86798 6.50772 4.04125 6.68099L5.04846 7.6882C5.18151 7.82125 5.1938 8.04137 5.18151 8.24316C5.14872 8.78189 4.6854 9.19203 4.14668 9.15923L1.69362 9.00989C1.38358 8.99102 1.10097 8.82587 0.932324 8.56502C0.76368 8.30416 0.72909 7.97867 0.839142 7.6882C2.77489 2.57901 8.3266 -0.323654 13.7339 1.12017C19.4935 2.65805 22.9235 8.55039 21.3807 14.2883C19.8381 20.025 13.9137 23.4174 8.1554 21.8799C3.87709 20.7375 0.886935 17.1944 0.261338 13.0982C0.179854 12.5647 0.546317 12.0661 1.07986 11.9846C1.61339 11.9031 2.11197 12.2696 2.19345 12.8031C2.70523 16.1541 5.15307 19.0552 8.65962 19.9915C13.3861 21.2536 18.2332 18.4666 19.4932 13.7808Z" fill="#ED1C2B"/> | ||||
|     <path d="M12 7.5C12 6.94772 11.5523 6.5 11 6.5C10.4477 6.5 10 6.94772 10 7.5V11.5C10 11.7652 10.1054 12.0196 10.2929 12.2071L12.2929 14.2071C12.6834 14.5976 13.3166 14.5976 13.7071 14.2071C14.0976 13.8166 14.0976 13.1834 13.7071 12.7929L12 11.0858V7.5Z" fill="#ED1C2B"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.2 KiB | 
| @ -0,0 +1,4 @@ | ||||
| <svg width="15" height="16" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
|     <path d="M6.16613 2.14867C6.59446 2.05148 7.04084 2 7.50016 2C10.8139 2 13.5002 4.68629 13.5002 8C13.5002 9.53082 12.9272 10.928 11.9827 11.9886L11.9827 11C11.9827 10.5858 11.6469 10.25 11.2327 10.25C10.8185 10.25 10.4827 10.5858 10.4827 11L10.4827 13.625C10.4827 14.0392 10.8185 14.375 11.2327 14.375H13.8752C14.2894 14.375 14.6252 14.0392 14.6252 13.625C14.6252 13.2108 14.2894 12.875 13.8752 12.875H13.1997C14.3217 11.5644 15.0002 9.86153 15.0002 8C15.0002 3.85786 11.6423 0.5 7.50016 0.5C6.9284 0.5 6.3707 0.564117 5.8342 0.685856C5.43025 0.777516 5.1771 1.17928 5.26876 1.58323C5.36042 1.98717 5.76218 2.24033 6.16613 2.14867Z" fill="#18C273"/> | ||||
|     <path d="M1.125 1.63672C0.710786 1.63672 0.375 1.97251 0.375 2.38672C0.375 2.80093 0.710786 3.13672 1.125 3.13672H1.79048C0.674497 4.44574 0 6.14405 0 8.00006C0 12.1422 3.35786 15.5001 7.5 15.5001C8.07176 15.5001 8.62946 15.4359 9.16597 15.3142C9.56991 15.2225 9.82307 14.8208 9.73141 14.4168C9.63975 14.0129 9.23798 13.7597 8.83404 13.8514C8.4057 13.9486 7.95932 14.0001 7.5 14.0001C4.18629 14.0001 1.5 11.3138 1.5 8.00006C1.5 6.4787 2.06588 5.08936 3 4.03118V5.00006C3 5.41427 3.33579 5.75006 3.75 5.75006C4.16421 5.75006 4.5 5.41427 4.5 5.00006V2.38672C4.5 1.97251 4.16421 1.63672 3.75 1.63672L1.125 1.63672Z" fill="#18C273"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.4 KiB | 
| @ -0,0 +1,77 @@ | ||||
| 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_details_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}); | ||||
| } | ||||
| 
 | ||||
| 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}) { | ||||
|           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(); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,43 @@ | ||||
| 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_details_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; | ||||
| 
 | ||||
|   InsuranceRepo insuranceRepo; | ||||
|   ErrorHandlerService errorHandlerService; | ||||
| 
 | ||||
|   List<PatientInsuranceDetailsResponseModel> patientInsuranceList = []; | ||||
| 
 | ||||
|   InsuranceViewModel({required this.insuranceRepo, required this.errorHandlerService}); | ||||
| 
 | ||||
|   initInsuranceProvider() { | ||||
|     patientInsuranceList.clear(); | ||||
|     isInsuranceLoading = true; | ||||
|     getPatientInsuranceDetails(); | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> getPatientInsuranceDetails({Function(dynamic)? onSuccess, Function(String)? onError}) async { | ||||
|     final result = await insuranceRepo.getPatientInsuranceDetails(patientId: "1231755"); | ||||
| 
 | ||||
|     result.fold( | ||||
|       (failure) async => await errorHandlerService.handleError(failure: failure), | ||||
|       (apiResponse) { | ||||
|         if (apiResponse.messageStatus == 2) { | ||||
|           // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); | ||||
|         } else if (apiResponse.messageStatus == 1) { | ||||
|           patientInsuranceList = apiResponse.data!; | ||||
|           isInsuranceLoading = false; | ||||
|           notifyListeners(); | ||||
|           if (onSuccess != null) { | ||||
|             onSuccess(apiResponse); | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,96 @@ | ||||
| class PatientInsuranceDetailsResponseModel { | ||||
|   String? setupID; | ||||
|   int? projectID; | ||||
|   bool? isActive; | ||||
|   int? patientID; | ||||
|   int? companyID; | ||||
|   int? subCategoryID; | ||||
|   dynamic companyType; | ||||
|   String? patientCardID; | ||||
|   String? cardValidTo; | ||||
|   int? patientCreditLimit; | ||||
|   String? subPolicyNo; | ||||
|   String? companyName; | ||||
|   String? companyNameN; | ||||
|   String? subCategoryDesc; | ||||
|   dynamic subCategoryDescN; | ||||
|   bool? isElectronicClaim; | ||||
|   String? subCategoryValidTo; | ||||
|   dynamic groupID; | ||||
|   String? groupName; | ||||
|   dynamic groupNameN; | ||||
|   String? insurancePolicyNo; | ||||
| 
 | ||||
|   PatientInsuranceDetailsResponseModel( | ||||
|       {this.setupID, | ||||
|       this.projectID, | ||||
|       this.isActive, | ||||
|       this.patientID, | ||||
|       this.companyID, | ||||
|       this.subCategoryID, | ||||
|       this.companyType, | ||||
|       this.patientCardID, | ||||
|       this.cardValidTo, | ||||
|       this.patientCreditLimit, | ||||
|       this.subPolicyNo, | ||||
|       this.companyName, | ||||
|       this.companyNameN, | ||||
|       this.subCategoryDesc, | ||||
|       this.subCategoryDescN, | ||||
|       this.isElectronicClaim, | ||||
|       this.subCategoryValidTo, | ||||
|       this.groupID, | ||||
|       this.groupName, | ||||
|       this.groupNameN, | ||||
|       this.insurancePolicyNo}); | ||||
| 
 | ||||
|   PatientInsuranceDetailsResponseModel.fromJson(Map<String, dynamic> json) { | ||||
|     setupID = json['SetupID']; | ||||
|     projectID = json['ProjectID']; | ||||
|     isActive = json['IsActive']; | ||||
|     patientID = json['PatientID']; | ||||
|     companyID = json['CompanyID']; | ||||
|     subCategoryID = json['SubCategoryID']; | ||||
|     companyType = json['CompanyType']; | ||||
|     patientCardID = json['PatientCardID']; | ||||
|     cardValidTo = json['CardValidTo']; | ||||
|     patientCreditLimit = json['PatientCreditLimit']; | ||||
|     subPolicyNo = json['SubPolicyNo']; | ||||
|     companyName = json['CompanyName']; | ||||
|     companyNameN = json['CompanyNameN']; | ||||
|     subCategoryDesc = json['SubCategoryDesc']; | ||||
|     subCategoryDescN = json['SubCategoryDescN']; | ||||
|     isElectronicClaim = json['IsElectronicClaim']; | ||||
|     subCategoryValidTo = json['SubCategoryValidTo']; | ||||
|     groupID = json['GroupID']; | ||||
|     groupName = json['GroupName']; | ||||
|     groupNameN = json['GroupNameN']; | ||||
|     insurancePolicyNo = json['InsurancePolicyNo']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['SetupID'] = this.setupID; | ||||
|     data['ProjectID'] = this.projectID; | ||||
|     data['IsActive'] = this.isActive; | ||||
|     data['PatientID'] = this.patientID; | ||||
|     data['CompanyID'] = this.companyID; | ||||
|     data['SubCategoryID'] = this.subCategoryID; | ||||
|     data['CompanyType'] = this.companyType; | ||||
|     data['PatientCardID'] = this.patientCardID; | ||||
|     data['CardValidTo'] = this.cardValidTo; | ||||
|     data['PatientCreditLimit'] = this.patientCreditLimit; | ||||
|     data['SubPolicyNo'] = this.subPolicyNo; | ||||
|     data['CompanyName'] = this.companyName; | ||||
|     data['CompanyNameN'] = this.companyNameN; | ||||
|     data['SubCategoryDesc'] = this.subCategoryDesc; | ||||
|     data['SubCategoryDescN'] = this.subCategoryDescN; | ||||
|     data['IsElectronicClaim'] = this.isElectronicClaim; | ||||
|     data['SubCategoryValidTo'] = this.subCategoryValidTo; | ||||
|     data['GroupID'] = this.groupID; | ||||
|     data['GroupName'] = this.groupName; | ||||
|     data['GroupNameN'] = this.groupNameN; | ||||
|     data['InsurancePolicyNo'] = this.insurancePolicyNo; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,82 @@ | ||||
| import 'dart:async'; | ||||
| 
 | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_assets.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/date_util.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; | ||||
| import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | ||||
| import 'package:hmg_patient_app_new/presentation/insurance/widgets/patient_insurance_card.dart'; | ||||
| import 'package:hmg_patient_app_new/theme/colors.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/shimmer/movies_shimmer_widget.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| class InsuranceHomePage extends StatefulWidget { | ||||
|   const InsuranceHomePage({super.key}); | ||||
| 
 | ||||
|   @override | ||||
|   State<InsuranceHomePage> createState() => _InsuranceHomePageState(); | ||||
| } | ||||
| 
 | ||||
| class _InsuranceHomePageState extends State<InsuranceHomePage> { | ||||
|   late InsuranceViewModel insuranceViewModel; | ||||
| 
 | ||||
|   @override | ||||
|   void initState() { | ||||
|     scheduleMicrotask(() { | ||||
|       insuranceViewModel.initInsuranceProvider(); | ||||
|     }); | ||||
|     super.initState(); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     insuranceViewModel = Provider.of<InsuranceViewModel>(context); | ||||
|     return Scaffold( | ||||
|       backgroundColor: AppColors.bgScaffoldColor, | ||||
|       appBar: AppBar( | ||||
|         title: LocaleKeys.insurance.tr(context: context).toText18(), | ||||
|         backgroundColor: AppColors.bgScaffoldColor, | ||||
|       ), | ||||
|       body: SingleChildScrollView( | ||||
|         child: Consumer<InsuranceViewModel>(builder: (context, insuranceVM, child) { | ||||
|           return Column( | ||||
|             crossAxisAlignment: CrossAxisAlignment.start, | ||||
|             children: [ | ||||
|               Row( | ||||
|                 mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||||
|                 children: [ | ||||
|                   "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.updateInsurance.tr(context: context)}".toText24(isBold: true), | ||||
|                   CustomButton( | ||||
|                     icon: AppAssets.insurance_history_icon, | ||||
|                     iconColor: AppColors.primaryRedColor, | ||||
|                     iconSize: 21.h, | ||||
|                     text: LocaleKeys.history.tr(context: context), | ||||
|                     onPressed: () {}, | ||||
|                     backgroundColor: AppColors.primaryRedColor.withOpacity(0.1), | ||||
|                     borderColor: AppColors.primaryRedColor.withOpacity(0.0), | ||||
|                     textColor: AppColors.primaryRedColor, | ||||
|                     fontSize: 14, | ||||
|                     fontWeight: FontWeight.w600, | ||||
|                     borderRadius: 12, | ||||
|                     padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                     height: 40.h, | ||||
|                   ), | ||||
|                 ], | ||||
|               ).paddingSymmetrical(24.h, 24.h), | ||||
|               insuranceVM.isInsuranceLoading | ||||
|                   ? const MoviesShimmerWidget().paddingSymmetrical(24.h, 0) | ||||
|                   : PatientInsuranceCard( | ||||
|                       insuranceCardDetailsModel: insuranceVM.patientInsuranceList.first, | ||||
|                       isInsuranceExpired: DateTime.now().isAfter(DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo))), | ||||
|             ], | ||||
|           ); | ||||
|         }), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,128 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_assets.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/date_util.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_details_response_model.dart'; | ||||
| import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | ||||
| import 'package:hmg_patient_app_new/theme/colors.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | ||||
| 
 | ||||
| class PatientInsuranceCard extends StatelessWidget { | ||||
|   PatientInsuranceCard({super.key, required this.insuranceCardDetailsModel, required this.isInsuranceExpired}); | ||||
| 
 | ||||
|   PatientInsuranceDetailsResponseModel insuranceCardDetailsModel; | ||||
|   bool isInsuranceExpired = false; | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Container( | ||||
|       width: double.infinity, | ||||
|       decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||
|         color: AppColors.whiteColor, | ||||
|         borderRadius: 24, | ||||
|       ), | ||||
|       child: Padding( | ||||
|         padding: EdgeInsets.all(16.h), | ||||
|         child: Column( | ||||
|           crossAxisAlignment: CrossAxisAlignment.start, | ||||
|           children: [ | ||||
|             Row( | ||||
|               mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||||
|               children: [ | ||||
|                 Column( | ||||
|                   crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                   children: [ | ||||
|                     "Haroon Amjad".toText18(isBold: true), | ||||
|                     "Policy: ${insuranceCardDetailsModel.insurancePolicyNo}".toText12(isBold: true, color: AppColors.lightGrayColor), | ||||
|                   ], | ||||
|                 ), | ||||
|                 CustomButton( | ||||
|                   icon: isInsuranceExpired ? AppAssets.cancel_circle_icon : AppAssets.insurance_active_icon, | ||||
|                   iconColor: isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, | ||||
|                   iconSize: 13.h, | ||||
|                   text: isInsuranceExpired ? "Insurance Expired" : "Insurance Active", | ||||
|                   onPressed: () {}, | ||||
|                   backgroundColor: isInsuranceExpired ? AppColors.primaryRedColor.withOpacity(0.15) : AppColors.successColor.withOpacity(0.15), | ||||
|                   borderColor: isInsuranceExpired ? AppColors.primaryRedColor.withOpacity(0.01) : AppColors.successColor.withOpacity(0.01), | ||||
|                   textColor: isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, | ||||
|                   fontSize: 10, | ||||
|                   fontWeight: FontWeight.w500, | ||||
|                   borderRadius: 12, | ||||
|                   padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                   height: 30.h, | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|             SizedBox(height: 12.h), | ||||
|             insuranceCardDetailsModel.groupName!.toText12(isBold: true), | ||||
|             insuranceCardDetailsModel.companyName!.toText12(isBold: true), | ||||
|             SizedBox(height: 8.h), | ||||
|             Wrap( | ||||
|               direction: Axis.horizontal, | ||||
|               spacing: 6.h, | ||||
|               runSpacing: 6.h, | ||||
|               children: [ | ||||
|                 Row( | ||||
|                   children: [ | ||||
|                     CustomButton( | ||||
|                       icon: AppAssets.doctor_calendar_icon, | ||||
|                       iconColor: AppColors.blackColor, | ||||
|                       iconSize: 13.h, | ||||
|                       text: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}", | ||||
|                       onPressed: () {}, | ||||
|                       backgroundColor: AppColors.greyColor, | ||||
|                       borderColor: AppColors.greyColor, | ||||
|                       textColor: AppColors.blackColor, | ||||
|                       fontSize: 10, | ||||
|                       fontWeight: FontWeight.w500, | ||||
|                       borderRadius: 12, | ||||
|                       padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                       height: 30.h, | ||||
|                     ), | ||||
|                   ], | ||||
|                 ), | ||||
|                 Row( | ||||
|                   children: [ | ||||
|                     CustomButton( | ||||
|                       text: "Patient Card ID: ${insuranceCardDetailsModel.patientCardID}", | ||||
|                       onPressed: () {}, | ||||
|                       backgroundColor: AppColors.greyColor, | ||||
|                       borderColor: AppColors.greyColor, | ||||
|                       textColor: AppColors.blackColor, | ||||
|                       fontSize: 10, | ||||
|                       fontWeight: FontWeight.w500, | ||||
|                       borderRadius: 12, | ||||
|                       padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                       height: 30.h, | ||||
|                     ), | ||||
|                   ], | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|             SizedBox(height: 10.h), | ||||
|             isInsuranceExpired | ||||
|                 ? CustomButton( | ||||
|                     icon: AppAssets.update_insurance_card_icon, | ||||
|                     iconColor: AppColors.successColor, | ||||
|                     iconSize: 15.h, | ||||
|                     text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", | ||||
|                     onPressed: () {}, | ||||
|                     backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), | ||||
|                     borderColor: AppColors.bgGreenColor.withOpacity(0.0), | ||||
|                     textColor: AppColors.bgGreenColor, | ||||
|                     fontSize: 14, | ||||
|                     fontWeight: FontWeight.w500, | ||||
|                     borderRadius: 12, | ||||
|                     padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                     height: 40.h, | ||||
|                   ) | ||||
|                 : Container(), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|     ).paddingSymmetrical(24.h, 0.h); | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue