diff --git a/lib/config/config.dart b/lib/config/config.dart index 2a6f133..679ef20 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -1,15 +1,22 @@ import 'package:flutter/cupertino.dart'; -const MAX_SMALL_SCREEN = 660; - +/// End points const BASE_URL = 'https://uat.hmgwebservices.com/Services'; - const GET_PROJECT = '/Lists.svc/REST/GetProject'; const LOGIN = "/Authentication.svc/REST/CheckDriverAuthentication"; +const GET_ALL_ORDERS = '/Patients.svc/REST/PatientER_Delivery_GetAllOrder'; +const SCAN_QR = '/Patients.svc/REST/PatientER_Delivery_OrderInsert'; +/// Body Constant +const CHANNEL = 9; + + +/// design constant +const MAX_SMALL_SCREEN = 660; -const GET_ALL_ORDERS = '/Patients.svc/REST/PatientER_Delivery_GetAllOrder'; class AppGlobal { static BuildContext context; } + + diff --git a/lib/core/model/scan_qr/scan_qr_request_model.dart b/lib/core/model/scan_qr/scan_qr_request_model.dart new file mode 100644 index 0000000..53c0284 --- /dev/null +++ b/lib/core/model/scan_qr/scan_qr_request_model.dart @@ -0,0 +1,44 @@ +class ScanQrRequestModel { + int deliveryOrderID; + int driverID; + int createdBy; + int channel; + int groupID; + String tokenID; + String userID; + String mobileNo; + + ScanQrRequestModel( + {this.deliveryOrderID, + this.driverID, + this.createdBy, + this.channel, + this.groupID, + this.tokenID, + this.userID, + this.mobileNo}); + + ScanQrRequestModel.fromJson(Map json) { + deliveryOrderID = json['DeliveryOrderID']; + driverID = json['DriverID']; + createdBy = json['CreatedBy']; + channel = json['Channel']; + groupID = json['GroupID']; + tokenID = json['TokenID']; + userID = json['UserID']; + mobileNo = json['MobileNo']; + } + + Map toJson() { + final Map data = new Map(); + data['DeliveryOrderID'] = this.deliveryOrderID; + data['DriverID'] = this.driverID; + data['CreatedBy'] = this.createdBy; + data['Channel'] = this.channel; + data['GroupID'] = this.groupID; + data['TokenID'] = this.tokenID; + data['UserID'] = this.userID; + data['MobileNo'] = this.mobileNo; + return data; + } +} diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index 5008fe5..e53f646 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -1,6 +1,8 @@ import 'dart:convert'; import 'package:driverapp/config/config.dart'; +import 'package:driverapp/config/shared_pref_kay.dart'; +import 'package:driverapp/core/model/authentication/authenticated_user.dart'; import 'package:driverapp/uitl/app_shared_preferences.dart'; import 'package:driverapp/uitl/utils.dart'; import 'package:http/http.dart' as http; @@ -23,8 +25,17 @@ class BaseAppClient { String url = BASE_URL + endPoint; try { - //Map profile = await sharedPref.getObj(DOCTOR_PROFILE); - // String token = await sharedPref.getString(TOKEN); + Map profile = await sharedPref.getObject(USER_PROFILE); + String token = await sharedPref.getString(TOKEN); + if (profile != null) { + AuthenticatedUser doctorProfile = AuthenticatedUser.fromJson(profile); + body['DriverID'] = doctorProfile?.userID; + body['CreatedBy'] = doctorProfile?.userID; + body['UserID'] = doctorProfile?.userID; + body['MobileNo'] = doctorProfile?.mobileNumber; + } + + body['Channel'] = CHANNEL; print("URL : $url"); print("Body : ${json.encode(body)}"); diff --git a/lib/core/service/pending_orders_service.dart b/lib/core/service/pending_orders_service.dart index f4024a3..eb08d8f 100644 --- a/lib/core/service/pending_orders_service.dart +++ b/lib/core/service/pending_orders_service.dart @@ -1,10 +1,12 @@ import 'package:driverapp/config/config.dart'; 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 { List _orders = List(); List get orders => _orders; + bool isOrderInserted; PendingOrders _requestGetPendingOrders = PendingOrders( driverID: 1111, @@ -14,9 +16,11 @@ class PendingOrdersService extends BaseService { tokenID: "@dm!n", userID: "1111", mobileNo: "0541710575", + firstName: "dfdfdf" ); Future getPendingOrders() async { + hasError = false; await baseAppClient.post(GET_ALL_ORDERS, onSuccess: (dynamic response, int statusCode) { _orders.clear(); @@ -28,4 +32,26 @@ class PendingOrdersService extends BaseService { super.error = error; }, body: _requestGetPendingOrders.toJson()); } + + + Future insertOrder() async { + ScanQrRequestModel _scanQrRequestModel = ScanQrRequestModel(deliveryOrderID: 129, groupID: 0); + hasError = false; + try { + await baseAppClient.post(SCAN_QR, + onSuccess: (dynamic response, int statusCode) { + isOrderInserted = response["PatientER_Delivery_IsOrderInserted"]; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: _scanQrRequestModel.toJson()); + } catch (e) { + + hasError = true; + super.error = error; + throw e; + } + } + + } diff --git a/lib/core/viewModels/pending_orders_view_model.dart b/lib/core/viewModels/pending_orders_view_model.dart index 0f66bba..903ede5 100644 --- a/lib/core/viewModels/pending_orders_view_model.dart +++ b/lib/core/viewModels/pending_orders_view_model.dart @@ -18,4 +18,15 @@ class PendingOrdersViewModel extends BaseViewModel { } else setState(ViewState.Idle); } + + + Future insertOrder() async { + setState(ViewState.ErrorLocal); + await _pendingOrdersService.insertOrder(); + if (_pendingOrdersService.hasError) { + error = _pendingOrdersService.error; + setState(ViewState.ErrorLocal); + } else + setState(ViewState.Idle); + } } diff --git a/lib/pages/dashboard/dashboard_screen.dart b/lib/pages/dashboard/dashboard_screen.dart index 94ff6ae..a9e8bef 100644 --- a/lib/pages/dashboard/dashboard_screen.dart +++ b/lib/pages/dashboard/dashboard_screen.dart @@ -1,5 +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/uitl/utils.dart'; import 'package:flutter/material.dart'; import '../base/base_view.dart'; import 'package:flutter/cupertino.dart'; @@ -238,10 +241,15 @@ class _DashboardScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'SCAN', - style: TextStyle( - fontSize: 35.0, color: Colors.white), + InkWell( + onTap:(){ + _scanQrAndGetPatient(context,model); + }, + child: Text( + 'SCAN', + style: TextStyle( + fontSize: 35.0, color: Colors.white), + ), ), Padding( padding: EdgeInsets.only(top: 6.0), @@ -392,4 +400,20 @@ class _DashboardScreenState extends State { ), ); } + + _scanQrAndGetPatient(BuildContext context,PendingOrdersViewModel model) async { + /// When give qr we will change this method to get data + /// var result = await BarcodeScanner.scan(); + /// int patientID = get from qr result + var result = await BarcodeScanner.scan(); + // if (result.rawContent == "") { + List listOfParams = result.rawContent.split(','); + String patientType = "1"; + await model.insertOrder(); + if (model.state == ViewState.ErrorLocal) { + Utils.showErrorToast(model.error); + } + + } + }