From bf79a6427e47e576cd842f716924a95d71936639 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 24 Aug 2020 15:49:32 +0300 Subject: [PATCH] refactor orders Concept --- ...rders_service.dart => orders_service.dart} | 26 ++++++++++++------- ...view_model.dart => orders_view_model.dart} | 6 ++--- lib/locator.dart | 8 +++--- lib/pages/dashboard/dashboard_screen.dart | 11 +++++--- lib/pages/orders/pending_orders_page.dart | 6 ++--- 5 files changed, 33 insertions(+), 24 deletions(-) rename lib/core/service/{pending_orders_service.dart => orders_service.dart} (68%) rename lib/core/viewModels/{pending_orders_view_model.dart => orders_view_model.dart} (80%) diff --git a/lib/core/service/pending_orders_service.dart b/lib/core/service/orders_service.dart similarity index 68% rename from lib/core/service/pending_orders_service.dart rename to lib/core/service/orders_service.dart index eb08d8f..a6e8541 100644 --- a/lib/core/service/pending_orders_service.dart +++ b/lib/core/service/orders_service.dart @@ -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 _orders = List(); List 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, diff --git a/lib/core/viewModels/pending_orders_view_model.dart b/lib/core/viewModels/orders_view_model.dart similarity index 80% rename from lib/core/viewModels/pending_orders_view_model.dart rename to lib/core/viewModels/orders_view_model.dart index 903ede5..8ce412b 100644 --- a/lib/core/viewModels/pending_orders_view_model.dart +++ b/lib/core/viewModels/orders_view_model.dart @@ -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(); +class OrdersViewModel extends BaseViewModel { + OrdersService _pendingOrdersService = locator(); List get orders => _pendingOrdersService.orders; diff --git a/lib/locator.dart b/lib/locator.dart index e12abbf..a10e30e 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -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()); } diff --git a/lib/pages/dashboard/dashboard_screen.dart b/lib/pages/dashboard/dashboard_screen.dart index a9e8bef..a6d2b5f 100644 --- a/lib/pages/dashboard/dashboard_screen.dart +++ b/lib/pages/dashboard/dashboard_screen.dart @@ -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 { @override Widget build(BuildContext context) { - return BaseView( + return BaseView( 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 { ); } - _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 { await model.insertOrder(); if (model.state == ViewState.ErrorLocal) { Utils.showErrorToast(model.error); + }else{ + AppToast.showSuccessToast(message: "Order Added"); } } diff --git a/lib/pages/orders/pending_orders_page.dart b/lib/pages/orders/pending_orders_page.dart index f7caff9..aa353f8 100644 --- a/lib/pages/orders/pending_orders_page.dart +++ b/lib/pages/orders/pending_orders_page.dart @@ -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 { @override Widget build(BuildContext context) { - return BaseView( + return BaseView( onModelReady: (model) => model.getPendingOrders(), builder: - (BuildContext context, PendingOrdersViewModel model, Widget child) => + (BuildContext context, OrdersViewModel model, Widget child) => Scaffold( appBar: AppBar( centerTitle: true,