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": "تم تحديث البريد الالكتروني"}, "updated-email": {"en": "Updated email successfully", "ar": "تم تحديث البريد الالكتروني"},
"view-list-children": {"en": "View List of Children", "ar": "عرض قائمة الأطفال"}, "view-list-children": {"en": "View List of Children", "ar": "عرض قائمة الأطفال"},
"covidTest": {"en": "COVID-19 TEST", "ar": "فحص كورونا"}, "covidTest": {"en": "COVID-19", "ar": "فحص"},
"driveThru": {"en": "Drive-Thru", "ar": "من داخل السيارة"}, "driveThru": {"en": "Test", "ar": "كورونا"},
"trackDeliveryDriver": {"en": "Track Delivery Driver", "ar": "تتبع السائق"}, "trackDeliveryDriver": {"en": "Track Delivery Driver", "ar": "تتبع السائق"},
"NearestErDesc": { "NearestErDesc": {
"en": "This service Displays nearest branch among all the branches of All Habib medical Group based on your current Location", "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; bool isActive;
int createdBy; int createdBy;
String createdOn; String createdOn;
num testTypeEnum;
num testProcedureEnum;
dynamic editedBy; dynamic editedBy;
dynamic editedON; dynamic editedON;
dynamic projectName; dynamic projectName;
@ -16,19 +18,21 @@ class DriveThroughTestingCenterModel {
DriveThroughTestingCenterModel( DriveThroughTestingCenterModel(
{this.rowID, {this.rowID,
this.iD, this.iD,
this.projectID, this.projectID,
this.setupID, this.setupID,
this.longitude, this.longitude,
this.latitude, this.latitude,
this.numberOfTracks, this.numberOfTracks,
this.isActive, this.isActive,
this.createdBy, this.createdBy,
this.createdOn, this.createdOn,
this.editedBy, this.testTypeEnum,
this.editedON, this.testProcedureEnum,
this.projectName, this.editedBy,
this.projectNameN}); this.editedON,
this.projectName,
this.projectNameN});
DriveThroughTestingCenterModel.fromJson(Map<String, dynamic> json) { DriveThroughTestingCenterModel.fromJson(Map<String, dynamic> json) {
rowID = json['RowID']; rowID = json['RowID'];
@ -41,6 +45,8 @@ class DriveThroughTestingCenterModel {
isActive = json['IsActive']; isActive = json['IsActive'];
createdBy = json['CreatedBy']; createdBy = json['CreatedBy'];
createdOn = json['CreatedOn']; createdOn = json['CreatedOn'];
testTypeEnum = json['TestTypeEnum'];
testProcedureEnum = json['TestprocedureEnum'];
editedBy = json['EditedBy']; editedBy = json['EditedBy'];
editedON = json['EditedON']; editedON = json['EditedON'];
projectName = json['ProjectName']; projectName = json['ProjectName'];
@ -59,6 +65,8 @@ class DriveThroughTestingCenterModel {
data['IsActive'] = this.isActive; data['IsActive'] = this.isActive;
data['CreatedBy'] = this.createdBy; data['CreatedBy'] = this.createdBy;
data['CreatedOn'] = this.createdOn; data['CreatedOn'] = this.createdOn;
data['TestTypeEnum'] = this.testTypeEnum;
data['TestprocedureEnum'] = this.testProcedureEnum;
data['EditedBy'] = this.editedBy; data['EditedBy'] = this.editedBy;
data['EditedON'] = this.editedON; data['EditedON'] = this.editedON;
data['ProjectName'] = this.projectName; 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/timeSlot.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.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/pages/Covid-DriveThru/covid-payment-alert.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.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:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart'; import 'package:syncfusion_flutter_calendar/calendar.dart';
class CovidTimeSlots extends StatefulWidget { class CovidTimeSlots extends StatefulWidget {
@ -33,6 +33,7 @@ class CovidTimeSlots extends StatefulWidget {
static String selectedDate; static String selectedDate;
static String selectedTime; static String selectedTime;
CovidTestProceduresResponse selectedProcedure; CovidTestProceduresResponse selectedProcedure;
DriveThroughTestingCenterModel selectedProject;
int selectedClinicID; int selectedClinicID;
int selectedDoctorID; int selectedDoctorID;
@ -41,7 +42,7 @@ class CovidTimeSlots extends StatefulWidget {
PatientShareResponse patientShareResponse; PatientShareResponse patientShareResponse;
CovidTimeSlots({@required this.projectID, @required this.selectedProcedure}); CovidTimeSlots({@required this.projectID, @required this.selectedProcedure, @required this.selectedProject});
@override @override
_CovidTimeSlotsState createState() => _CovidTimeSlotsState(); _CovidTimeSlotsState createState() => _CovidTimeSlotsState();
@ -68,6 +69,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
ScrollController _scrollController; ScrollController _scrollController;
ToDoCountProviderModel toDoProvider; ToDoCountProviderModel toDoProvider;
ProjectViewModel projectViewModel;
@override @override
void initState() { void initState() {
@ -113,7 +115,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
toDoProvider = Provider.of<ToDoCountProviderModel>(context); toDoProvider = Provider.of<ToDoCountProviderModel>(context);
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).covidTest, appBarTitle: TranslationBase.of(context).covidTest,
@ -359,7 +361,8 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
Widget getSelectedButton(int index) { Widget getSelectedButton(int index) {
return RaisedButton( return RaisedButton(
color: CustomColors.green, //Color of the border color: CustomColors.green,
//Color of the border
elevation: 0, elevation: 0,
textColor: Colors.white, textColor: Colors.white,
onPressed: () { onPressed: () {
@ -374,13 +377,36 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
} }
bookCovidTestAppointment() { bookCovidTestAppointment() {
if(CovidTimeSlots.areSlotsAvailable) { if (CovidTimeSlots.areSlotsAvailable) {
GifLoaderDialogUtils.showMyDialog(context); var messageEn = "This Appointment is being booked for patient " +
DoctorList docObject = new DoctorList(); projectViewModel.authenticatedUserObject.user.firstName +
docObject.doctorID = widget.selectedDoctorID; " " +
docObject.clinicID = widget.selectedClinicID; projectViewModel.authenticatedUserObject.user.lastName +
docObject.projectID = widget.projectID; ", Having file number " +
insertAppointmentCovidTest(context, docObject); 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 { } else {
AppToast.showErrorToast(message: TranslationBase.of(context).selectSlot); AppToast.showErrorToast(message: TranslationBase.of(context).selectSlot);
} }
@ -390,7 +416,8 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
AppoitmentAllHistoryResultList appo; AppoitmentAllHistoryResultList appo;
service 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) { .then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: TranslationBase.of(context).bookedSuccess); AppToast.showSuccessToast(message: TranslationBase.of(context).bookedSuccess);
@ -482,7 +509,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
getCovidFreeSlots(BuildContext context, int projectID) { getCovidFreeSlots(BuildContext context, int projectID) {
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
service.getCovidFreeSlots(context, projectID).then((res) { service.getCovidFreeSlots(context, projectID, widget.selectedProject.testTypeEnum, widget.selectedProject.testProcedureEnum).then((res) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
if (res['COVID19_FreeTimeSlots'].length != 0) { 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/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart';
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.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/pages/medical/labs/passport_update_page.dart';
import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart'; import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
@ -21,8 +22,9 @@ import 'covid-payment-details.dart';
class CovidDirveThruQuestions extends StatefulWidget { class CovidDirveThruQuestions extends StatefulWidget {
final String projectId; final String projectId;
final List<CovidTestProceduresResponse> proceduresList; final List<CovidTestProceduresResponse> proceduresList;
DriveThroughTestingCenterModel selectedProject;
CovidDirveThruQuestions({@required this.projectId, @required this.proceduresList}); CovidDirveThruQuestions({@required this.projectId, @required this.proceduresList, @required this.selectedProject});
@override @override
CovidDirveThruQuestionsState createState() => CovidDirveThruQuestionsState(); CovidDirveThruQuestionsState createState() => CovidDirveThruQuestionsState();
@ -296,7 +298,7 @@ class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse(); CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse();
GifLoaderDialogUtils.showMyDialog(context); 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); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
covidPaymentInfoResponse = CovidPaymentInfoResponse.fromJson(res['COVID19_PatientShare']); covidPaymentInfoResponse = CovidPaymentInfoResponse.fromJson(res['COVID19_PatientShare']);
@ -307,6 +309,7 @@ class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
covidPaymentInfoResponse: covidPaymentInfoResponse, covidPaymentInfoResponse: covidPaymentInfoResponse,
projectID: int.parse(projectID), projectID: int.parse(projectID),
proceduresList: widget.proceduresList, proceduresList: widget.proceduresList,
selectedProject: widget.selectedProject,
))); )));
} else {} } else {}
}).catchError((err) { }).catchError((err) {

@ -49,7 +49,6 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
if (projectViewModel.isLogin) { if (projectViewModel.isLogin) {
getProjectsList(context); getProjectsList(context);
getTestProcedures(context);
} }
}); });
super.initState(); super.initState();
@ -129,7 +128,10 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
items: projectsList.map((DriveThroughTestingCenterModel item) { items: projectsList.map((DriveThroughTestingCenterModel item) {
return new DropdownMenuItem<DriveThroughTestingCenterModel>( return new DropdownMenuItem<DriveThroughTestingCenterModel>(
value: item, value: item,
child: new Text(item.projectName), child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Text(item.projectName), getCovidTestTypeImage(item)],
),
); );
}).toList(), }).toList(),
onChanged: (newValue) { 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() { getDirections() {
if (isLocationSelected) { if (isLocationSelected) {
MapsLauncher.launchCoordinates(double.parse(projectLat), double.parse(projectLong), this.projectName); MapsLauncher.launchCoordinates(double.parse(projectLat), double.parse(projectLong), this.projectName);
@ -266,7 +285,7 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
next() { next() {
if (isLocationSelected) { 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 { } else {
Utils.showErrorToast("Please select address from the dropdown menu to continue"); 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(); this.projectID = newValue.projectID.toString();
isLocationSelected = true; isLocationSelected = true;
}); });
getTestProcedures(context);
} }
getPaymentInfo(BuildContext context, String projectID) { getPaymentInfo(BuildContext context, String projectID) {
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse(); CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse();
GifLoaderDialogUtils.showMyDialog(context); 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); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
@ -303,6 +323,7 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
covidPaymentInfoResponse: covidPaymentInfoResponse, covidPaymentInfoResponse: covidPaymentInfoResponse,
projectID: int.parse(projectID), projectID: int.parse(projectID),
proceduresList: proceduresList, proceduresList: proceduresList,
selectedProject: selectedProject,
))); )));
} else {} } else {}
}).catchError((err) { }).catchError((err) {
@ -314,7 +335,7 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
service.getCovidTestProceduresList(context).then((res) { service.getCovidTestProceduresList(context, selectedProject.testTypeEnum, selectedProject.testProcedureEnum, selectedProject.projectID).then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
res['COVID19_TestProceduresList'].forEach((v) { res['COVID19_TestProceduresList'].forEach((v) {

@ -1,17 +1,16 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart'; import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart';
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.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/pages/Covid-DriveThru/Covid-TimeSlots.dart';
import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart'; import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.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/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class CovidPaymentDetails extends StatefulWidget { class CovidPaymentDetails extends StatefulWidget {
@ -19,8 +18,9 @@ class CovidPaymentDetails extends StatefulWidget {
int projectID; int projectID;
List<CovidTestProceduresResponse> proceduresList; List<CovidTestProceduresResponse> proceduresList;
CovidTestProceduresResponse selectedProcedure; 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 @override
_CovidPaymentDetailsState createState() => _CovidPaymentDetailsState(); _CovidPaymentDetailsState createState() => _CovidPaymentDetailsState();
@ -89,7 +89,6 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
getPaymentInfo(context, widget.projectID.toString(), widget.selectedProcedure.procedureID); getPaymentInfo(context, widget.projectID.toString(), widget.selectedProcedure.procedureID);
}); });
}, },
), ),
Text( Text(
projectViewModel.isArabic ? widget.proceduresList[index].procedureNameN : widget.proceduresList[index].procedureName, projectViewModel.isArabic ? widget.proceduresList[index].procedureNameN : widget.proceduresList[index].procedureName,
@ -108,7 +107,6 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
], ],
), ),
), ),
Container( Container(
decoration: cardRadius(12), decoration: cardRadius(12),
child: Padding( child: Padding(
@ -171,7 +169,6 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
), ),
), ),
), ),
Container( Container(
margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0), margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0),
child: Row( child: Row(
@ -210,7 +207,6 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
), ),
), ),
mFlex(1), mFlex(1),
Text( Text(
TranslationBase.of(context).payOptions, TranslationBase.of(context).payOptions,
textAlign: TextAlign.center, textAlign: TextAlign.center,
@ -306,13 +302,7 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
} }
void next() { void next() {
Navigator.push( Navigator.push(context, FadePage(page: CovidTimeSlots(projectID: widget.projectID, selectedProcedure: widget.selectedProcedure, selectedProject: widget.selectedProject)));
context,
FadePage(
page: CovidTimeSlots(
projectID: widget.projectID,
selectedProcedure: widget.selectedProcedure,
)));
} }
cancel() { cancel() {
@ -322,7 +312,7 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
getPaymentInfo(BuildContext context, String projectID, String selectedProcedureID) { getPaymentInfo(BuildContext context, String projectID, String selectedProcedureID) {
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
GifLoaderDialogUtils.showMyDialog(context); 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); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {

@ -51,7 +51,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
initialiseHmgServices(bool isLogin) { initialiseHmgServices(bool isLogin) {
hmgServices.clear(); 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(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(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(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)); 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/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:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:rating_bar/rating_bar.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 { class MyReviewsPage extends StatefulWidget {
@override @override
@ -47,7 +47,8 @@ class _MyReviewsPageState extends State<MyReviewsPage> {
), ),
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Text(TranslationBase.of(context).noData, child: Text(
TranslationBase.of(context).noData,
// 'There is no data', // 'There is no data',
style: TextStyle(fontSize: 30), style: TextStyle(fontSize: 30),
), ),
@ -65,11 +66,8 @@ class _MyReviewsPageState extends State<MyReviewsPage> {
Container( Container(
child: reviewDetails( child: reviewDetails(
model.reviewListList[index], model.reviewListList[index],
double.parse(model.reviewListList[index].product double.parse(model.reviewListList[index].product.approvedTotalReviews.toString()),
.approvedTotalReviews double.parse(model.reviewListList[index].rating.toString()),
.toString()),
double.parse(model.reviewListList[index].rating
.toString()),
), ),
), ),
Divider(height: 1, color: Colors.grey) Divider(height: 1, color: Colors.grey)
@ -97,9 +95,7 @@ reviewDetails(data, rate, myRate) {
Row( Row(
children: [ children: [
Container( Container(
margin: languageID == 'ar' margin: languageID == 'ar' ? EdgeInsets.only(top: 10, right: 10) : EdgeInsets.only(top: 10, left: 10),
? EdgeInsets.only(top: 10, right: 10)
: EdgeInsets.only(top: 10, left: 10),
child: Image.network( child: Image.network(
data.product.images[0].src.trim(), data.product.images[0].src.trim(),
fit: BoxFit.cover, fit: BoxFit.cover,
@ -114,18 +110,11 @@ reviewDetails(data, rate, myRate) {
Container( Container(
margin: EdgeInsets.all(5), margin: EdgeInsets.all(5),
child: Align( child: Align(
alignment: languageID == 'ar' alignment: languageID == 'ar' ? Alignment.topRight : Alignment.topLeft,
? Alignment.topRight
: Alignment.topLeft,
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: languageID == 'ar' text: languageID == 'ar' ? data.product.namen : data.product.name,
? data.product.namen style: TextStyle(color: Colors.black54, fontSize: languageID == 'ar' ? 12 : 13, fontWeight: FontWeight.bold),
: 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( Container(
margin: EdgeInsets.all(5), margin: EdgeInsets.all(5),
child: Align( child: Align(
alignment: languageID == 'ar' alignment: languageID == 'ar' ? Alignment.topRight : Alignment.topLeft,
? Alignment.topRight
: Alignment.topLeft,
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: data.product.quantity.toString() + text: data.product.price.toString() + " " + data.product.currency,
" " + style: TextStyle(fontWeight: FontWeight.bold, color: Colors.black, fontSize: 13),
data.product.currency,
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black,
fontSize: 13),
), ),
), ),
), ),
@ -156,9 +138,7 @@ reviewDetails(data, rate, myRate) {
Container( Container(
margin: EdgeInsets.all(5), margin: EdgeInsets.all(5),
child: Align( child: Align(
alignment: languageID == 'ar' alignment: languageID == 'ar' ? Alignment.topRight : Alignment.topLeft,
? Alignment.topRight
: Alignment.topLeft,
child: RatingBar.readOnly( child: RatingBar.readOnly(
initialRating: rate, initialRating: rate,
size: 15.0, size: 15.0,
@ -186,11 +166,7 @@ reviewDetails(data, rate, myRate) {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Container( Container(padding: languageID == 'ar' ? EdgeInsets.only(right: 10) : EdgeInsets.only(left: 10), child: Text(data.createdOnUtc.toString().substring(0, 11))),
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, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
Container( Container(
padding: languageID == 'ar' padding: languageID == 'ar' ? EdgeInsets.only(right: 60) : EdgeInsets.only(left: 60),
? EdgeInsets.only(right: 60)
: EdgeInsets.only(left: 60),
child: RatingBar.readOnly( child: RatingBar.readOnly(
initialRating: myRate, initialRating: myRate,
size: 15.0, size: 15.0,
@ -225,10 +199,8 @@ reviewDetails(data, rate, myRate) {
), ),
Expanded( Expanded(
child: Container( child: Container(
padding: languageID == 'ar' padding: languageID == 'ar' ? EdgeInsets.only(right: 10) : EdgeInsets.only(left: 10),
? EdgeInsets.only(right: 10) child: Text(getReview(data) ?? ""),
: EdgeInsets.only(left: 10),
child: Text(fixingString(data.reviewText.toString())),
), ),
), ),
], ],
@ -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) { fixingString(txt) {
String stringTxt; String stringTxt;
String newTxt; String newTxt;

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

@ -24,8 +24,9 @@ class PharmacyAddressesPage extends StatefulWidget {
final Function changeMainState; final Function changeMainState;
final bool isUpdate; 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 @override
_PharmacyAddressesState createState() => _PharmacyAddressesState(); _PharmacyAddressesState createState() => _PharmacyAddressesState();
@ -62,7 +63,7 @@ class _PharmacyAddressesState extends State<PharmacyAddressesPage> {
baseViewModel: model, baseViewModel: model,
backgroundColor: Colors.white, backgroundColor: Colors.white,
body: Container( body: Container(
height: height * 0.90, height: widget.isShippingAddress ? height * 0.90 : height * 0.99,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
@ -106,52 +107,51 @@ class _PharmacyAddressesState extends State<PharmacyAddressesPage> {
), ),
), ),
), ),
bottomSheet: Container( bottomSheet: widget.isShippingAddress
height: height * 0.10, ? Container(
color: Colors.white, height: height * 0.10,
child: Column( color: Colors.white,
children: [ child: Column(
Divider( children: [
color: Colors.grey.shade300, Divider(
height: 1, color: Colors.grey.shade300,
thickness: 1, height: 1,
indent: 0, thickness: 1,
endIndent: 0, indent: 0,
), endIndent: 0,
Container( ),
padding: EdgeInsets.symmetric(horizontal: 12, vertical: 8), Container(
child: BorderedButton( padding: EdgeInsets.symmetric(horizontal: 12, vertical: 8),
TranslationBase.of(context).confirmAddress, child: BorderedButton(
hasBorder: true, TranslationBase.of(context).confirmAddress,
borderColor: Color(0xFF5AB145), hasBorder: true,
textColor: Colors.white, borderColor: Color(0xFF5AB145),
fontWeight: FontWeight.bold, textColor: Colors.white,
backgroundColor: Color(0xFF5AB145), fontWeight: FontWeight.bold,
fontSize: 14, backgroundColor: Color(0xFF5AB145),
vPadding: 8, fontSize: 14,
handler: () async { vPadding: 8,
//TODO Elham* handler: () async {
widget.orderPreviewViewModel.paymentCheckoutData.address = Addresses.fromJson(model.addresses[model.selectedAddressIndex].toJson()); widget.orderPreviewViewModel.paymentCheckoutData.address = Addresses.fromJson(model.addresses[model.selectedAddressIndex].toJson());
GifLoaderDialogUtils.showMyDialog(context);
GifLoaderDialogUtils.showMyDialog(context); await widget.orderPreviewViewModel.getInformationsByAddress(projectProvider.user.patientIdentificationNo);
if (widget.orderPreviewViewModel.error == "") {
await widget.orderPreviewViewModel.getInformationsByAddress(projectProvider.user.patientIdentificationNo); await widget.orderPreviewViewModel.getShoppingCart();
if (widget.orderPreviewViewModel.error == "") { GifLoaderDialogUtils.hideDialog(context);
await widget.orderPreviewViewModel.getShoppingCart(); model.saveSelectedAddressLocally(model.addresses[model.selectedAddressIndex]);
GifLoaderDialogUtils.hideDialog(context); _navigateToPaymentOption(model);
model.saveSelectedAddressLocally(model.addresses[model.selectedAddressIndex]); } else {
_navigateToPaymentOption(model); GifLoaderDialogUtils.hideDialog(context);
} else { AppToast.showErrorToast(message: widget.orderPreviewViewModel.error);
GifLoaderDialogUtils.hideDialog(context); return;
AppToast.showErrorToast(message: widget.orderPreviewViewModel.error); }
return; },
} ),
}, ),
],
), ),
), )
], : SizedBox(),
),
),
), ),
); );
} }

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

@ -315,7 +315,7 @@ class DoctorsListService extends BaseService {
return Future.value(localRes); 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; Map<String, dynamic> request;
if (await this.sharedPref.getObject(USER_PROFILE) != null) { if (await this.sharedPref.getObject(USER_PROFILE) != null) {
@ -334,6 +334,8 @@ class DoctorsListService extends BaseService {
"SelectedTime": selectedTime, "SelectedTime": selectedTime,
"EndTime": selectedTime, "EndTime": selectedTime,
"ProcedureID": procedureID, "ProcedureID": procedureID,
"TestTypeEnum": testTypeEnum,
"TestProcedureEnum": testProcedureEnum,
"InitialSlotDuration": 0, "InitialSlotDuration": 0,
"StrAppointmentDate": selectedDate, "StrAppointmentDate": selectedDate,
"IsVirtual": false, "IsVirtual": false,

@ -34,14 +34,18 @@ class CovidDriveThruService extends BaseService {
return Future.value(localRes); 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; Map<String, dynamic> request;
if (await this.sharedPref.getObject(USER_PROFILE) != null) { if (await this.sharedPref.getObject(USER_PROFILE) != null) {
var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE));
authUser = data; authUser = data;
} }
request = {}; request = {
"ProjectID": projectID,
"TestTypeEnum": testTypeEnum,
"TestProcedureEnum": testProcedureEnum
};
dynamic localRes; dynamic localRes;
@ -53,7 +57,7 @@ class CovidDriveThruService extends BaseService {
return Future.value(localRes); 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; Map<String, dynamic> request;
if (await this.sharedPref.getObject(USER_PROFILE) != null) { if (await this.sharedPref.getObject(USER_PROFILE) != null) {
@ -63,7 +67,9 @@ class CovidDriveThruService extends BaseService {
request = { request = {
"ProjectID": projectID, "ProjectID": projectID,
"ProcedureId": procedureID "ProcedureId": procedureID,
"TestTypeEnum": testTypeEnum,
"TestProcedureEnum": testProcedureEnum
}; };
dynamic localRes; dynamic localRes;
@ -76,7 +82,7 @@ class CovidDriveThruService extends BaseService {
return Future.value(localRes); 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; Map<String, dynamic> request;
if (await this.sharedPref.getObject(USER_PROFILE) != null) { if (await this.sharedPref.getObject(USER_PROFILE) != null) {
@ -86,6 +92,8 @@ class CovidDriveThruService extends BaseService {
request = { request = {
"ProjectID": projectID, "ProjectID": projectID,
"TestTypeEnum": testTypeEnum,
"TestProcedureEnum": testProcedureEnum
}; };
dynamic localRes; dynamic localRes;

Loading…
Cancel
Save