refactor orders Concept

merge-requests/10/head
Elham Rababah 4 years ago
parent b0a207008e
commit bf79a6427e

@ -3,7 +3,7 @@ import 'package:driverapp/core/model/pending_orders/pending_orders_model.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
import 'package:driverapp/core/service/base_service.dart';
class PendingOrdersService extends BaseService {
class OrdersService extends BaseService {
List<PendingOrders> _orders = List();
List<PendingOrders> get orders => _orders;
bool isOrderInserted;
@ -21,21 +21,27 @@ class PendingOrdersService extends BaseService {
Future getPendingOrders() async {
hasError = false;
await baseAppClient.post(GET_ALL_ORDERS,
onSuccess: (dynamic response, int statusCode) {
_orders.clear();
response['PatientER_Delivery_GetAllOrderList'].forEach((order) {
_orders.add(PendingOrders.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
try {
await baseAppClient.post(GET_ALL_ORDERS,
onSuccess: (dynamic response, int statusCode) {
_orders.clear();
response['PatientER_Delivery_GetAllOrderList'].forEach((order) {
_orders.add(PendingOrders.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
} catch (e) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
throw e;
}
}
Future insertOrder() async {
ScanQrRequestModel _scanQrRequestModel = ScanQrRequestModel(deliveryOrderID: 129, groupID: 0);
ScanQrRequestModel _scanQrRequestModel = ScanQrRequestModel(deliveryOrderID: 1200, groupID: 0);
hasError = false;
try {
await baseAppClient.post(SCAN_QR,

@ -1,11 +1,11 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/service/pending_orders_service.dart';
import 'package:driverapp/core/service/orders_service.dart';
import 'package:driverapp/core/model/pending_orders/pending_orders_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
class PendingOrdersViewModel extends BaseViewModel {
PendingOrdersService _pendingOrdersService = locator<PendingOrdersService>();
class OrdersViewModel extends BaseViewModel {
OrdersService _pendingOrdersService = locator<OrdersService>();
List<PendingOrders> get orders => _pendingOrdersService.orders;

@ -2,9 +2,9 @@ import 'package:get_it/get_it.dart';
import 'core/service/authentication_service.dart';
import 'core/service/hospital_service.dart';
import 'core/service/pending_orders_service.dart';
import 'core/service/orders_service.dart';
import 'core/viewModels/authentication_view_model.dart';
import 'core/viewModels/pending_orders_view_model.dart';
import 'core/viewModels/orders_view_model.dart';
import 'core/viewModels/hospital_view_model.dart';
GetIt locator = GetIt.instance;
@ -14,10 +14,10 @@ void setupLocator() {
/// Services
locator.registerLazySingleton(() => HospitalService());
locator.registerLazySingleton(() => AuthenticationService());
locator.registerLazySingleton(() => PendingOrdersService());
locator.registerLazySingleton(() => OrdersService());
/// View Model
locator.registerFactory(() => HospitalViewModel());
locator.registerFactory(() => AuthenticationViewModel());
locator.registerFactory(() => PendingOrdersViewModel());
locator.registerFactory(() => OrdersViewModel());
}

@ -1,7 +1,8 @@
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/viewModels/pending_orders_view_model.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/uitl/app_toast.dart';
import 'package:driverapp/uitl/utils.dart';
import 'package:flutter/material.dart';
import '../base/base_view.dart';
@ -18,10 +19,10 @@ class DashboardScreen extends StatefulWidget {
class _DashboardScreenState extends State<DashboardScreen> {
@override
Widget build(BuildContext context) {
return BaseView<PendingOrdersViewModel>(
return BaseView<OrdersViewModel>(
onModelReady: (model) => model.getPendingOrders(),
builder:
(BuildContext context, PendingOrdersViewModel model, Widget child) =>
(BuildContext context, OrdersViewModel model, Widget child) =>
Scaffold(
backgroundColor: Color(0xffF4F9FA),
body: Column(
@ -401,7 +402,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
);
}
_scanQrAndGetPatient(BuildContext context,PendingOrdersViewModel model) async {
_scanQrAndGetPatient(BuildContext context,OrdersViewModel model) async {
/// When give qr we will change this method to get data
/// var result = await BarcodeScanner.scan();
/// int patientID = get from qr result
@ -412,6 +413,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
await model.insertOrder();
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
}else{
AppToast.showSuccessToast(message: "Order Added");
}
}

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/viewModels/pending_orders_view_model.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import '../base/base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:driverapp/widgets/others/rounded_container.dart';
@ -13,10 +13,10 @@ class OrdersListScreen extends StatefulWidget {
class _OrdersListScreenState extends State<OrdersListScreen> {
@override
Widget build(BuildContext context) {
return BaseView<PendingOrdersViewModel>(
return BaseView<OrdersViewModel>(
onModelReady: (model) => model.getPendingOrders(),
builder:
(BuildContext context, PendingOrdersViewModel model, Widget child) =>
(BuildContext context, OrdersViewModel model, Widget child) =>
Scaffold(
appBar: AppBar(
centerTitle: true,

Loading…
Cancel
Save