diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 06c4f4f6..7fed99a8 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1140,8 +1140,8 @@ const Map localizedValues = { }, "updated-email": {"en": "Updated email successfully", "ar": "تم تحديث البريد الالكتروني"}, "view-list-children": {"en": "View List of Children", "ar": "عرض قائمة الأطفال"}, - "covidTest": {"en": "COVID-19 TEST", "ar": "فحص كورونا"}, - "driveThru": {"en": "Drive-Thru", "ar": "من داخل السيارة"}, + "covidTest": {"en": "COVID-19", "ar": "فحص"}, + "driveThru": {"en": "Test", "ar": "كورونا"}, "trackDeliveryDriver": {"en": "Track Delivery Driver", "ar": "تتبع السائق"}, "NearestErDesc": { "en": "This service Displays nearest branch among all the branches of All Habib medical Group based on your current Location", diff --git a/lib/models/CovidDriveThru/DriveThroughTestingCenterModel.dart b/lib/models/CovidDriveThru/DriveThroughTestingCenterModel.dart index c85a06b3..8e10af17 100644 --- a/lib/models/CovidDriveThru/DriveThroughTestingCenterModel.dart +++ b/lib/models/CovidDriveThru/DriveThroughTestingCenterModel.dart @@ -9,6 +9,8 @@ class DriveThroughTestingCenterModel { bool isActive; int createdBy; String createdOn; + num testTypeEnum; + num testProcedureEnum; dynamic editedBy; dynamic editedON; dynamic projectName; @@ -16,19 +18,21 @@ class DriveThroughTestingCenterModel { DriveThroughTestingCenterModel( {this.rowID, - this.iD, - this.projectID, - this.setupID, - this.longitude, - this.latitude, - this.numberOfTracks, - this.isActive, - this.createdBy, - this.createdOn, - this.editedBy, - this.editedON, - this.projectName, - this.projectNameN}); + this.iD, + this.projectID, + this.setupID, + this.longitude, + this.latitude, + this.numberOfTracks, + this.isActive, + this.createdBy, + this.createdOn, + this.testTypeEnum, + this.testProcedureEnum, + this.editedBy, + this.editedON, + this.projectName, + this.projectNameN}); DriveThroughTestingCenterModel.fromJson(Map json) { rowID = json['RowID']; @@ -41,6 +45,8 @@ class DriveThroughTestingCenterModel { isActive = json['IsActive']; createdBy = json['CreatedBy']; createdOn = json['CreatedOn']; + testTypeEnum = json['TestTypeEnum']; + testProcedureEnum = json['TestprocedureEnum']; editedBy = json['EditedBy']; editedON = json['EditedON']; projectName = json['ProjectName']; @@ -59,6 +65,8 @@ class DriveThroughTestingCenterModel { data['IsActive'] = this.isActive; data['CreatedBy'] = this.createdBy; data['CreatedOn'] = this.createdOn; + data['TestTypeEnum'] = this.testTypeEnum; + data['TestprocedureEnum'] = this.testProcedureEnum; data['EditedBy'] = this.editedBy; data['EditedON'] = this.editedON; data['ProjectName'] = this.projectName; diff --git a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart index 672dae53..0115083f 100644 --- a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart +++ b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart @@ -6,6 +6,7 @@ import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.da import 'package:diplomaticquarterapp/models/Appointments/timeSlot.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.dart'; +import 'package:diplomaticquarterapp/models/CovidDriveThru/DriveThroughTestingCenterModel.dart'; import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-payment-alert.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; @@ -23,7 +24,6 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; - import 'package:syncfusion_flutter_calendar/calendar.dart'; class CovidTimeSlots extends StatefulWidget { @@ -33,6 +33,7 @@ class CovidTimeSlots extends StatefulWidget { static String selectedDate; static String selectedTime; CovidTestProceduresResponse selectedProcedure; + DriveThroughTestingCenterModel selectedProject; int selectedClinicID; int selectedDoctorID; @@ -41,7 +42,7 @@ class CovidTimeSlots extends StatefulWidget { PatientShareResponse patientShareResponse; - CovidTimeSlots({@required this.projectID, @required this.selectedProcedure}); + CovidTimeSlots({@required this.projectID, @required this.selectedProcedure, @required this.selectedProject}); @override _CovidTimeSlotsState createState() => _CovidTimeSlotsState(); @@ -68,6 +69,7 @@ class _CovidTimeSlotsState extends State with TickerProviderStat ScrollController _scrollController; ToDoCountProviderModel toDoProvider; + ProjectViewModel projectViewModel; @override void initState() { @@ -113,7 +115,7 @@ class _CovidTimeSlotsState extends State with TickerProviderStat @override Widget build(BuildContext context) { - ProjectViewModel projectViewModel = Provider.of(context); + projectViewModel = Provider.of(context); toDoProvider = Provider.of(context); return AppScaffold( appBarTitle: TranslationBase.of(context).covidTest, @@ -359,7 +361,8 @@ class _CovidTimeSlotsState extends State with TickerProviderStat Widget getSelectedButton(int index) { return RaisedButton( - color: CustomColors.green, //Color of the border + color: CustomColors.green, + //Color of the border elevation: 0, textColor: Colors.white, onPressed: () { @@ -374,13 +377,36 @@ class _CovidTimeSlotsState extends State with TickerProviderStat } bookCovidTestAppointment() { - if(CovidTimeSlots.areSlotsAvailable) { - GifLoaderDialogUtils.showMyDialog(context); - DoctorList docObject = new DoctorList(); - docObject.doctorID = widget.selectedDoctorID; - docObject.clinicID = widget.selectedClinicID; - docObject.projectID = widget.projectID; - insertAppointmentCovidTest(context, docObject); + if (CovidTimeSlots.areSlotsAvailable) { + var messageEn = "This Appointment is being booked for patient " + + projectViewModel.authenticatedUserObject.user.firstName + + " " + + projectViewModel.authenticatedUserObject.user.lastName + + ", Having file number " + + projectViewModel.authenticatedUserObject.user.patientID.toString() + + ". Please confirm!"; + var messageAr = "يتم حجز هذا الموعد المراجع " + + projectViewModel.authenticatedUserObject.user.firstName + + " " + + projectViewModel.authenticatedUserObject.user.lastName + + ", وجود رقم الملف " + + projectViewModel.authenticatedUserObject.user.patientID.toString() + + ". يرجى تأكيد!"; + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: projectViewModel.isArabic ? messageAr : messageEn, + okText: TranslationBase.of(context).confirm, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () { + GifLoaderDialogUtils.showMyDialog(context); + DoctorList docObject = new DoctorList(); + docObject.doctorID = widget.selectedDoctorID; + docObject.clinicID = widget.selectedClinicID; + docObject.projectID = widget.projectID; + insertAppointmentCovidTest(context, docObject); + }, + cancelFunction: () => {}); + dialog.showAlertDialog(context); } else { AppToast.showErrorToast(message: TranslationBase.of(context).selectSlot); } @@ -390,7 +416,8 @@ class _CovidTimeSlotsState extends State with TickerProviderStat DoctorsListService service = new DoctorsListService(); AppoitmentAllHistoryResultList appo; service - .insertAppointment(docObject.doctorID, docObject.clinicID, docObject.projectID, CovidTimeSlots.selectedTime, CovidTimeSlots.selectedDate, context, widget.selectedProcedure.procedureID) + .insertAppointment(docObject.doctorID, docObject.clinicID, docObject.projectID, CovidTimeSlots.selectedTime, CovidTimeSlots.selectedDate, context, widget.selectedProcedure.procedureID, + widget.selectedProject.testTypeEnum, widget.selectedProject.testProcedureEnum) .then((res) { if (res['MessageStatus'] == 1) { AppToast.showSuccessToast(message: TranslationBase.of(context).bookedSuccess); @@ -482,7 +509,7 @@ class _CovidTimeSlotsState extends State with TickerProviderStat getCovidFreeSlots(BuildContext context, int projectID) { CovidDriveThruService service = new CovidDriveThruService(); GifLoaderDialogUtils.showMyDialog(context); - service.getCovidFreeSlots(context, projectID).then((res) { + service.getCovidFreeSlots(context, projectID, widget.selectedProject.testTypeEnum, widget.selectedProject.testProcedureEnum).then((res) { GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { if (res['COVID19_FreeTimeSlots'].length != 0) { diff --git a/lib/pages/Covid-DriveThru/covid-dirvethru-questions.dart b/lib/pages/Covid-DriveThru/covid-dirvethru-questions.dart index 78ee36f0..ee6725e9 100644 --- a/lib/pages/Covid-DriveThru/covid-dirvethru-questions.dart +++ b/lib/pages/Covid-DriveThru/covid-dirvethru-questions.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.dart'; +import 'package:diplomaticquarterapp/models/CovidDriveThru/DriveThroughTestingCenterModel.dart'; import 'package:diplomaticquarterapp/pages/medical/labs/passport_update_page.dart'; import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; @@ -21,8 +22,9 @@ import 'covid-payment-details.dart'; class CovidDirveThruQuestions extends StatefulWidget { final String projectId; final List proceduresList; + DriveThroughTestingCenterModel selectedProject; - CovidDirveThruQuestions({@required this.projectId, @required this.proceduresList}); + CovidDirveThruQuestions({@required this.projectId, @required this.proceduresList, @required this.selectedProject}); @override CovidDirveThruQuestionsState createState() => CovidDirveThruQuestionsState(); @@ -296,7 +298,7 @@ class CovidDirveThruQuestionsState extends State { CovidDriveThruService service = new CovidDriveThruService(); CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse(); GifLoaderDialogUtils.showMyDialog(context); - service.getCovidPaymentInformation(context, int.parse(projectID), widget.proceduresList[0].procedureID).then((res) { + service.getCovidPaymentInformation(context, int.parse(projectID), widget.proceduresList[0].procedureID, widget.selectedProject.testTypeEnum, widget.selectedProject.testProcedureEnum).then((res) { GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { covidPaymentInfoResponse = CovidPaymentInfoResponse.fromJson(res['COVID19_PatientShare']); @@ -307,6 +309,7 @@ class CovidDirveThruQuestionsState extends State { covidPaymentInfoResponse: covidPaymentInfoResponse, projectID: int.parse(projectID), proceduresList: widget.proceduresList, + selectedProject: widget.selectedProject, ))); } else {} }).catchError((err) { diff --git a/lib/pages/Covid-DriveThru/covid-drivethru-location.dart b/lib/pages/Covid-DriveThru/covid-drivethru-location.dart index a0842a73..e1ddad8e 100644 --- a/lib/pages/Covid-DriveThru/covid-drivethru-location.dart +++ b/lib/pages/Covid-DriveThru/covid-drivethru-location.dart @@ -49,7 +49,6 @@ class _CovidDrivethruLocationState extends State { WidgetsBinding.instance.addPostFrameCallback((_) { if (projectViewModel.isLogin) { getProjectsList(context); - getTestProcedures(context); } }); super.initState(); @@ -129,7 +128,10 @@ class _CovidDrivethruLocationState extends State { items: projectsList.map((DriveThroughTestingCenterModel item) { return new DropdownMenuItem( value: item, - child: new Text(item.projectName), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [Text(item.projectName), getCovidTestTypeImage(item)], + ), ); }).toList(), onChanged: (newValue) { @@ -256,6 +258,23 @@ class _CovidDrivethruLocationState extends State { ); } + Widget getCovidTestTypeImage(DriveThroughTestingCenterModel item) { + if (item.testTypeEnum == 1) { + return Container(child: SvgPicture.asset("assets/images/new/DriveThru.svg", width: 20.0)); + } + if (item.testTypeEnum == 2) { + return Container(child: SvgPicture.asset("assets/images/new/WalkIn.svg", width: 10.0)); + } + if (item.testTypeEnum == 3) { + return Row( + children: [ + Container(child: SvgPicture.asset("assets/images/new/WalkIn.svg", width: 10.0)), + Container(padding: EdgeInsets.only(left: 5.0, right: 5.0), child: SvgPicture.asset("assets/images/new/DriveThru.svg", width: 20.0)), + ], + ); + } + } + getDirections() { if (isLocationSelected) { MapsLauncher.launchCoordinates(double.parse(projectLat), double.parse(projectLong), this.projectName); @@ -266,7 +285,7 @@ class _CovidDrivethruLocationState extends State { next() { if (isLocationSelected) { - Navigator.push(context, FadePage(page: CovidDirveThruQuestions(projectId: projectID, proceduresList: proceduresList))); + Navigator.push(context, FadePage(page: CovidDirveThruQuestions(projectId: projectID, proceduresList: proceduresList, selectedProject: selectedProject))); } else { Utils.showErrorToast("Please select address from the dropdown menu to continue"); } @@ -284,13 +303,14 @@ class _CovidDrivethruLocationState extends State { this.projectID = newValue.projectID.toString(); isLocationSelected = true; }); + getTestProcedures(context); } getPaymentInfo(BuildContext context, String projectID) { CovidDriveThruService service = new CovidDriveThruService(); CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse(); GifLoaderDialogUtils.showMyDialog(context); - service.getCovidPaymentInformation(context, int.parse(projectID), proceduresList[0].procedureID).then((res) { + service.getCovidPaymentInformation(context, int.parse(projectID), proceduresList[0].procedureID, selectedProject.testTypeEnum, selectedProject.testProcedureEnum).then((res) { GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { setState(() { @@ -303,6 +323,7 @@ class _CovidDrivethruLocationState extends State { covidPaymentInfoResponse: covidPaymentInfoResponse, projectID: int.parse(projectID), proceduresList: proceduresList, + selectedProject: selectedProject, ))); } else {} }).catchError((err) { @@ -314,7 +335,7 @@ class _CovidDrivethruLocationState extends State { CovidDriveThruService service = new CovidDriveThruService(); GifLoaderDialogUtils.showMyDialog(context); - service.getCovidTestProceduresList(context).then((res) { + service.getCovidTestProceduresList(context, selectedProject.testTypeEnum, selectedProject.testProcedureEnum, selectedProject.projectID).then((res) { if (res['MessageStatus'] == 1) { setState(() { res['COVID19_TestProceduresList'].forEach((v) { diff --git a/lib/pages/Covid-DriveThru/covid-payment-details.dart b/lib/pages/Covid-DriveThru/covid-payment-details.dart index 2301de51..7f2ba582 100644 --- a/lib/pages/Covid-DriveThru/covid-payment-details.dart +++ b/lib/pages/Covid-DriveThru/covid-payment-details.dart @@ -1,17 +1,16 @@ import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.dart'; +import 'package:diplomaticquarterapp/models/CovidDriveThru/DriveThroughTestingCenterModel.dart'; import 'package:diplomaticquarterapp/pages/Covid-DriveThru/Covid-TimeSlots.dart'; import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart'; -import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; class CovidPaymentDetails extends StatefulWidget { @@ -19,8 +18,9 @@ class CovidPaymentDetails extends StatefulWidget { int projectID; List proceduresList; CovidTestProceduresResponse selectedProcedure; + DriveThroughTestingCenterModel selectedProject; - CovidPaymentDetails({@required this.covidPaymentInfoResponse, @required this.projectID, @required this.proceduresList}); + CovidPaymentDetails({@required this.covidPaymentInfoResponse, @required this.projectID, @required this.proceduresList, @required this.selectedProject}); @override _CovidPaymentDetailsState createState() => _CovidPaymentDetailsState(); @@ -89,7 +89,6 @@ class _CovidPaymentDetailsState extends State { getPaymentInfo(context, widget.projectID.toString(), widget.selectedProcedure.procedureID); }); }, - ), Text( projectViewModel.isArabic ? widget.proceduresList[index].procedureNameN : widget.proceduresList[index].procedureName, @@ -108,7 +107,6 @@ class _CovidPaymentDetailsState extends State { ], ), ), - Container( decoration: cardRadius(12), child: Padding( @@ -171,7 +169,6 @@ class _CovidPaymentDetailsState extends State { ), ), ), - Container( margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0), child: Row( @@ -210,7 +207,6 @@ class _CovidPaymentDetailsState extends State { ), ), mFlex(1), - Text( TranslationBase.of(context).payOptions, textAlign: TextAlign.center, @@ -306,13 +302,7 @@ class _CovidPaymentDetailsState extends State { } void next() { - Navigator.push( - context, - FadePage( - page: CovidTimeSlots( - projectID: widget.projectID, - selectedProcedure: widget.selectedProcedure, - ))); + Navigator.push(context, FadePage(page: CovidTimeSlots(projectID: widget.projectID, selectedProcedure: widget.selectedProcedure, selectedProject: widget.selectedProject))); } cancel() { @@ -322,7 +312,7 @@ class _CovidPaymentDetailsState extends State { getPaymentInfo(BuildContext context, String projectID, String selectedProcedureID) { CovidDriveThruService service = new CovidDriveThruService(); GifLoaderDialogUtils.showMyDialog(context); - service.getCovidPaymentInformation(context, int.parse(projectID), selectedProcedureID).then((res) { + service.getCovidPaymentInformation(context, int.parse(projectID), selectedProcedureID, widget.selectedProject.testTypeEnum, widget.selectedProject.testProcedureEnum).then((res) { GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { setState(() { diff --git a/lib/pages/landing/fragments/home_page_fragment2.dart b/lib/pages/landing/fragments/home_page_fragment2.dart index bbbf90fc..03d16427 100644 --- a/lib/pages/landing/fragments/home_page_fragment2.dart +++ b/lib/pages/landing/fragments/home_page_fragment2.dart @@ -51,7 +51,7 @@ class _HomePageFragment2State extends State { initialiseHmgServices(bool isLogin) { hmgServices.clear(); hmgServices.add(new HmgServices(0, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin)); - hmgServices.add(new HmgServices(1, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/covid_test_drive_thru.svg", isLogin)); + hmgServices.add(new HmgServices(1, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin)); hmgServices.add(new HmgServices(2, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin)); hmgServices.add(new HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin)); hmgServices.add(new HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin)); diff --git a/lib/pages/pharmacies/my_reviews.dart b/lib/pages/pharmacies/my_reviews.dart index 39304cac..82e1de8b 100644 --- a/lib/pages/pharmacies/my_reviews.dart +++ b/lib/pages/pharmacies/my_reviews.dart @@ -1,10 +1,10 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/review_view_model.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:flutter/material.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:flutter/material.dart'; import 'package:rating_bar/rating_bar.dart'; -import 'package:diplomaticquarterapp/pages/base/base_view.dart'; -import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; class MyReviewsPage extends StatefulWidget { @override @@ -47,7 +47,8 @@ class _MyReviewsPageState extends State { ), Padding( padding: const EdgeInsets.all(8.0), - child: Text(TranslationBase.of(context).noData, + child: Text( + TranslationBase.of(context).noData, // 'There is no data', style: TextStyle(fontSize: 30), ), @@ -65,11 +66,8 @@ class _MyReviewsPageState extends State { Container( child: reviewDetails( model.reviewListList[index], - double.parse(model.reviewListList[index].product - .approvedTotalReviews - .toString()), - double.parse(model.reviewListList[index].rating - .toString()), + double.parse(model.reviewListList[index].product.approvedTotalReviews.toString()), + double.parse(model.reviewListList[index].rating.toString()), ), ), Divider(height: 1, color: Colors.grey) @@ -97,9 +95,7 @@ reviewDetails(data, rate, myRate) { Row( children: [ Container( - margin: languageID == 'ar' - ? EdgeInsets.only(top: 10, right: 10) - : EdgeInsets.only(top: 10, left: 10), + margin: languageID == 'ar' ? EdgeInsets.only(top: 10, right: 10) : EdgeInsets.only(top: 10, left: 10), child: Image.network( data.product.images[0].src.trim(), fit: BoxFit.cover, @@ -114,18 +110,11 @@ reviewDetails(data, rate, myRate) { Container( margin: EdgeInsets.all(5), child: Align( - alignment: languageID == 'ar' - ? Alignment.topRight - : Alignment.topLeft, + alignment: languageID == 'ar' ? Alignment.topRight : Alignment.topLeft, child: RichText( text: TextSpan( - text: languageID == 'ar' - ? data.product.namen - : data.product.name, - style: TextStyle( - color: Colors.black54, - fontSize: languageID == 'ar' ? 12 : 13, - fontWeight: FontWeight.bold), + text: languageID == 'ar' ? data.product.namen : data.product.name, + style: TextStyle(color: Colors.black54, fontSize: languageID == 'ar' ? 12 : 13, fontWeight: FontWeight.bold), ), ), ), @@ -135,18 +124,11 @@ reviewDetails(data, rate, myRate) { Container( margin: EdgeInsets.all(5), child: Align( - alignment: languageID == 'ar' - ? Alignment.topRight - : Alignment.topLeft, + alignment: languageID == 'ar' ? Alignment.topRight : Alignment.topLeft, child: RichText( text: TextSpan( - text: data.product.quantity.toString() + - " " + - data.product.currency, - style: TextStyle( - fontWeight: FontWeight.bold, - color: Colors.black, - fontSize: 13), + text: data.product.price.toString() + " " + data.product.currency, + style: TextStyle(fontWeight: FontWeight.bold, color: Colors.black, fontSize: 13), ), ), ), @@ -156,9 +138,7 @@ reviewDetails(data, rate, myRate) { Container( margin: EdgeInsets.all(5), child: Align( - alignment: languageID == 'ar' - ? Alignment.topRight - : Alignment.topLeft, + alignment: languageID == 'ar' ? Alignment.topRight : Alignment.topLeft, child: RatingBar.readOnly( initialRating: rate, size: 15.0, @@ -186,11 +166,7 @@ reviewDetails(data, rate, myRate) { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - Container( - padding: languageID == 'ar' - ? EdgeInsets.only(right: 10) - : EdgeInsets.only(left: 10), - child: Text(data.createdOnUtc.toString().substring(0 , 11))), + Container(padding: languageID == 'ar' ? EdgeInsets.only(right: 10) : EdgeInsets.only(left: 10), child: Text(data.createdOnUtc.toString().substring(0, 11))), ], ), ), @@ -200,9 +176,7 @@ reviewDetails(data, rate, myRate) { mainAxisAlignment: MainAxisAlignment.end, children: [ Container( - padding: languageID == 'ar' - ? EdgeInsets.only(right: 60) - : EdgeInsets.only(left: 60), + padding: languageID == 'ar' ? EdgeInsets.only(right: 60) : EdgeInsets.only(left: 60), child: RatingBar.readOnly( initialRating: myRate, size: 15.0, @@ -225,10 +199,8 @@ reviewDetails(data, rate, myRate) { ), Expanded( child: Container( - padding: languageID == 'ar' - ? EdgeInsets.only(right: 10) - : EdgeInsets.only(left: 10), - child: Text(fixingString(data.reviewText.toString())), + padding: languageID == 'ar' ? EdgeInsets.only(right: 10) : EdgeInsets.only(left: 10), + child: Text(getReview(data) ?? ""), ), ), ], @@ -238,6 +210,20 @@ reviewDetails(data, rate, myRate) { ); } +String getReview(data) { + String reviewTxt = ""; + + if (data.reviewText == null && data.replyText == null) { + reviewTxt = ""; + } + if (data.reviewText == null) + reviewTxt = data.replyText; + else + reviewTxt = data.reviewText; + + return reviewTxt; +} + fixingString(txt) { String stringTxt; String newTxt; diff --git a/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart index 7a252bd6..654db47d 100644 --- a/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart +++ b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart @@ -437,6 +437,7 @@ class _OrderBottomWidgetState extends State { FadePage( page: PharmacyAddressesPage( orderPreviewViewModel: widget.model, + isShippingAddress: true, ))).then((result) async { if (result != null) { GifLoaderDialogUtils.showMyDialog(context); diff --git a/lib/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart b/lib/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart index 609606ec..933824db 100644 --- a/lib/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart +++ b/lib/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart @@ -24,8 +24,9 @@ class PharmacyAddressesPage extends StatefulWidget { final Function changeMainState; final bool isUpdate; + final bool isShippingAddress; - const PharmacyAddressesPage({Key key, this.orderPreviewViewModel, this.isUpdate = false, this.changeMainState}) : super(key: key); + const PharmacyAddressesPage({Key key, this.orderPreviewViewModel, this.isUpdate = false, this.isShippingAddress = false, this.changeMainState}) : super(key: key); @override _PharmacyAddressesState createState() => _PharmacyAddressesState(); @@ -62,7 +63,7 @@ class _PharmacyAddressesState extends State { baseViewModel: model, backgroundColor: Colors.white, body: Container( - height: height * 0.90, + height: widget.isShippingAddress ? height * 0.90 : height * 0.99, child: SingleChildScrollView( child: Column( children: [ @@ -106,52 +107,51 @@ class _PharmacyAddressesState extends State { ), ), ), - bottomSheet: Container( - height: height * 0.10, - color: Colors.white, - child: Column( - children: [ - Divider( - color: Colors.grey.shade300, - height: 1, - thickness: 1, - indent: 0, - endIndent: 0, - ), - Container( - padding: EdgeInsets.symmetric(horizontal: 12, vertical: 8), - child: BorderedButton( - TranslationBase.of(context).confirmAddress, - hasBorder: true, - borderColor: Color(0xFF5AB145), - textColor: Colors.white, - fontWeight: FontWeight.bold, - backgroundColor: Color(0xFF5AB145), - fontSize: 14, - vPadding: 8, - handler: () async { - //TODO Elham* - widget.orderPreviewViewModel.paymentCheckoutData.address = Addresses.fromJson(model.addresses[model.selectedAddressIndex].toJson()); - - GifLoaderDialogUtils.showMyDialog(context); - - await widget.orderPreviewViewModel.getInformationsByAddress(projectProvider.user.patientIdentificationNo); - if (widget.orderPreviewViewModel.error == "") { - await widget.orderPreviewViewModel.getShoppingCart(); - GifLoaderDialogUtils.hideDialog(context); - model.saveSelectedAddressLocally(model.addresses[model.selectedAddressIndex]); - _navigateToPaymentOption(model); - } else { - GifLoaderDialogUtils.hideDialog(context); - AppToast.showErrorToast(message: widget.orderPreviewViewModel.error); - return; - } - }, + bottomSheet: widget.isShippingAddress + ? Container( + height: height * 0.10, + color: Colors.white, + child: Column( + children: [ + Divider( + color: Colors.grey.shade300, + height: 1, + thickness: 1, + indent: 0, + endIndent: 0, + ), + Container( + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 8), + child: BorderedButton( + TranslationBase.of(context).confirmAddress, + hasBorder: true, + borderColor: Color(0xFF5AB145), + textColor: Colors.white, + fontWeight: FontWeight.bold, + backgroundColor: Color(0xFF5AB145), + fontSize: 14, + vPadding: 8, + handler: () async { + widget.orderPreviewViewModel.paymentCheckoutData.address = Addresses.fromJson(model.addresses[model.selectedAddressIndex].toJson()); + GifLoaderDialogUtils.showMyDialog(context); + await widget.orderPreviewViewModel.getInformationsByAddress(projectProvider.user.patientIdentificationNo); + if (widget.orderPreviewViewModel.error == "") { + await widget.orderPreviewViewModel.getShoppingCart(); + GifLoaderDialogUtils.hideDialog(context); + model.saveSelectedAddressLocally(model.addresses[model.selectedAddressIndex]); + _navigateToPaymentOption(model); + } else { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: widget.orderPreviewViewModel.error); + return; + } + }, + ), + ), + ], ), - ), - ], - ), - ), + ) + : SizedBox(), ), ); } diff --git a/lib/pages/pharmacy/profile/profile.dart b/lib/pages/pharmacy/profile/profile.dart index 184cdccc..64fae48d 100644 --- a/lib/pages/pharmacy/profile/profile.dart +++ b/lib/pages/pharmacy/profile/profile.dart @@ -432,7 +432,7 @@ class _ProfilePageState extends State { ), InkWell( onTap: () { - Navigator.push(context, FadePage(page: PharmacyAddressesPage())); + Navigator.push(context, FadePage(page: PharmacyAddressesPage(isShippingAddress: false))); }, child: Row( children: [ diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart index b317e106..83252c75 100644 --- a/lib/services/appointment_services/GetDoctorsList.dart +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -315,7 +315,7 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - Future insertAppointment(int docID, int clinicID, int projectID, String selectedTime, String selectedDate, BuildContext context, [String procedureID]) async { + Future insertAppointment(int docID, int clinicID, int projectID, String selectedTime, String selectedDate, BuildContext context, [String procedureID, num testTypeEnum, num testProcedureEnum]) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -334,6 +334,8 @@ class DoctorsListService extends BaseService { "SelectedTime": selectedTime, "EndTime": selectedTime, "ProcedureID": procedureID, + "TestTypeEnum": testTypeEnum, + "TestProcedureEnum": testProcedureEnum, "InitialSlotDuration": 0, "StrAppointmentDate": selectedDate, "IsVirtual": false, diff --git a/lib/services/covid-drivethru/covid-drivethru.dart b/lib/services/covid-drivethru/covid-drivethru.dart index 38c6b33a..b4241bcc 100644 --- a/lib/services/covid-drivethru/covid-drivethru.dart +++ b/lib/services/covid-drivethru/covid-drivethru.dart @@ -34,14 +34,18 @@ class CovidDriveThruService extends BaseService { return Future.value(localRes); } - Future getCovidTestProceduresList(BuildContext context) async { + Future getCovidTestProceduresList(BuildContext context, num testTypeEnum, num testProcedureEnum, int projectID) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - request = {}; + request = { + "ProjectID": projectID, + "TestTypeEnum": testTypeEnum, + "TestProcedureEnum": testProcedureEnum + }; dynamic localRes; @@ -53,7 +57,7 @@ class CovidDriveThruService extends BaseService { return Future.value(localRes); } - Future getCovidPaymentInformation(BuildContext context, int projectID, String procedureID) async { + Future getCovidPaymentInformation(BuildContext context, int projectID, String procedureID, num testTypeEnum, num testProcedureEnum) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -63,7 +67,9 @@ class CovidDriveThruService extends BaseService { request = { "ProjectID": projectID, - "ProcedureId": procedureID + "ProcedureId": procedureID, + "TestTypeEnum": testTypeEnum, + "TestProcedureEnum": testProcedureEnum }; dynamic localRes; @@ -76,7 +82,7 @@ class CovidDriveThruService extends BaseService { return Future.value(localRes); } - Future getCovidFreeSlots(BuildContext context, int projectID) async { + Future getCovidFreeSlots(BuildContext context, int projectID, num testTypeEnum, num testProcedureEnum) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -86,6 +92,8 @@ class CovidDriveThruService extends BaseService { request = { "ProjectID": projectID, + "TestTypeEnum": testTypeEnum, + "TestProcedureEnum": testProcedureEnum }; dynamic localRes;