@ -10,13 +10,17 @@ 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/book_appointments/book_appointments_view_model.dart ' ;
import ' package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart ' ;
import ' package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_clinic_list_response_model.dart ' ;
import ' package:hmg_patient_app_new/generated/locale_keys.g.dart ' ;
import ' package:hmg_patient_app_new/presentation/book_appointment/dental_chief_complaints_page.dart ' ;
import ' package:hmg_patient_app_new/presentation/book_appointment/laser/laser_appointment.dart ' ;
import ' package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart ' ;
import ' package:hmg_patient_app_new/theme/colors.dart ' ;
import ' package:hmg_patient_app_new/widgets/buttons/custom_button.dart ' ;
import ' package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart ' ;
import ' package:hmg_patient_app_new/widgets/common_bottom_sheet.dart ' ;
import ' package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart ' ;
import ' package:hmg_patient_app_new/widgets/routes/custom_page_route.dart ' ;
import ' package:lottie/lottie.dart ' ;
import ' package:url_launcher/url_launcher.dart ' ;
@ -25,11 +29,13 @@ class DoctorCard extends StatelessWidget {
super . key ,
required this . doctorsListResponseModel ,
required this . isLoading ,
this . isDoctorNameSearch = false ,
required this . bookAppointmentsViewModel ,
} ) ;
final DoctorsListResponseModel doctorsListResponseModel ;
final bool isLoading ;
final bool isDoctorNameSearch ;
final BookAppointmentsViewModel bookAppointmentsViewModel ;
@ -173,78 +179,47 @@ class DoctorCard extends StatelessWidget {
CustomButton (
text: LocaleKeys . bookAppo . tr ( context: context ) ,
onPressed: ( ) async {
bookAppointmentsViewModel . setSelectedDoctor ( doctorsListResponseModel ) ;
LoaderBottomSheet . showLoader ( ) ;
bookAppointmentsViewModel . isLiveCareSchedule
? await bookAppointmentsViewModel . getLiveCareDoctorFreeSlots (
isBookingForLiveCare: true ,
onSuccess: ( dynamic respData ) async {
LoaderBottomSheet . hideLoader ( ) ;
showCommonBottomSheetWithoutHeight (
title: LocaleKeys . pickADate . tr ( context: context ) ,
context ,
child: AppointmentCalendar ( ) ,
isFullScreen: false ,
isCloseButtonVisible: true ,
callBackFunc: ( ) { } ,
) ;
} ,
onError: ( err ) {
LoaderBottomSheet . hideLoader ( ) ;
showCommonBottomSheetWithoutHeight (
context ,
child: Utils . getErrorWidget ( loadingText: err ) ,
callBackFunc: ( ) { } ,
isFullScreen: false ,
isCloseButtonVisible: true ,
) ;
} )
: await bookAppointmentsViewModel . getDoctorFreeSlots (
isBookingForLiveCare: false ,
onSuccess: ( dynamic respData ) async {
LoaderBottomSheet . hideLoader ( ) ;
showCommonBottomSheetWithoutHeight (
title: LocaleKeys . pickADate . tr ( context: context ) ,
context ,
child: AppointmentCalendar ( ) ,
isFullScreen: false ,
isCloseButtonVisible: true ,
callBackFunc: ( ) { } ,
) ;
} ,
onError: ( err ) {
LoaderBottomSheet . hideLoader ( ) ;
if ( bookAppointmentsViewModel . selectedClinic . clinicID = = 23 ) {
if ( isDoctorNameSearch & & doctorsListResponseModel . clinicID = = 17 ) {
GetClinicsListResponseModel selectedClinic = GetClinicsListResponseModel (
clinicID: doctorsListResponseModel . clinicID , clinicDescription: doctorsListResponseModel . clinicName , isLiveCareClinicAndOnline: false , liveCareServiceID: 0 , liveCareClinicID: 0 ) ;
bookAppointmentsViewModel . setProjectID ( doctorsListResponseModel . projectID . toString ( ) ) ;
bookAppointmentsViewModel . setSelectedClinic ( selectedClinic ) ;
bookAppointmentsViewModel . setIsChiefComplaintsListLoading ( true ) ;
Navigator . of ( context ) . push (
CustomPageRoute (
page: DentalChiefComplaintsPage ( ) ,
) ,
) ;
} else if ( isDoctorNameSearch & & doctorsListResponseModel . clinicID = = 253 ) {
GetClinicsListResponseModel selectedClinic = GetClinicsListResponseModel (
clinicID: doctorsListResponseModel . clinicID , clinicDescription: doctorsListResponseModel . clinicName , isLiveCareClinicAndOnline: false , liveCareServiceID: 0 , liveCareClinicID: 0 ) ;
bookAppointmentsViewModel . setSelectedClinic ( selectedClinic ) ;
bookAppointmentsViewModel . getLaserClinic ( ) ;
bookAppointmentsViewModel . setIsDoctorsListLoading ( true ) ;
Navigator . of ( context ) . push (
CustomPageRoute (
page: LaserAppointment ( ) ,
) ,
) ;
} else {
bookAppointmentsViewModel . setSelectedDoctor ( doctorsListResponseModel ) ;
LoaderBottomSheet . showLoader ( ) ;
bookAppointmentsViewModel . isLiveCareSchedule
? await bookAppointmentsViewModel . getLiveCareDoctorFreeSlots (
isBookingForLiveCare: true ,
onSuccess: ( dynamic respData ) async {
LoaderBottomSheet . hideLoader ( ) ;
showCommonBottomSheetWithoutHeight (
title: LocaleKeys . pickADate . tr ( context: context ) ,
context ,
child: Column (
mainAxisAlignment: MainAxisAlignment . center ,
crossAxisAlignment: CrossAxisAlignment . center ,
children: [
Lottie . asset ( AppAnimations . errorAnimation , repeat: true , reverse: false , frameRate: FrameRate ( 60 ) , width: 100. h , height: 100. h , fit: BoxFit . fill ) ,
SizedBox ( height: 8. h ) ,
( " For booking appointments in the Physiotherapy clinic, please contact: 920066666 " ) . toText16 ( color: AppColors . blackColor ) ,
SizedBox ( height: 16. h ) ,
CustomButton (
height: 40. h ,
backgroundColor: AppColors . primaryRedColor ,
borderColor: AppColors . primaryRedColor ,
text: LocaleKeys . callNow . tr ( ) ,
textColor: AppColors . whiteColor ,
iconColor: AppColors . whiteColor ,
onPressed: ( ) {
launchUrl (
Uri . parse ( " tel://920066666 " ) ,
) ;
} ,
icon: AppAssets . call ) ,
] ,
) . center ,
callBackFunc: ( ) { } ,
child: AppointmentCalendar ( ) ,
isFullScreen: false ,
isCloseButtonVisible: true ,
callBackFunc: ( ) { } ,
) ;
} else {
} ,
onError: ( err ) {
LoaderBottomSheet . hideLoader ( ) ;
showCommonBottomSheetWithoutHeight (
context ,
child: Utils . getErrorWidget ( loadingText: err ) ,
@ -252,15 +227,70 @@ class DoctorCard extends StatelessWidget {
isFullScreen: false ,
isCloseButtonVisible: true ,
) ;
}
/ / showCommonBottomSheetWithoutHeight (
/ / context ,
/ / child: Utils . getErrorWidget ( loadingText: err ) ,
/ / callBackFunc: ( ) { } ,
/ / isFullScreen: false ,
/ / isCloseButtonVisible: true ,
/ / ) ;
} ) ;
} )
: await bookAppointmentsViewModel . getDoctorFreeSlots (
isBookingForLiveCare: false ,
onSuccess: ( dynamic respData ) async {
LoaderBottomSheet . hideLoader ( ) ;
showCommonBottomSheetWithoutHeight (
title: LocaleKeys . pickADate . tr ( context: context ) ,
context ,
child: AppointmentCalendar ( ) ,
isFullScreen: false ,
isCloseButtonVisible: true ,
callBackFunc: ( ) { } ,
) ;
} ,
onError: ( err ) {
LoaderBottomSheet . hideLoader ( ) ;
if ( bookAppointmentsViewModel . selectedClinic . clinicID = = 23 ) {
showCommonBottomSheetWithoutHeight (
context ,
child: Column (
mainAxisAlignment: MainAxisAlignment . center ,
crossAxisAlignment: CrossAxisAlignment . center ,
children: [
Lottie . asset ( AppAnimations . errorAnimation , repeat: true , reverse: false , frameRate: FrameRate ( 60 ) , width: 100. h , height: 100. h , fit: BoxFit . fill ) ,
SizedBox ( height: 8. h ) ,
( " For booking appointments in the Physiotherapy clinic, please contact: 920066666 " ) . toText16 ( color: AppColors . blackColor ) ,
SizedBox ( height: 16. h ) ,
CustomButton (
height: 40. h ,
backgroundColor: AppColors . primaryRedColor ,
borderColor: AppColors . primaryRedColor ,
text: LocaleKeys . callNow . tr ( ) ,
textColor: AppColors . whiteColor ,
iconColor: AppColors . whiteColor ,
onPressed: ( ) {
launchUrl (
Uri . parse ( " tel://920066666 " ) ,
) ;
} ,
icon: AppAssets . call ) ,
] ,
) . center ,
callBackFunc: ( ) { } ,
isFullScreen: false ,
isCloseButtonVisible: true ,
) ;
} else {
showCommonBottomSheetWithoutHeight (
context ,
child: Utils . getErrorWidget ( loadingText: err ) ,
callBackFunc: ( ) { } ,
isFullScreen: false ,
isCloseButtonVisible: true ,
) ;
}
/ / showCommonBottomSheetWithoutHeight (
/ / context ,
/ / child: Utils . getErrorWidget ( loadingText: err ) ,
/ / callBackFunc: ( ) { } ,
/ / isFullScreen: false ,
/ / isCloseButtonVisible: true ,
/ / ) ;
} ) ;
}
} ,
backgroundColor: Color ( 0xffFEE9EA ) ,
borderColor: Color ( 0xffFEE9EA ) ,