add order list info

design_update
hussam al-habibeh 5 years ago
parent c52a58af23
commit 783f7fcbf5

@ -1,4 +1,5 @@
import 'package:driverapp/config/config.dart'; import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/model/orders/deliverd_order_req_model.dart';
import 'package:driverapp/core/model/orders/next_order_request_model.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_req_model.dart';
import 'package:driverapp/core/model/orders/pending_orders_res_model.dart'; import 'package:driverapp/core/model/orders/pending_orders_res_model.dart';
@ -9,9 +10,12 @@ import 'package:driverapp/core/service/base_service.dart';
class OrdersService extends BaseService { class OrdersService extends BaseService {
List<PendingOrdersRes> _orders = List(); List<PendingOrdersRes> _orders = List();
List<PendingOrdersRes> _nextOrdersList = List(); List<PendingOrdersRes> _nextOrdersList = List();
List<DeliverdOrderModel> _deliverdOrderList = List();
List<PendingOrdersRes> get orders => _orders; List<PendingOrdersRes> get orders => _orders;
List<DeliverdOrderModel> get deliverdOrderList => _deliverdOrderList;
List<PendingOrdersRes> get nextOrdersList => _nextOrdersList; List<PendingOrdersRes> get nextOrdersList => _nextOrdersList;
bool isOrderInserted; bool isOrderInserted;
bool isOrderStatusUpdated; bool isOrderStatusUpdated;
@ -22,6 +26,14 @@ class OrdersService extends BaseService {
pageIndex: 0, pageIndex: 0,
); );
DeliverdOrderModel _requestGetDeliverdOrders = DeliverdOrderModel(
searchKey: "",
pageSize: 0,
pageIndex: 0,
latitude: "24.640000",
longitude: "46.753000",
);
Future getPendingOrders() async { Future getPendingOrders() async {
hasError = false; hasError = false;
try { try {
@ -86,13 +98,35 @@ class OrdersService extends BaseService {
response["PatientER_Delivery_NextOrder"].forEach((order) { response["PatientER_Delivery_NextOrder"].forEach((order) {
_nextOrdersList.add(PendingOrdersRes.fromJson(order)); _nextOrdersList.add(PendingOrdersRes.fromJson(order));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: nextOrderRequestModel.toJson()); }, body: nextOrderRequestModel.toJson());
} catch (e) {
hasError = true;
super.error = error;
throw e;
}
}
Future getDeliverdList() async {
hasError = false;
try {
await baseAppClient.post(GET_ALL_DELIVERD_ORDER,
onSuccess: (dynamic response, int statusCode) {
_deliverdOrderList.clear();
response['PatientER_Delivery_GetAllDeliverdOrderList'].forEach((
order) {
_deliverdOrderList.add(DeliverdOrderModel.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
} catch (e) { } catch (e) {
hasError = true; hasError = true;
super.error = error; super.error = error;
throw e; throw e;
} }
} }

@ -1,4 +1,5 @@
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/orders/deliverd_order_req_model.dart';
import 'package:driverapp/core/model/orders/next_order_request_model.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/pending_orders_res_model.dart';
import 'package:driverapp/core/model/orders/update_order_status_request_model.dart'; import 'package:driverapp/core/model/orders/update_order_status_request_model.dart';
@ -13,6 +14,9 @@ class OrdersViewModel extends BaseViewModel {
List<PendingOrdersRes> get orders => _ordersService.orders; List<PendingOrdersRes> get orders => _ordersService.orders;
List<DeliverdOrderModel> get deliverdOrders =>
_ordersService.deliverdOrderList;
List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList; List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList;
bool isBottomSheetAppear = false; bool isBottomSheetAppear = false;
@ -26,6 +30,16 @@ class OrdersViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getDeliverdOrders() async {
setState(ViewState.Busy);
await _ordersService.getDeliverdList();
if (_ordersService.hasError) {
error = _ordersService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async { Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async {
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
await _ordersService.insertOrder(_scanQrRequestModel); await _ordersService.insertOrder(_scanQrRequestModel);

@ -1,8 +1,10 @@
import 'package:barcode_scan/platform_wrapper.dart'; import 'package:barcode_scan/platform_wrapper.dart';
import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart'; import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/delivery/information_page.dart'; import 'package:driverapp/pages/delivery/information_page.dart';
import 'package:driverapp/pages/orders/deliverd_orders_page.dart';
import 'package:driverapp/pages/orders/pending_orders_page.dart'; import 'package:driverapp/pages/orders/pending_orders_page.dart';
import 'package:driverapp/uitl/app_toast.dart'; import 'package:driverapp/uitl/app_toast.dart';
import 'package:driverapp/uitl/translations_delegate_base.dart'; import 'package:driverapp/uitl/translations_delegate_base.dart';
@ -14,7 +16,7 @@ import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:driverapp/config/size_config.dart';
import '../base/base_view.dart'; import '../base/base_view.dart';
class DashboardScreen extends StatefulWidget { class DashboardScreen extends StatefulWidget {
@ -228,46 +230,54 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
child: Padding( child: Padding(
padding: EdgeInsets.all(2.0), padding: EdgeInsets.all(2.0),
child: Column( child: InkWell(
mainAxisAlignment: onTap: () => Navigator.push(
MainAxisAlignment.spaceEvenly, context,
children: <Widget>[ MaterialPageRoute(
Text( builder: (context) =>
TranslationBase.of(context).youHave, DeliverdOrdersPage()),
style: TextStyle( ),
color: Colors.white, child: Column(
fontSize: MediaQuery.of(context) mainAxisAlignment:
.orientation == MainAxisAlignment.spaceEvenly,
Orientation.landscape children: <Widget>[
? SizeConfig.textMultiplier * Text(
2.2 TranslationBase.of(context).youHave,
: SizeConfig.textMultiplier * style: TextStyle(
1.3,
),
),
Text(
'5',
style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: fontSize: MediaQuery.of(context)
SizeConfig.textMultiplier * .orientation ==
3.0), Orientation.landscape
), ? SizeConfig.textMultiplier *
Text( 2.2
TranslationBase.of(context) : SizeConfig.textMultiplier *
.undeliveredPackages, 1.3,
style: TextStyle( ),
color: Colors.white,
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig.textMultiplier *
2.2
: SizeConfig.textMultiplier *
1.3,
), ),
) Text(
], '5',
style: TextStyle(
color: Colors.white,
fontSize:
SizeConfig.textMultiplier *
3.0),
),
Text(
TranslationBase.of(context)
.undeliveredPackages,
style: TextStyle(
color: Colors.white,
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig.textMultiplier *
2.2
: SizeConfig.textMultiplier *
1.3,
),
)
],
),
), ),
), ),
), ),

@ -0,0 +1,147 @@
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/delivery/information_page.dart';
import 'package:driverapp/uitl/translations_delegate_base.dart';
import 'package:driverapp/widgets/data_display/circle-container.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../base/base_view.dart';
class DeliverdOrdersPage extends StatefulWidget {
@override
_DeliverdOrdersPageState createState() => _DeliverdOrdersPageState();
}
class _DeliverdOrdersPageState extends State<DeliverdOrdersPage> {
@override
Widget build(BuildContext context) {
return BaseView<OrdersViewModel>(
onModelReady: (model) => model.getDeliverdOrders(),
builder: (BuildContext context, OrdersViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).yourDeliveryQue,
titleColor: Colors.black,
body: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: model.orders == null ? 0 : model.orders.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.2),
child: InkWell(
child: RoundedContainer(
raduis: 25.0,
height: MediaQuery.of(context).orientation ==
Orientation.portrait
? MediaQuery.of(context).size.height * 0.120
: MediaQuery.of(context).size.height * 0.209,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
flex: 1,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding:
EdgeInsets.only(left: 15.0, top: 14.0),
child: Image.asset(
'assets/images/location.png',
height: MediaQuery.of(context)
.orientation ==
Orientation.portrait
? MediaQuery.of(context).size.height *
0.06
: MediaQuery.of(context).size.height *
0.11,
width: MediaQuery.of(context)
.orientation ==
Orientation.portrait
? MediaQuery.of(context).size.width *
0.05
: MediaQuery.of(context).size.width *
0.09,
),
)
],
),
),
if (model.orders.length != 0)
Expanded(
flex: 5,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 20.0),
child: Text(
model.orders[index].firstName +
' ' +
model.orders[index].lastName,
style: TextStyle(fontSize: 18.0),
),
),
Text(
model.orders[index].mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0,
),
),
Expanded(
child: Text(
model.orders[index].orderID.toString(),
style: TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.w400,
letterSpacing: 8.0),
),
),
],
),
),
Padding(
padding: EdgeInsets.all(8.0),
child: CircleContainer(
borderWidth: 0.8,
child: Text(
model.orders[index].distanceInKilometers
.toString() +
' K.m\naway',
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
),
),
],
),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
InformationPage(model.orders[index])));
},
),
);
},
),
),
],
),
),
);
}
}
Loading…
Cancel
Save