diff --git a/android/app/build.gradle b/android/app/build.gradle
index 9640ea61..5d196986 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -27,7 +27,7 @@ apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion 28
+ compileSdkVersion 30
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -41,19 +41,28 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.cloud.diplomaticquarterapp"
minSdkVersion 21
- targetSdkVersion 28
+ targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
-
+
}
buildTypes {
+ debug {}
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
+ staging {
+ // Specifies a sorted list of fallback build types that the
+ // plugin should try to use when a dependency does not include a
+ // "staging" build type. You may specify as many fallbacks as you
+ // like, and the plugin selects the first build type that's
+ // available in the dependency.
+ matchingFallbacks = ['debug', 'qa', 'release']
+ }
}
}
@@ -63,8 +72,15 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- implementation "com.google.firebase:firebase-messaging:20.1.0"
- implementation 'pub.devrel:easypermissions:0.4.0'
-
-
+ implementation "com.google.firebase:firebase-messaging:20.3.0"
+ implementation 'pub.devrel:easypermissions:0.4.0'
+ implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
+ implementation 'com.google.guava:guava:27.0.1-android'
+ // Dependency on local binaries
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+ // Dependency on a remote binary
+// implementation 'com.example.android:app-magic:12.3'
+
+
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 8c32edfd..749928d0 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -73,7 +73,7 @@
android:value="2" />
+ android:value="AIzaSyDiXnCO00li4V7Ioa2YZ_M4ECxRsu_P9tA"/>
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 70693e4a..23dd69b8 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,5 +1,6 @@
import UIKit
import Flutter
+import GoogleMaps
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
@@ -7,6 +8,7 @@ import Flutter
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
+ GMSServices.provideAPIKey("AIzaSyCiiJiHkocPbcziHt9O8rGWavDrxHRQys8")
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
diff --git a/lib/config/config.dart b/lib/config/config.dart
index a3ce19e9..6513f03b 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -6,7 +6,7 @@ import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
const MAX_SMALL_SCREEN = 660;
-const BASE_URL = 'https://hmgwebservices.com/';
+const BASE_URL = 'https://uat.hmgwebservices.com/';
const GET_PROJECT = 'Services/Lists.svc/REST/GetProject';
@@ -60,6 +60,7 @@ const GET_NEAREST_HOSPITAL =
const GET_AMBULANCE_REQUEST = 'Services/Patients.svc/REST/PatientER_RRT_GetAllTransportationMethod';
const GET_PATIENT_ALL_PRES_ORDERS= 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders';
const GET_PICK_UP_REQUEST_BY_PRES_ORDER_ID= 'Services/Patients.svc/REST/PatientER_RRT_GetPickUpRequestByPresOrderID';
+const UPDATE_PRESS_ORDER= 'Services/Patients.svc/REST/PatientER_UpdatePresOrder';
///FindUs
const GET_FINDUS_REQUEST = 'Services/Lists.svc/REST/Get_HMG_Locations';
diff --git a/lib/core/model/er/PatientER.dart b/lib/core/model/er/PatientER.dart
index d0827311..f1694f9e 100644
--- a/lib/core/model/er/PatientER.dart
+++ b/lib/core/model/er/PatientER.dart
@@ -36,7 +36,7 @@ class PatientER {
int projectID;
int createdBy;
int lineItemNo;
- int cost;
+ double cost;
double vAT;
double totalPrice;
String pickupLocationLattitude;
diff --git a/lib/core/model/er/PickUpRequestPresOrder.dart b/lib/core/model/er/PickUpRequestPresOrder.dart
index 9ce3e678..376e30ae 100644
--- a/lib/core/model/er/PickUpRequestPresOrder.dart
+++ b/lib/core/model/er/PickUpRequestPresOrder.dart
@@ -18,7 +18,7 @@ class PickUpRequestPresOrder {
int pickupSpot;
dynamic dropoffLocationId;
int transportationMethodId;
- int cost;
+ double cost;
double vAT;
double totalPrice;
int amountCollected;
diff --git a/lib/core/service/er/am_service.dart b/lib/core/service/er/am_service.dart
index b654e0eb..1e8480d4 100644
--- a/lib/core/service/er/am_service.dart
+++ b/lib/core/service/er/am_service.dart
@@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/core/enum/OrderService.dart';
import 'package:diplomaticquarterapp/core/model/er/PatientAllPresOrders.dart';
import 'package:diplomaticquarterapp/core/model/er/PickUpRequestPresOrder.dart';
import 'package:diplomaticquarterapp/core/model/er/get_all_transportation_method_list_model.dart';
+import 'package:flutter/cupertino.dart';
import '../base_service.dart';
class AmService extends BaseService {
@@ -35,6 +36,7 @@ class AmService extends BaseService {
Future getPatientAllPresOrdersList() async {
hasError = false;
hasPendingOrder = false;
+ pickUpRequestPresOrder = null;
await baseAppClient.post(GET_PATIENT_ALL_PRES_ORDERS,
onSuccess: (dynamic response, int statusCode) {
patientAllPresOrdersList.clear();
@@ -58,12 +60,11 @@ class AmService extends BaseService {
Future getOrderDetails() async {
hasError = false;
- hasPendingOrder = false;
Map body = Map();
body['PresOrderID'] = pendingOrderID;
+ body['isDentalAllowedBackend'] = false;
await baseAppClient.post(GET_PICK_UP_REQUEST_BY_PRES_ORDER_ID,
onSuccess: (dynamic response, int statusCode) {
- patientAllPresOrdersList.clear();
response['PatientER_RRT_GetPickUpRequestByPresOrderIDList']
.forEach((item) {
pickUpRequestPresOrder = PickUpRequestPresOrder.fromJson(item);
@@ -71,6 +72,23 @@ class AmService extends BaseService {
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
- }, body: Map());
+ }, body: body);
+ }
+
+ Future updatePressOrder({@required int presOrderID}) async {
+ hasError = false;
+ Map body = Map();
+ body['PresOrderID'] = presOrderID;
+ body['EditedBy'] = 3;
+ body['RejectionReason'] = '';
+ body['PresOrderStatus'] = OrderService.AMBULANCE.getIdOrderService();
+ body['isDentalAllowedBackend'] = false;
+ await baseAppClient.post(UPDATE_PRESS_ORDER,
+ onSuccess: (dynamic response, int statusCode) {
+
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
}
}
diff --git a/lib/core/viewModels/er/am_request_view_model.dart b/lib/core/viewModels/er/am_request_view_model.dart
index fbd3d95d..222a3f8c 100644
--- a/lib/core/viewModels/er/am_request_view_model.dart
+++ b/lib/core/viewModels/er/am_request_view_model.dart
@@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/er/PatientAllPresOrders.dart';
+import 'package:diplomaticquarterapp/core/model/er/PickUpRequestPresOrder.dart';
import 'package:diplomaticquarterapp/core/model/er/get_all_transportation_method_list_model.dart';
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
import 'package:diplomaticquarterapp/core/service/er/am_service.dart';
@@ -7,6 +8,7 @@ import 'package:diplomaticquarterapp/core/service/hospital_service.dart';
import 'package:diplomaticquarterapp/core/service/medical/medical_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
+import 'package:flutter/cupertino.dart';
import '../base_view_model.dart';
import '../../../locator.dart';
@@ -28,6 +30,8 @@ class AmRequestViewModel extends BaseViewModel {
bool get hasPendingOrder =>_amService.hasPendingOrder;
+ PickUpRequestPresOrder get pickUpRequestPresOrder =>_amService.pickUpRequestPresOrder;
+
Future getAppointmentHistory() async {
setState(ViewState.BusyLocal);
await _medicalService.getAppointmentHistory(isActiveAppointment: true);
@@ -79,4 +83,14 @@ class AmRequestViewModel extends BaseViewModel {
} else
setState(ViewState.Idle);
}
+
+ Future updatePressOrder({@required int presOrderID}) async {
+ setState(ViewState.Busy);
+ await _amService.updatePressOrder(presOrderID: presOrderID);
+ if (_hospitalService.hasError) {
+ error = _hospitalService.error;
+ setState(ViewState.Error);
+ } else
+ getPatientAllPresOrdersList();
+ }
}
diff --git a/lib/core/viewModels/qr_view_model.dart b/lib/core/viewModels/qr_view_model.dart
index cc03d9ab..03c88462 100644
--- a/lib/core/viewModels/qr_view_model.dart
+++ b/lib/core/viewModels/qr_view_model.dart
@@ -1,6 +1,6 @@
import 'dart:convert';
-import 'package:barcode_scan/platform_wrapper.dart';
+// import 'package:barcode_scan/platform_wrapper.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/qr/qr_parking_model.dart';
@@ -14,25 +14,26 @@ class QrViewModel extends BaseViewModel {
QRParkingModel qrParkingModel;
readQr() async {
- var result = await BarcodeScanner.scan();
- var data = json.decode(result.rawContent);
- var qRParkingID = data['QRParkingID'];
- setState(ViewState.BusyLocal);
- await _qrService.getQRParkingByID(qRParkingID);
- if (_qrService.hasError) {
- error = _qrService.error;
- setState(ViewState.ErrorLocal);
- } else {
- if (_qrService.qRParkingList.length > 0) {
- qrParkingModel = _qrService.qRParkingList[0];
- await sharedPref.setObject(IS_GO_TO_PARKING, qrParkingModel);
- isSavePark = true;
- setState(ViewState.Idle);
- } else {
- error = "Invalid Qr Code";
- setState(ViewState.ErrorLocal);
- }
- }
+ //TODO fix the barcode scan
+ // var result = await BarcodeScanner.scan();
+ // var data = json.decode(result.rawContent);
+ // var qRParkingID = data['QRParkingID'];
+ // setState(ViewState.BusyLocal);
+ // await _qrService.getQRParkingByID(qRParkingID);
+ // if (_qrService.hasError) {
+ // error = _qrService.error;
+ // setState(ViewState.ErrorLocal);
+ // } else {
+ // if (_qrService.qRParkingList.length > 0) {
+ // qrParkingModel = _qrService.qRParkingList[0];
+ // await sharedPref.setObject(IS_GO_TO_PARKING, qrParkingModel);
+ // isSavePark = true;
+ // setState(ViewState.Idle);
+ // } else {
+ // error = "Invalid Qr Code";
+ // setState(ViewState.ErrorLocal);
+ // }
+ // }
}
getIsSaveParking() async {
diff --git a/lib/pages/ErService/AmbulanceReq.dart b/lib/pages/ErService/AmbulanceReq.dart
index ec96f482..413d80e6 100644
--- a/lib/pages/ErService/AmbulanceReq.dart
+++ b/lib/pages/ErService/AmbulanceReq.dart
@@ -3,6 +3,9 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_history_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_page.dart';
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
+import 'package:diplomaticquarterapp/widgets/others/OrderLogItem.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:ui';
@@ -66,7 +69,7 @@ class _AmbulanceReqState extends State
child: Container(
height: 60.0,
margin: EdgeInsets.only(top: 10.0),
- width: MediaQuery.of(context).size.width * 0.9,
+ width: MediaQuery.of(context).size.width * 0.93,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
@@ -114,9 +117,7 @@ class _AmbulanceReqState extends State
physics: BouncingScrollPhysics(),
controller: _tabController,
children: [
- model.hasPendingOrder
- ? Container()
- : AmbulanceRequestIndexPage(
+ AmbulanceRequestIndexPage(
amRequestViewModel: model,
),
OrderLogPage(
diff --git a/lib/pages/ErService/AmbulanceRequestIndexPages/AmbulanceRequestIndex.dart b/lib/pages/ErService/AmbulanceRequestIndexPages/AmbulanceRequestIndex.dart
index 55e75e22..e4b923b2 100644
--- a/lib/pages/ErService/AmbulanceRequestIndexPages/AmbulanceRequestIndex.dart
+++ b/lib/pages/ErService/AmbulanceRequestIndexPages/AmbulanceRequestIndex.dart
@@ -1,8 +1,13 @@
import 'package:diplomaticquarterapp/core/model/er/PatientER.dart';
import 'package:diplomaticquarterapp/core/viewModels/er/am_request_view_model.dart';
import 'package:diplomaticquarterapp/pages/ErService/widgets/StepsWidget.dart';
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
+import 'package:diplomaticquarterapp/widgets/others/OrderLogItem.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
import 'BillAmount.dart';
import 'PickupLocation.dart';
@@ -40,7 +45,71 @@ class _AmbulanceRequestIndexPageState extends State {
@override
Widget build(BuildContext context) {
return AppScaffold(
- body: Column(
+ body: widget.amRequestViewModel.pickUpRequestPresOrder!=null
+ ? Column(
+ children: [
+ SizedBox(
+ height: 80,
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 18, right: 18),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(2),
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ OrderLogItem(
+ title: 'Request ID',
+ value: widget.amRequestViewModel.pickUpRequestPresOrder.presOrderID.toString(),
+ ),
+ OrderLogItem(
+ title: 'Status',
+ value: widget.amRequestViewModel.pickUpRequestPresOrder.ambulateDescription,
+ ),
+ OrderLogItem(
+ title: 'Last edit time',
+ value: DateUtil.getDayMonthYearDateFormatted(
+ DateUtil.convertStringToDate(widget.amRequestViewModel.pickUpRequestPresOrder.lastEditDate)),
+ ),
+ OrderLogItem(
+ title: 'Pickup Location',
+ value: widget.amRequestViewModel.pickUpRequestPresOrder.pickupLocationName,
+ ),
+ OrderLogItem(
+ title: 'Drop off Location',
+ value: widget.amRequestViewModel.pickUpRequestPresOrder.dropoffLocationName,
+ ),
+ OrderLogItem(
+ title: 'Trasfaer way',
+ value: widget.amRequestViewModel.pickUpRequestPresOrder.title,
+ ),
+ Container(
+ padding: EdgeInsets.all(10),
+ width: double.maxFinite,
+ margin: EdgeInsets.only(bottom: 4,left: 4,right: 4),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.only(
+ bottomRight: Radius.circular(12),
+ bottomLeft: Radius.circular(12),
+ ),
+ color: Colors.white
+ ),
+ child: SecondaryButton(
+ color: Colors.red[900],
+ textColor: Colors.white,
+ label: TranslationBase.of(context).cancel,
+ onTap: () {
+ widget.amRequestViewModel.updatePressOrder(presOrderID:widget.amRequestViewModel.pickUpRequestPresOrder.presOrderID );
+ },
+ ),
+ )
+ ],
+ ),
+ ),
+ ],
+ ):Column(
children: [
SizedBox(
height: 80,
diff --git a/lib/pages/ErService/AmbulanceRequestIndexPages/PickupLocation.dart b/lib/pages/ErService/AmbulanceRequestIndexPages/PickupLocation.dart
index 795f4dcc..bb6db7c0 100644
--- a/lib/pages/ErService/AmbulanceRequestIndexPages/PickupLocation.dart
+++ b/lib/pages/ErService/AmbulanceRequestIndexPages/PickupLocation.dart
@@ -73,7 +73,7 @@ class _PickupLocationState extends State {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- if (widget.patientER.direction == 1)
+ if (widget.patientER.direction == 0)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@@ -310,7 +310,7 @@ class _PickupLocationState extends State {
context,
MaterialPageRoute(
builder: (context) => PlacePicker(
- apiKey: 'AIzaSyCiD4YqVqLNYbt8-htvFy4Wp8XSph9E3wM',
+ apiKey: 'AIzaSyDiXnCO00li4V7Ioa2YZ_M4ECxRsu_P9tA',
// Put YOUR OWN KEY here.
onPlacePicked: (PickResult result) {
print(result.adrAddress);
@@ -319,6 +319,29 @@ class _PickupLocationState extends State {
});
Navigator.of(context).pop();
},
+ selectedPlaceWidgetBuilder: (_, selectedPlace, state, isSearchBarFocused) {
+ print("state: $state, isSearchBarFocused: $isSearchBarFocused");
+ return isSearchBarFocused
+ ? Container()
+ : FloatingCard(
+ bottomPosition: 0.0, // MediaQuery.of(context) will cause rebuild. See MediaQuery document for the information.
+ leftPosition: 0.0,
+ rightPosition: 0.0,
+ width: 500,
+ borderRadius: BorderRadius.circular(12.0),
+ child: state == SearchingState.Searching
+ ? Center(child: CircularProgressIndicator())
+ : RaisedButton(
+ child: Text("Pick Here"),
+ onPressed: () {
+ // IMPORTANT: You MUST manage selectedPlace data yourself as using this build will not invoke onPlacePicker as
+ // this will override default 'Select here' Button.
+ print("do something with [selectedPlace] data");
+ Navigator.of(context).pop();
+ },
+ ),
+ );
+ },
initialPosition: LatLng(_latitude, _longitude),
useCurrentLocation: true,
),
diff --git a/lib/pages/ErService/AmbulanceRequestIndexPages/SelectTransportationMethod.dart b/lib/pages/ErService/AmbulanceRequestIndexPages/SelectTransportationMethod.dart
index 59c3b85c..563e388a 100644
--- a/lib/pages/ErService/AmbulanceRequestIndexPages/SelectTransportationMethod.dart
+++ b/lib/pages/ErService/AmbulanceRequestIndexPages/SelectTransportationMethod.dart
@@ -294,7 +294,6 @@ class _SelectTransportationMethodState
widget.patientER.cost = _erTransportationMethod.price;
widget.patientER.vAT = _erTransportationMethod.vAT ?? 0;
widget.patientER.totalPrice = _erTransportationMethod.totalPrice;
-
widget.changeCurrentTab(1);
});
},
diff --git a/lib/pages/ErService/OrderLogPage.dart b/lib/pages/ErService/OrderLogPage.dart
index cbb508e5..6929cd0b 100644
--- a/lib/pages/ErService/OrderLogPage.dart
+++ b/lib/pages/ErService/OrderLogPage.dart
@@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/core/model/er/PatientAllPresOrders.dart';
import 'package:diplomaticquarterapp/core/viewModels/er/am_request_view_model.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/OrderLogItem.dart';
import 'package:flutter/cupertino.dart';
@@ -53,6 +55,28 @@ class OrderLogPage extends StatelessWidget {
value: amRequestViewModel
.patientAllPresOrdersList[index].dropoffLocationName,
),
+ if(amRequestViewModel.patientAllPresOrdersList[index].status==1)
+ Container(
+ padding: EdgeInsets.all(10),
+ width: double.maxFinite,
+ margin: EdgeInsets.only(bottom: 4,left: 4,right: 4),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.only(
+ bottomRight: Radius.circular(12),
+ bottomLeft: Radius.circular(12),
+ ),
+ color: Colors.white
+ ),
+ child: SecondaryButton(
+ color: Colors.red[900],
+ textColor: Colors.white,
+ label: TranslationBase.of(context).cancel,
+ onTap: () {
+ amRequestViewModel.updatePressOrder(presOrderID:amRequestViewModel.pickUpRequestPresOrder.presOrderID );
+
+ },
+ ),
+ )
],
),
),
diff --git a/pubspec.yaml b/pubspec.yaml
index f7e1e67a..fc385b85 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -75,8 +75,8 @@ dependencies:
# charts
charts_flutter: ^0.9.0
- # Qr code Scanner
- barcode_scan: ^3.0.1
+ # Qr code Scanner TODO fix it
+ #barcode_scan: ^3.0.1
# Rating Stars
rating_bar: ^0.2.0
@@ -136,7 +136,7 @@ dependencies:
#google maps places
- google_maps_place_picker: ^0.10.0
+ google_maps_place_picker: ^1.0.0
#Dependencies for video call implementation
native_device_orientation: ^0.3.0