Merge branch 'master' of https://gitlab.com/Cloud_Solution/driver-app into order_list

 Conflicts:
	lib/core/service/orders_service.dart
design_update
hussam al-habibeh 5 years ago
commit c52a58af23

@ -8,6 +8,7 @@ const GET_ALL_ORDERS = '/Patients.svc/REST/PatientER_Delivery_GetAllOrder';
const SCAN_QR = '/Patients.svc/REST/PatientER_Delivery_OrderInsert';
const UPDATE_ORDER_STATUS =
'/Patients.svc/REST/PatientER_Delivery_UpdateOrderStatus';
const NEXT_ORDER = "/Patients.svc/REST/PatientER_Delivery_NextOrder";
const GET_ALL_DELIVERD_ORDER =
'/Patients.svc/REST/PatientER_Delivery_GetAllDeliverdOrder';

@ -0,0 +1,48 @@
class NextOrderRequestModel {
int driverID;
String searchKey;
int pageSize;
int pageIndex;
String tokenID;
int userID;
String mobileNo;
String longitude;
String latitude;
NextOrderRequestModel(
{this.driverID,
this.searchKey,
this.pageSize,
this.pageIndex,
this.tokenID,
this.userID,
this.mobileNo,
this.longitude,
this.latitude});
NextOrderRequestModel.fromJson(Map<String, dynamic> json) {
driverID = json['DriverID'];
searchKey = json['SearchKey'];
pageSize = json['PageSize'];
pageIndex = json['PageIndex'];
tokenID = json['TokenID'];
userID = json['UserID'];
mobileNo = json['MobileNo'];
longitude = json['Longitude'];
latitude = json['Latitude'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['DriverID'] = this.driverID;
data['SearchKey'] = this.searchKey;
data['PageSize'] = this.pageSize;
data['PageIndex'] = this.pageIndex;
data['TokenID'] = this.tokenID;
data['UserID'] = this.userID;
data['MobileNo'] = this.mobileNo;
data['Longitude'] = this.longitude;
data['Latitude'] = this.latitude;
return data;
}
}

@ -24,7 +24,7 @@ class PendingOrdersRes {
String dischargeID;
String patientID;
bool patientOutSA;
int distanceInKilometers;
dynamic distanceInKilometers;
List<ItemsQuantitiesList> itemsQuantitiesList;
PendingOrdersRes(

@ -1,4 +1,5 @@
import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/model/orders/next_order_request_model.dart';
import 'package:driverapp/core/model/orders/pending_orders_req_model.dart';
import 'package:driverapp/core/model/orders/pending_orders_res_model.dart';
import 'package:driverapp/core/model/orders/update_order_status_request_model.dart';
@ -7,8 +8,11 @@ import 'package:driverapp/core/service/base_service.dart';
class OrdersService extends BaseService {
List<PendingOrdersRes> _orders = List();
List<PendingOrdersRes> _nextOrdersList = List();
List<PendingOrdersRes> get orders => _orders;
List<PendingOrdersRes> get nextOrdersList => _nextOrdersList;
bool isOrderInserted;
bool isOrderStatusUpdated;
@ -74,23 +78,21 @@ class OrdersService extends BaseService {
}
}
Future getDekiverdOrder() async {
Future nextOrder(NextOrderRequestModel nextOrderRequestModel) async {
hasError = false;
try {
await baseAppClient.post(GET_ALL_DELIVERD_ORDER,
await baseAppClient.post(NEXT_ORDER,
onSuccess: (dynamic response, int statusCode) {
_orders.clear();
response['PatientER_Delivery_GetAllDeliverdOrderList'].forEach((order) {
_orders.add(PendingOrdersRes.fromJson(order));
response["PatientER_Delivery_NextOrder"].forEach((order) {
_nextOrdersList.add(PendingOrdersRes.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
}, body: nextOrderRequestModel.toJson());
} catch (e) {
hasError = true;
super.error = error;
throw e;
}
}

@ -1,4 +1,5 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/orders/next_order_request_model.dart';
import 'package:driverapp/core/model/orders/pending_orders_res_model.dart';
import 'package:driverapp/core/model/orders/update_order_status_request_model.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
@ -8,16 +9,18 @@ import '../../locator.dart';
import 'base_view_model.dart';
class OrdersViewModel extends BaseViewModel {
OrdersService _OrdersService = locator<OrdersService>();
OrdersService _ordersService = locator<OrdersService>();
List<PendingOrdersRes> get orders => _OrdersService.orders;
List<PendingOrdersRes> get orders => _ordersService.orders;
List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList;
bool isBottomSheetAppear = false;
Future getPendingOrders() async {
setState(ViewState.Busy);
await _OrdersService.getPendingOrders();
if (_OrdersService.hasError) {
error = _OrdersService.error;
await _ordersService.getPendingOrders();
if (_ordersService.hasError) {
error = _ordersService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
@ -25,9 +28,9 @@ class OrdersViewModel extends BaseViewModel {
Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async {
setState(ViewState.ErrorLocal);
await _OrdersService.insertOrder(_scanQrRequestModel);
if (_OrdersService.hasError) {
error = _OrdersService.error;
await _ordersService.insertOrder(_scanQrRequestModel);
if (_ordersService.hasError) {
error = _ordersService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
@ -36,9 +39,19 @@ class OrdersViewModel extends BaseViewModel {
Future updateOrderStatus(
UpdateOrderStatusRequestModel updateOrderStatusRequestModel) async {
setState(ViewState.BusyLocal);
await _OrdersService.updateOrderStatus(updateOrderStatusRequestModel);
if (_OrdersService.hasError) {
error = _OrdersService.error;
await _ordersService.updateOrderStatus(updateOrderStatusRequestModel);
if (_ordersService.hasError) {
error = _ordersService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
Future nextOrder(NextOrderRequestModel nextOrderRequestModel) async {
setState(ViewState.BusyLocal);
await _ordersService.nextOrder(nextOrderRequestModel);
if (_ordersService.hasError) {
error = _ordersService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);

@ -1,3 +1,10 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/orders/next_order_request_model.dart';
import 'package:driverapp/core/model/orders/pending_orders_res_model.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/base/base_view.dart';
import 'package:driverapp/pages/delivery/information_page.dart';
import 'package:driverapp/uitl/utils.dart';
import 'package:driverapp/widgets/buttons/secondary_button.dart';
import 'package:driverapp/widgets/delivery/customer_brief_card.dart';
import 'package:flutter/cupertino.dart';
@ -7,157 +14,185 @@ import '../../uitl/translations_delegate_base.dart';
import '../../widgets/others/app_scaffold_widget.dart';
class DeliveryConfirmedPage extends StatelessWidget {
final dynamic item;
final PendingOrdersRes item;
DeliveryConfirmedPage(this.item);
@override
Widget build(BuildContext context) {
return AppScaffold(
body: SafeArea(
child: Container(
color: Theme.of(context).primaryColor,
child: ListView(
children: <Widget>[
Column(
children: <Widget>[
Column(
children: <Widget>[
Container(
child: Container(
alignment: Alignment.topLeft,
child: IconButton(
color: Colors.white,
iconSize: 40,
icon: Icon(Icons.arrow_back),
onPressed: () {
Navigator.pop(context);
},
return BaseView<OrdersViewModel>(
builder: (_, model, w) => AppScaffold(
body: SafeArea(
child: Container(
color: Theme.of(context).primaryColor,
child: ListView(
children: <Widget>[
Column(
children: <Widget>[
Column(
children: <Widget>[
Container(
child: Container(
alignment: Alignment.topLeft,
child: IconButton(
color: Colors.white,
iconSize: 40,
icon: Icon(Icons.arrow_back),
onPressed: () {
Navigator.pop(context);
},
),
),
),
),
Container(
child: Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width * 0.7,
padding: EdgeInsets.only(
top: MediaQuery.of(context).size.width *
0.2,
),
decoration: BoxDecoration(
color: Colors.white10,
shape: BoxShape.circle),
child: Column(
children: <Widget>[
Icon(
Icons.check_circle,
color: Colors.white,
size: 60,
),
Text(
TranslationBase.of(context).deliveryInfo,
style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold),
),
Text(
TranslationBase.of(context)
.confirmationSent,
style: TextStyle(
Container(
child: Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width * 0.7,
padding: EdgeInsets.only(
top: MediaQuery.of(context).size.width * 0.2,
),
decoration: BoxDecoration(
color: Colors.white10,
shape: BoxShape.circle),
child: Column(
children: <Widget>[
Icon(
Icons.check_circle,
color: Colors.white,
fontSize: 13,
size: 60,
),
Text(
TranslationBase.of(context).deliveryInfo,
style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold),
),
),
],
Text(
TranslationBase.of(context)
.confirmationSent,
style: TextStyle(
color: Colors.white,
fontSize: 13,
),
),
],
),
),
),
],
],
),
),
),
],
),
Stack(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width,
),
Container(
width: MediaQuery.of(context).size.width,
//800,
height: MediaQuery.of(context).size.width * 1.2,
//440,
margin: EdgeInsets.only(top: 60),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(80),
topRight: Radius.circular(80)),
],
),
Stack(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).size.width *
0.15, //50
),
child: Column(
children: <Widget>[
FlatButton.icon(
padding: EdgeInsets.all(8),
color: Colors.orangeAccent,
shape: RoundedRectangleBorder(
borderRadius:
new BorderRadius.circular(10.0),
),
label: Text(
TranslationBase.of(context).addNoteBtn,
style: TextStyle(color: Colors.white),
Container(
width: MediaQuery.of(context).size.width,
//800,
height: MediaQuery.of(context).size.width * 1.2,
//440,
margin: EdgeInsets.only(top: 60),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(80),
topRight: Radius.circular(80)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).size.width *
0.15, //50
),
child: Column(
children: <Widget>[
FlatButton.icon(
padding: EdgeInsets.all(8),
color: Colors.orangeAccent,
shape: RoundedRectangleBorder(
borderRadius:
new BorderRadius.circular(10.0),
),
label: Text(
TranslationBase.of(context).addNoteBtn,
style: TextStyle(color: Colors.white),
),
icon: Icon(
Icons.mode_edit,
color: Colors.white,
),
onPressed: () {},
),
icon: Icon(
Icons.mode_edit,
color: Colors.white,
SizedBox(
height:
MediaQuery.of(context).size.width *
0.1, //20,
),
onPressed: () {},
),
SizedBox(
height: MediaQuery.of(context).size.width *
0.1, //20,
),
Container(
margin: EdgeInsets.all(10),
child: SecondaryButton(
label: TranslationBase.of(context)
.nextDelivery,
onTap: () {},
Container(
margin: EdgeInsets.all(10),
child: SecondaryButton(
label: TranslationBase.of(context)
.nextDelivery,
onTap: () {
getNextOrder(context, model);
},
),
),
),
],
],
),
),
),
],
],
),
),
),
CustomerBriefCard(
itemId: item.patientID,
customerFirstName: item.firstName,
customerLastName: item.lastName,
mobileNo: item.mobileNumber,
totalPayment: item.amount,
deliveryTime: item.orderCreatedOn),
],
),
],
),
],
CustomerBriefCard(
itemId: item.orderID,
customerFirstName: item.firstName,
customerLastName: item.lastName,
mobileNo: item.mobileNumber,
totalPayment: item.amount,
deliveryTime: item.orderCreatedOn),
],
),
],
),
],
),
),
),
),
);
}
getNextOrder(BuildContext context, OrdersViewModel model) async {
NextOrderRequestModel nextOrderRequestModel = NextOrderRequestModel(
pageIndex: 0,
pageSize: 0,
latitude: "46.621730",
longitude: "24.797682",
searchKey: "");
await model.nextOrder(nextOrderRequestModel);
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
} else {
if (model.nextOrdersList != null && model.nextOrdersList.length == 0) {
Utils.showErrorToast("No Items in the list");
} else {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => InformationPage(model.nextOrdersList[0]),
),
);
}
}
}
}

File diff suppressed because one or more lines are too long

@ -1,3 +1,4 @@
import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/base/base_view.dart';
@ -20,7 +21,9 @@ class CustomDialog extends StatelessWidget {
return BaseView<OrdersViewModel>(
builder: (_, model, w) => Center(
child: Container(
height: MediaQuery.of(context).size.height * 0.50,
height: SizeConfig.isPortrait
? MediaQuery.of(context).size.height * 0.43
: MediaQuery.of(context).size.height * 0.90,
width: MediaQuery.of(context).size.width * 0.95,
child: Dialog(
shape: RoundedRectangleBorder(
@ -50,7 +53,7 @@ class CustomDialog extends StatelessWidget {
height: 40,
),
FractionallySizedBox(
widthFactor: 0.8,
widthFactor: SizeConfig.isPortrait ? 0.9 : 0.8,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
@ -64,28 +67,35 @@ class CustomDialog extends StatelessWidget {
SizedBox(
height: 10,
),
SecondaryButton(
label: TranslationBase
.of(context)
.confirm,
loading: model.state == ViewState.BusyLocal,
onTap: () {
model.setState(ViewState.BusyLocal);
callService();
},
),
SizedBox(
height: 10,
),
SecondaryButton(
label: TranslationBase
.of(context)
.canceled,
onTap: () {
model.hideBottomSheet();
Navigator.of(context).pop();
},
FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: <Widget>[
SecondaryButton(
label: TranslationBase
.of(context)
.confirm,
loading: model.state == ViewState.BusyLocal,
onTap: () {
model.setState(ViewState.BusyLocal);
callService();
},
), SizedBox(
height: 10,
),
SecondaryButton(
label: TranslationBase
.of(context)
.canceled,
onTap: () {
model.hideBottomSheet();
Navigator.of(context).pop();
},
),
],
),
),
],
),
)

@ -4,7 +4,7 @@ import '../../uitl/date_uitl.dart';
import '../../uitl/translations_delegate_base.dart';
class CustomerBriefCard extends StatelessWidget {
final String itemId;
final int itemId;
final String time;
final String customerFirstName;
final String customerLastName;

Loading…
Cancel
Save