|
|
|
@ -1,28 +1,41 @@
|
|
|
|
|
import 'package:diplomaticquarterapp/config/config.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/routes.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:smart_progress_bar/smart_progress_bar.dart';
|
|
|
|
|
|
|
|
|
|
import 'dialogs/ConfirmSMSDialog.dart';
|
|
|
|
|
import 'new_text_Field.dart';
|
|
|
|
|
import 'package:smart_progress_bar/smart_progress_bar.dart';
|
|
|
|
|
|
|
|
|
|
class ConfirmPaymentPage extends StatelessWidget {
|
|
|
|
|
final AdvanceModel advanceModel;
|
|
|
|
|
final PatientInfoAndMobileNumber patientInfoAndMobileNumber;
|
|
|
|
|
final String selectedPaymentMethod;
|
|
|
|
|
MyInAppBrowser browser;
|
|
|
|
|
AuthenticatedUser authenticatedUser;
|
|
|
|
|
AppSharedPreferences sharedPref = AppSharedPreferences();
|
|
|
|
|
|
|
|
|
|
ConfirmPaymentPage(
|
|
|
|
|
{this.advanceModel,
|
|
|
|
|
this.patientInfoAndMobileNumber,
|
|
|
|
|
this.selectedPaymentMethod});
|
|
|
|
|
this.selectedPaymentMethod,
|
|
|
|
|
this.authenticatedUser});
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
@ -32,9 +45,18 @@ class ConfirmPaymentPage extends StatelessWidget {
|
|
|
|
|
barrierDismissible: false,
|
|
|
|
|
child: ConfirmSMSDialog(
|
|
|
|
|
phoneNumber: patientInfoAndMobileNumber.mobileNumber,
|
|
|
|
|
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
).then((value) {
|
|
|
|
|
print("dialog dismissed");
|
|
|
|
|
print(value);
|
|
|
|
|
if (value != null && value) {
|
|
|
|
|
AppoitmentAllHistoryResultList appo =
|
|
|
|
|
new AppoitmentAllHistoryResultList();
|
|
|
|
|
appo.projectID = patientInfoAndMobileNumber.projectID;
|
|
|
|
|
openPayment(selectedPaymentMethod, authenticatedUser,
|
|
|
|
|
double.parse(advanceModel.amount), appo);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return BaseView<MyBalanceViewModel>(
|
|
|
|
@ -139,7 +161,8 @@ class ConfirmPaymentPage extends StatelessWidget {
|
|
|
|
|
onTap: () {
|
|
|
|
|
model
|
|
|
|
|
.sendActivationCodeForAdvancePayment(
|
|
|
|
|
patientID: int.parse(advanceModel.fileNumber),projectID: advanceModel.hospitalsModel.iD)
|
|
|
|
|
patientID: int.parse(advanceModel.fileNumber),
|
|
|
|
|
projectID: advanceModel.hospitalsModel.iD)
|
|
|
|
|
.then((value) {
|
|
|
|
|
if (model.state != ViewState.ErrorLocal &&
|
|
|
|
|
model.state != ViewState.Error) showSMSDialog();
|
|
|
|
@ -174,4 +197,110 @@ class ConfirmPaymentPage extends StatelessWidget {
|
|
|
|
|
|
|
|
|
|
return 'assets/images/new-design/mada.png';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
openPayment(String paymentMethod, AuthenticatedUser authenticatedUser,
|
|
|
|
|
double amount, AppoitmentAllHistoryResultList appo) {
|
|
|
|
|
browser = new MyInAppBrowser(
|
|
|
|
|
onExitCallback: onBrowserExit,
|
|
|
|
|
appo: appo,
|
|
|
|
|
onLoadStartCallback: onBrowserLoadStart);
|
|
|
|
|
|
|
|
|
|
browser.openPaymentBrowser(
|
|
|
|
|
amount,
|
|
|
|
|
"Advance Payment",
|
|
|
|
|
Utils.getAdvancePaymentTransID(
|
|
|
|
|
authenticatedUser.projectID, authenticatedUser.patientID),
|
|
|
|
|
appo.projectID.toString(),
|
|
|
|
|
authenticatedUser.emailAddress,
|
|
|
|
|
paymentMethod,
|
|
|
|
|
authenticatedUser,
|
|
|
|
|
browser);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onBrowserLoadStart(String url) {
|
|
|
|
|
print("onBrowserLoadStart");
|
|
|
|
|
print(url);
|
|
|
|
|
|
|
|
|
|
MyInAppBrowser.successURLS.forEach((element) {
|
|
|
|
|
if (url.contains(element)) {
|
|
|
|
|
if (browser.isOpened()) browser.close();
|
|
|
|
|
MyInAppBrowser.isPaymentDone = true;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
MyInAppBrowser.errorURLS.forEach((element) {
|
|
|
|
|
if (url.contains(element)) {
|
|
|
|
|
if (browser.isOpened()) browser.close();
|
|
|
|
|
MyInAppBrowser.isPaymentDone = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onBrowserExit(AppoitmentAllHistoryResultList appo, bool isPaymentMade) {
|
|
|
|
|
print("onBrowserExit Called!!!!");
|
|
|
|
|
if (isPaymentMade) checkPaymentStatus(appo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
checkPaymentStatus(AppoitmentAllHistoryResultList appo) {
|
|
|
|
|
DoctorsListService service = new DoctorsListService();
|
|
|
|
|
service
|
|
|
|
|
.checkPaymentStatus(
|
|
|
|
|
Utils.getAppointmentTransID(
|
|
|
|
|
appo.projectID, appo.clinicID, appo.appointmentNo),
|
|
|
|
|
AppGlobal.context)
|
|
|
|
|
.then((res) {
|
|
|
|
|
print("Printing Payment Status Reponse!!!!");
|
|
|
|
|
print(res);
|
|
|
|
|
String paymentInfo = res['Response_Message'];
|
|
|
|
|
if (paymentInfo == 'Success') {
|
|
|
|
|
createAdvancePayment(res, appo);
|
|
|
|
|
} else {
|
|
|
|
|
AppToast.showErrorToast(message: res['Response_Message']);
|
|
|
|
|
}
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
print(err);
|
|
|
|
|
}).showProgressBar(
|
|
|
|
|
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
createAdvancePayment(res, AppoitmentAllHistoryResultList appo) {
|
|
|
|
|
DoctorsListService service = new DoctorsListService();
|
|
|
|
|
String paymentReference = res['Fort_id'].toString();
|
|
|
|
|
service
|
|
|
|
|
.createAdvancePayment(appo, res['Amount'], res['Fort_id'],
|
|
|
|
|
res['PaymentMethod'], AppGlobal.context)
|
|
|
|
|
.then((res) {
|
|
|
|
|
print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']);
|
|
|
|
|
addAdvancedNumberRequest(
|
|
|
|
|
res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(),
|
|
|
|
|
paymentReference,
|
|
|
|
|
appo.appointmentNo.toString(),
|
|
|
|
|
appo);
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
print(err);
|
|
|
|
|
}).showProgressBar(
|
|
|
|
|
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
addAdvancedNumberRequest(String advanceNumber, String paymentReference,
|
|
|
|
|
String appointmentID, AppoitmentAllHistoryResultList appo) {
|
|
|
|
|
DoctorsListService service = new DoctorsListService();
|
|
|
|
|
service
|
|
|
|
|
.addAdvancedNumberRequest(
|
|
|
|
|
advanceNumber, paymentReference, appointmentID, AppGlobal.context)
|
|
|
|
|
.then((res) {
|
|
|
|
|
print(res);
|
|
|
|
|
navigateToHome(AppGlobal.context);
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
print(err);
|
|
|
|
|
}).showProgressBar(
|
|
|
|
|
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future navigateToHome(context) async {
|
|
|
|
|
Navigator.of(context).pushNamed(HOME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|