import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/InsuranceViewModel.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/patients/In_patient/NoData.dart'; import 'package:doctor_app_flutter/utils/date-utils.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/widgets/patients/patient_service_title.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/CusomRow.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../config/config.dart'; class InsuranceApprovalsDetails extends StatefulWidget { PatiantInformtion? patient; int indexInsurance; String patientType; InsuranceApprovalsDetails({this.patient, this.indexInsurance = 0, this.patientType = ''}); @override _InsuranceApprovalsDetailsState createState() => _InsuranceApprovalsDetailsState(patient: patient!, indexInsurance: indexInsurance, patientType: patientType); } class _InsuranceApprovalsDetailsState extends State { PatiantInformtion? patient; int indexInsurance; String patientType; _InsuranceApprovalsDetailsState({this.patient, this.indexInsurance = 0, this.patientType = ''}); @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); // final routeArgs = ModalRoute.of(context)!.settings.arguments as Map; return BaseView( onModelReady: (model) => model.insuranceApprovalInPatient.length == 0 ? patient!.admissionNo != null ? (model) => model.getInsuranceInPatient(mrn: patient!.patientId) : patient!.appointmentNo != null ? (model) => model.getInsuranceApproval(patient, appointmentNo: patient!.appointmentNo, projectId: patient!.projectId) : (model) => model.getInsuranceApproval(patient) : null, builder: (BuildContext context, InsuranceViewModel model, Widget? child) => AppScaffold( isShowAppBar: true, baseViewModel: model, appBar: PatientProfileAppBar(patient!), body: patient!.admissionNo != null ? SingleChildScrollView( child: Container( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ServiceTitle( title: TranslationBase.of(context).insurance22, subTitle: TranslationBase.of(context).approvals22, ), Container( margin: EdgeInsets.all(10), decoration: BoxDecoration( border: Border.all( width: 0.5, color: Colors.white, ), borderRadius: BorderRadius.all( Radius.circular(15.0), ), color: Colors.white), child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Row( children: [ AppText( model.insuranceApprovalInPatient[indexInsurance].approvalStatusDescption != null ? model.insuranceApprovalInPatient[indexInsurance].approvalStatusDescption ?? "" : "", color: model.insuranceApprovalInPatient[indexInsurance].approvalStatusDescption != null ? "${model.insuranceApprovalInPatient[indexInsurance].approvalStatusDescption}" == "Approved" || "${model.insuranceApprovalInPatient[indexInsurance].approvalStatusDescption}" == "تمت الموافقة" ? AppGlobal.appGreenColor : Color(0xffD02127) : Color(0xffD02127), letterSpacing: -0.4, fontWeight: FontWeight.w600, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.7, ), ], ), Row( children: [ AppText( model.insuranceApprovalInPatient[indexInsurance].doctorName!.toUpperCase(), color: Color(0xff2E303A), fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600, ) ], ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( children: [ Column( children: [ Container( height: MediaQuery.of(context).size.height * 0.065, width: MediaQuery.of(context).size.height * 0.065, child: CircleAvatar( radius: SizeConfig.imageSizeMultiplier! * 12, // radius: (52) child: ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.network( model.insuranceApprovalInPatient[indexInsurance].doctorImage!, fit: BoxFit.fill, width: 700, ), ), backgroundColor: Colors.transparent, ), ), ], ), Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, //mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 25.0, ), CustomRow( label: TranslationBase.of(context).clinic + ": ", value: model.insuranceApprovalInPatient[indexInsurance].clinicName!, ), CustomRow( label: TranslationBase.of(context).approvalNo + ": ", value: model.insuranceApprovalInPatient[indexInsurance].approvalNo.toString(), ), CustomRow( label: 'Unused Count:', value: model.insuranceApprovalInPatient[indexInsurance].unUsedCount.toString(), ), CustomRow(label: TranslationBase.of(context).companyName + ": ", value: model.insuranceApprovalInPatient[indexInsurance].companyName.toString()), CustomRow( label: TranslationBase.of(context).receiptOn + ": ", value: '${AppDateUtils.getDayMonthYearDateFormatted(AppDateUtils.getDateTimeFromServerFormat(model.insuranceApprovalInPatient[indexInsurance].receiptOn ?? ""), isArabic: projectViewModel.isArabic)}'), CustomRow( label: TranslationBase.of(context).expiryDate + ": ", value: '${AppDateUtils.getDayMonthYearDateFormatted(AppDateUtils.getDateTimeFromServerFormat(model.insuranceApprovalInPatient[indexInsurance].expiryDate ?? ""), isArabic: projectViewModel.isArabic)}'), ], ), ), ), ], ), ), SizedBox( height: 20.0, ), Container( child: Column( children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( children: [ Expanded( child: AppText( TranslationBase.of(context).procedure, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.9, ), ), Expanded( child: AppText( TranslationBase.of(context).status, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.9, ), ), Expanded( child: AppText( TranslationBase.of(context).usageStatus, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.9, ), ) ], ), ), Divider( color: Colors.black, ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: ListView.builder( shrinkWrap: true, physics: ScrollPhysics(), itemCount: model.insuranceApprovalInPatient[indexInsurance].apporvalDetails!.length, itemBuilder: (BuildContext context, int index) { return Container( child: Column( children: [ Row( children: [ Expanded( child: Container( child: AppText( model.insuranceApprovalInPatient[indexInsurance]?.apporvalDetails![index]?.procedureName ?? "", textAlign: TextAlign.center, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.7, letterSpacing: -0.4, color: Color(0xff575757), fontWeight: FontWeight.w500, ), ), ), Expanded( child: Container( child: AppText( model.insuranceApprovalInPatient[indexInsurance]?.apporvalDetails![index]?.status ?? "", textAlign: TextAlign.center, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.7, letterSpacing: -0.4, color: Color(0xff575757), fontWeight: FontWeight.w500, ), ), ), Expanded( child: Container( child: AppText( model.insuranceApprovalInPatient[indexInsurance]?.apporvalDetails![index]?.isInvoicedDesc ?? "", textAlign: TextAlign.center, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 2.7, letterSpacing: -0.4, color: Color(0xff575757), fontWeight: FontWeight.w500, ), ), ), ], ), SizedBox( width: 5, ), Divider( color: Colors.black38, ), ], ), ); }), ), ], ), ), ], ), ), ), ], ), ), ) : SingleChildScrollView( child: Container( child: Column( children: [ Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Row( children: [ AppText( TranslationBase.of(context).insurance22, fontSize: 15.0, fontWeight: FontWeight.w600, fontFamily: 'Poppins', ), ], ), Row( children: [ AppText( TranslationBase.of(context).approvals22, fontSize: 30.0, fontWeight: FontWeight.w700, ), ], ), ], ), ), Container( margin: EdgeInsets.all(10), decoration: BoxDecoration( border: Border.all( width: 0.5, color: Colors.white, ), borderRadius: BorderRadius.all( Radius.circular(15.0), ), color: Colors.white), child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Row( children: [ AppText( model.insuranceApproval[indexInsurance].approvalStatusDescption != null ? model.insuranceApproval[indexInsurance].approvalStatusDescption ?? "" : "", color: model.insuranceApproval[indexInsurance].approvalStatusDescption != null ? "${model.insuranceApproval[indexInsurance].approvalStatusDescption}" == "Approved" ? AppGlobal.appGreenColor : Color(0xffD02127) : Color(0xffD02127), ), ], ), Row( children: [ AppText( model.insuranceApproval[indexInsurance].doctorName!.toUpperCase(), color: Colors.black, fontSize: 18, fontWeight: FontWeight.bold, ) ], ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( children: [ Column( children: [ Container( height: 85.0, width: 85.0, child: CircleAvatar( radius: SizeConfig.imageSizeMultiplier! * 12, // radius: (52) child: ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.network( model.insuranceApproval[indexInsurance].doctorImage!, fit: BoxFit.fill, width: 700, ), ), backgroundColor: Colors.transparent, ), ), ], ), Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, //mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 25.0, ), Row( children: [ AppText( TranslationBase.of(context).clinic + ": ", color: Colors.grey[500], fontSize: 14, ), Expanded( child: AppText( model.insuranceApproval[indexInsurance].clinicName!, fontSize: 14, ), ) ], ), Row( children: [ AppText( TranslationBase.of(context).approvalNo + ": ", color: Colors.grey[500], fontSize: 14, ), AppText( model.insuranceApproval[indexInsurance].approvalNo.toString(), fontSize: 14, ) ], ), Row( children: [ AppText( TranslationBase.of(context).unusedCount + ": ", color: Colors.grey[500], fontSize: 14, ), AppText( model.insuranceApproval[indexInsurance].unUsedCount.toString(), fontSize: 14, ) ], ), Row( children: [ AppText( TranslationBase.of(context).companyName + ": ", color: Colors.grey[500], ), AppText('Sample') ], ), Row( children: [ AppText( TranslationBase.of(context).receiptOn + ": ", color: Colors.grey[500], ), Expanded( child: AppText( '${AppDateUtils.getDayMonthYearDateFormatted(AppDateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].rceiptOn!), isArabic: projectViewModel.isArabic)}', color: Colors.black, fontWeight: FontWeight.w600, ), ), ], ), Row( children: [ AppText( TranslationBase.of(context).expiryDate + ": ", color: Colors.grey[500], ), if (model.insuranceApproval[indexInsurance].expiryDate != null) AppText( '${AppDateUtils.getDayMonthYearDateFormatted(AppDateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].expiryDate!), isArabic: projectViewModel.isArabic)}', color: Colors.black, fontWeight: FontWeight.w600, ), ], ), ], ), ), ), ], ), ), SizedBox( height: 20.0, ), Container( child: Column( children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( children: [ Expanded( child: AppText( TranslationBase.of(context).procedure, fontWeight: FontWeight.w700, ), ), Expanded( child: AppText( TranslationBase.of(context).status, fontWeight: FontWeight.w700, ), ), Expanded( child: AppText( TranslationBase.of(context).usageStatus, fontWeight: FontWeight.w700, ), ) ], ), ), Divider( color: Colors.black, ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: (model.insuranceApproval[indexInsurance].apporvalDetails != null && model.insuranceApproval[indexInsurance].apporvalDetails!.isNotEmpty) ? ListView.builder( shrinkWrap: true, physics: ScrollPhysics(), itemCount: model.insuranceApproval[indexInsurance].apporvalDetails!.length, itemBuilder: (BuildContext context, int index) { return Container( child: Column( children: [ Row( children: [ Expanded( child: Container( child: AppText( model.insuranceApproval[indexInsurance]?.apporvalDetails![index]?.procedureName ?? "", textAlign: TextAlign.start, ), ), ), Expanded( child: Container( child: AppText( model.insuranceApproval[indexInsurance]?.apporvalDetails![index]?.status ?? "", textAlign: TextAlign.center, ), ), ), Expanded( child: Container( child: AppText( model.insuranceApproval[indexInsurance]?.apporvalDetails![index]?.isInvoicedDesc ?? "", textAlign: TextAlign.center, ), ), ), ], ), SizedBox( width: 5, ), Divider( color: Colors.black38, ), ], ), ); }) : NoData(), ), ], ), ), ], ), ), ), ], ), ), )), ); } }