You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
8.3 KiB
Dart
226 lines
8.3 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:diplomaticquarterapp/config/config.dart';
|
|
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/GetCMCAllOrdersResponseModel.dart';
|
|
import 'package:diplomaticquarterapp/core/model/prescriptions/prescriptions_order.dart';
|
|
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart';
|
|
import 'package:diplomaticquarterapp/core/service/base_service.dart';
|
|
import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart';
|
|
import 'package:diplomaticquarterapp/locator.dart';
|
|
import 'package:diplomaticquarterapp/models/rrt/service_price.dart';
|
|
import 'package:diplomaticquarterapp/services/pharmacy_services/pharmacyAddress_service.dart';
|
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
|
|
|
import '../base_view_model.dart';
|
|
|
|
class RRTService extends BaseService {}
|
|
|
|
class _RRTServiceData {
|
|
List<GetCMCAllOrdersResponseModel> pendingOrders = [];
|
|
List<GetCMCAllOrdersResponseModel> completedOrders = [];
|
|
ServicePrice servicePrice;
|
|
}
|
|
|
|
class RRTViewModel extends BaseViewModel {
|
|
var _service = RRTService();
|
|
var _pharmacy_service = locator<PharmacyModuleService>();
|
|
var _pharmacy_address_service = locator<PharmacyAddressService>();
|
|
CustomerAddressesService _customerAddressesService = locator<CustomerAddressesService>();
|
|
|
|
List<AddressInfo> get addressesList => _customerAddressesService.addressesList;
|
|
|
|
_RRTServiceData rrtServiceData = _RRTServiceData();
|
|
|
|
Future<_RRTServiceData> loadRequiredData() async {
|
|
await getServicePrice();
|
|
// await getAllOrders();
|
|
await getAllOrdersRC();
|
|
return rrtServiceData;
|
|
}
|
|
|
|
Future<int> createOrder(Map<String, dynamic> body) async {
|
|
body['IdentificationNo'] = user.patientIdentificationNo;
|
|
body['NationalityID'] = user.nationalityID;
|
|
body['CreatedBy'] = user.patientIdentificationType;
|
|
body['OrderServiceID'] = 5;
|
|
var localRes;
|
|
int requestNo;
|
|
await _service.baseAppClient.post(PATIENT_ER_INSERT_PRES_ORDER, body: body, onSuccess: (response, statusCode) {
|
|
requestNo = response['RequestNo'];
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
});
|
|
return requestNo;
|
|
}
|
|
|
|
Future<int> createOrderRC(Map<String, dynamic> body) async {
|
|
// body['IdentificationNo'] = user.patientIdentificationNo;
|
|
// body['NationalityID'] = user.nationalityID;
|
|
// body['CreatedBy'] = user.patientIdentificationType;
|
|
// body['OrderServiceID'] = 5;
|
|
var localRes;
|
|
int requestNo;
|
|
await _service.baseAppClient.post(ADD_RRT_ORDER_RC, body: body, onSuccess: (response, statusCode) {
|
|
requestNo = response['response'];
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
});
|
|
return requestNo;
|
|
}
|
|
|
|
// Service ID: 4 == RRT
|
|
Future<_RRTServiceData> getAllOrders() async {
|
|
await _service.baseAppClient.post(GET_PRESCRIPTIONS_ALL_ORDERS, body: {}, onSuccess: (response, statusCode) {
|
|
var data = response["PatientER_GetPatientAllPresOrdersList"];
|
|
rrtServiceData.completedOrders.clear();
|
|
rrtServiceData.pendingOrders.clear();
|
|
if (data != null && data is List) {
|
|
data.forEach((json) {
|
|
if (json["ServiceID"] == 5) {
|
|
if (json["Status"] == 1 || json["Status"] == 2) {
|
|
// Pending
|
|
rrtServiceData.pendingOrders.add(GetCMCAllOrdersResponseModel.fromJson(json));
|
|
}
|
|
rrtServiceData.completedOrders.add(GetCMCAllOrdersResponseModel.fromJson(json));
|
|
}
|
|
});
|
|
}
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
});
|
|
return rrtServiceData;
|
|
}
|
|
|
|
Future<_RRTServiceData> getAllOrdersRC() async {
|
|
await _service.baseAppClient.post(GET_ALL_RRT_ORDERS_RC, body: {}, onSuccess: (response, statusCode) {
|
|
var data = response["response"];
|
|
rrtServiceData.completedOrders.clear();
|
|
rrtServiceData.pendingOrders.clear();
|
|
if (data != null && data is List) {
|
|
data.forEach((json) {
|
|
if (json["StatusId"] == 1 || json["StatusId"] == 2) {
|
|
// Pending
|
|
rrtServiceData.pendingOrders.add(GetCMCAllOrdersResponseModel.fromJson(json));
|
|
}
|
|
rrtServiceData.completedOrders.add(GetCMCAllOrdersResponseModel.fromJson(json));
|
|
});
|
|
}
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
});
|
|
return rrtServiceData;
|
|
}
|
|
|
|
Future getOrderDetails() async {
|
|
return null;
|
|
}
|
|
|
|
Future getAllQuestions() async {
|
|
dynamic response_;
|
|
await _service.baseAppClient.post(GET_ALL_RRT_QUESTIONS, body: {}, onSuccess: (response, statusCode) {
|
|
response_ = response;
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
});
|
|
return response_;
|
|
}
|
|
|
|
Future<ServicePrice> getServicePrice() async {
|
|
Map<String, dynamic> body = {"IdentificationNo": user.patientIdentificationNo};
|
|
ServicePrice servicePrice;
|
|
await _service.baseAppClient.post(GET_RRT_SERVICE_PRICE, body: body, onSuccess: (response, statusCode) {
|
|
var data = response['PatientE_RealRRT_GetServicePriceList'];
|
|
if (data != null && data is List) {
|
|
var priceData = data.first;
|
|
if (priceData != null) {
|
|
servicePrice = ServicePrice.fromJson(priceData);
|
|
rrtServiceData.servicePrice = servicePrice;
|
|
}
|
|
}
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
});
|
|
return servicePrice;
|
|
}
|
|
|
|
Future<bool> cancelOrder(PrescriptionsOrder order, {String reason = ""}) async {
|
|
var body = {"PresOrderID": order.iD, "PresOrderStatus": 4, "EditedBy": 3, "RejectionReason": reason};
|
|
var success = false;
|
|
await _service.baseAppClient.post(PATIENT_ER_UPDATE_PRES_ORDER, body: body, onSuccess: (response, statusCode) {
|
|
success = true;
|
|
rrtServiceData.pendingOrders.remove(order);
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
success = false;
|
|
});
|
|
return Future.value(success);
|
|
}
|
|
|
|
Future<bool> cancelOrderRC(GetCMCAllOrdersResponseModel order, {String reason = ""}) async {
|
|
Map<String, dynamic> body = {"Id": order.iD, "ClickButton": 16};
|
|
var success = false;
|
|
await _service.baseAppClient.post(UPDATE_RRT_ORDER_RC, body: body, onSuccess: (response, statusCode) {
|
|
success = true;
|
|
rrtServiceData.pendingOrders.remove(order);
|
|
}, onFailure: (error, statusCode) {
|
|
AppToast.showErrorToast(message: error);
|
|
success = false;
|
|
});
|
|
return Future.value(success);
|
|
}
|
|
|
|
Future<List<AddressInfo>> getAddresses() async {
|
|
Object error;
|
|
try {
|
|
var token = await sharedPref.getString(PHARMACY_AUTORZIE_TOKEN);
|
|
if (token == null) await _pharmacy_service.generatePharmacyToken();
|
|
|
|
await _pharmacy_service.makeVerifyCustomer({'PatientID': user.patientID.toString()});
|
|
await _pharmacy_address_service.getAddresses();
|
|
return _pharmacy_address_service.addresses;
|
|
} catch (e) {
|
|
error = e;
|
|
}
|
|
Future.error(error);
|
|
}
|
|
|
|
Future getCustomerAddresses() async {
|
|
setState(ViewState.Busy);
|
|
await _customerAddressesService.getCustomerAddresses();
|
|
if (_customerAddressesService.hasError) {
|
|
error = _customerAddressesService.error;
|
|
setState(ViewState.ErrorLocal);
|
|
} else {
|
|
setState(ViewState.Idle);
|
|
}
|
|
}
|
|
|
|
Future getCustomerInfo() async {
|
|
setState(ViewState.Busy);
|
|
await _pharmacy_service.generatePharmacyToken();
|
|
|
|
if (_customerAddressesService.hasError) {
|
|
error = _customerAddressesService.error;
|
|
await _pharmacy_service.createUser();
|
|
setState(ViewState.ErrorLocal);
|
|
} else {
|
|
await _pharmacy_service.createUser();
|
|
await getCustomerAddresses();
|
|
}
|
|
|
|
// setState(ViewState.Busy);
|
|
// await _pharmacy_service.generatePharmacyToken();
|
|
// if (_customerAddressesService.hasError) {
|
|
// error = _customerAddressesService.error;
|
|
// await _pharmacy_service.createUser();
|
|
// await getCustomerAddresses();
|
|
// setState(ViewState.ErrorLocal);
|
|
// } else {
|
|
// await _customerAddressesService.getCustomerInfo();
|
|
// await getCustomerAddresses();
|
|
// }
|
|
}
|
|
}
|