covid & pharmacy updates

merge-requests/583/head
haroon amjad 4 years ago
parent eb6b0aefc0
commit e45c2c5652

@ -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",

@ -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<String, dynamic> 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;

@ -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<CovidTimeSlots> with TickerProviderStat
ScrollController _scrollController;
ToDoCountProviderModel toDoProvider;
ProjectViewModel projectViewModel;
@override
void initState() {
@ -113,7 +115,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
projectViewModel = Provider.of(context);
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
return AppScaffold(
appBarTitle: TranslationBase.of(context).covidTest,
@ -359,7 +361,8 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> 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<CovidTimeSlots> 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<CovidTimeSlots> 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<CovidTimeSlots> 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) {

@ -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<CovidTestProceduresResponse> 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<CovidDirveThruQuestions> {
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<CovidDirveThruQuestions> {
covidPaymentInfoResponse: covidPaymentInfoResponse,
projectID: int.parse(projectID),
proceduresList: widget.proceduresList,
selectedProject: widget.selectedProject,
)));
} else {}
}).catchError((err) {

@ -49,7 +49,6 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (projectViewModel.isLogin) {
getProjectsList(context);
getTestProcedures(context);
}
});
super.initState();
@ -129,7 +128,10 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
items: projectsList.map((DriveThroughTestingCenterModel item) {
return new DropdownMenuItem<DriveThroughTestingCenterModel>(
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<CovidDrivethruLocation> {
);
}
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<CovidDrivethruLocation> {
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<CovidDrivethruLocation> {
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<CovidDrivethruLocation> {
covidPaymentInfoResponse: covidPaymentInfoResponse,
projectID: int.parse(projectID),
proceduresList: proceduresList,
selectedProject: selectedProject,
)));
} else {}
}).catchError((err) {
@ -314,7 +335,7 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
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) {

@ -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<CovidTestProceduresResponse> 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<CovidPaymentDetails> {
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<CovidPaymentDetails> {
],
),
),
Container(
decoration: cardRadius(12),
child: Padding(
@ -171,7 +169,6 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
),
),
),
Container(
margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0),
child: Row(
@ -210,7 +207,6 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
),
),
mFlex(1),
Text(
TranslationBase.of(context).payOptions,
textAlign: TextAlign.center,
@ -306,13 +302,7 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
}
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<CovidPaymentDetails> {
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(() {

@ -51,7 +51,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
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));

@ -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<MyReviewsPage> {
),
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<MyReviewsPage> {
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;

@ -437,6 +437,7 @@ class _OrderBottomWidgetState extends State<OrderBottomWidget> {
FadePage(
page: PharmacyAddressesPage(
orderPreviewViewModel: widget.model,
isShippingAddress: true,
))).then((result) async {
if (result != null) {
GifLoaderDialogUtils.showMyDialog(context);

@ -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<PharmacyAddressesPage> {
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: <Widget>[
@ -106,52 +107,51 @@ class _PharmacyAddressesState extends State<PharmacyAddressesPage> {
),
),
),
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(),
),
);
}

@ -432,7 +432,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
),
InkWell(
onTap: () {
Navigator.push(context, FadePage(page: PharmacyAddressesPage()));
Navigator.push(context, FadePage(page: PharmacyAddressesPage(isShippingAddress: false)));
},
child: Row(
children: <Widget>[

@ -315,7 +315,7 @@ class DoctorsListService extends BaseService {
return Future.value(localRes);
}
Future<Map> insertAppointment(int docID, int clinicID, int projectID, String selectedTime, String selectedDate, BuildContext context, [String procedureID]) async {
Future<Map> insertAppointment(int docID, int clinicID, int projectID, String selectedTime, String selectedDate, BuildContext context, [String procedureID, num testTypeEnum, num testProcedureEnum]) async {
Map<String, dynamic> 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,

@ -34,14 +34,18 @@ class CovidDriveThruService extends BaseService {
return Future.value(localRes);
}
Future<Map> getCovidTestProceduresList(BuildContext context) async {
Future<Map> getCovidTestProceduresList(BuildContext context, num testTypeEnum, num testProcedureEnum, int projectID) async {
Map<String, dynamic> 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<Map> getCovidPaymentInformation(BuildContext context, int projectID, String procedureID) async {
Future<Map> getCovidPaymentInformation(BuildContext context, int projectID, String procedureID, num testTypeEnum, num testProcedureEnum) async {
Map<String, dynamic> 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<Map> getCovidFreeSlots(BuildContext context, int projectID) async {
Future<Map> getCovidFreeSlots(BuildContext context, int projectID, num testTypeEnum, num testProcedureEnum) async {
Map<String, dynamic> 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;

Loading…
Cancel
Save