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.
PatientApp-KKUMC/lib/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart

239 lines
7.5 KiB
Dart

5 years ago
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/LacumAccountInformation.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShippingOption.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCartResponse.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_detail.dart';
5 years ago
import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
4 years ago
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import '../../../locator.dart';
import '../base_view_model.dart';
class OrderPreviewViewModel extends BaseViewModel {
OrderPreviewService _orderService = locator<OrderPreviewService>();
5 years ago
List<Addresses> get addresses => _orderService.addresses;
4 years ago
5 years ago
LacumAccountInformation get lacumInformation =>
_orderService.lacumInformation;
4 years ago
List<OrderDetailModel> get orderListModel => _orderService.orderList;
PharmacyModuleViewModel pharmacyModuleViewModel =
4 years ago
locator<PharmacyModuleViewModel>();
5 years ago
ShoppingCartResponse cartResponse = ShoppingCartResponse();
PaymentCheckoutData paymentCheckoutData = PaymentCheckoutData();
double totalAdditionalShippingCharge = 0;
setShoppingCartResponse(ShoppingCartResponse cart){
cartResponse = cart;
notifyListeners();
}
5 years ago
Future getOrderPreviewData() async {
setState(ViewState.Busy);
await _orderService.getAddresses();
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
getShoppingCart();
}
}
void update() {
4 years ago
notifyListeners();
}
Future getShoppingCart() async {
4 years ago
// setState(ViewState.Busy);
// GifLoaderDialogUtils.showMyDialog(
// locator<NavigationService>().navigatorKey.currentContext);
5 years ago
await _orderService.getShoppingCart().then((res) {
4 years ago
if (res != null) _handleGetShoppingCartResponse(res);
5 years ago
});
if (_orderService.hasError) {
error = _orderService.error;
4 years ago
// setState(ViewState.Error);
5 years ago
} else {
if (paymentCheckoutData != null) {
paymentCheckoutData.cartDataVisible = true;
}
4 years ago
// GifLoaderDialogUtils.hideDialog(
// locator<NavigationService>().navigatorKey.currentContext);
setState(ViewState.Idle);
5 years ago
}
}
4 years ago
Future<ShoppingCartResponse> changeProductQuantity(
ShoppingCart product) async {
5 years ago
setState(ViewState.Busy);
var resp = await _orderService.changeProductQuantity(product.id, product);
var object = _handleGetShoppingCartResponse(resp);
5 years ago
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.ErrorLocal);
5 years ago
} else {
setState(ViewState.Idle);
}
return object;
5 years ago
}
Future<ShoppingCartResponse> deleteProduct(ShoppingCart product) async {
5 years ago
setState(ViewState.Busy);
var resp = await _orderService.deleteProduct(product.id);
var object = _handleGetShoppingCartResponse(resp);
5 years ago
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
return object;
5 years ago
}
Future deleteShoppingCart() async {
5 years ago
setState(ViewState.Busy);
await _orderService.deleteShoppingCart().then((res) {
_handleGetShoppingCartResponse(res);
});
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
ShoppingCartResponse _handleGetShoppingCartResponse(Map res) {
5 years ago
totalAdditionalShippingCharge = 0;
if (res == null) {
error = "response is null";
setState(ViewState.Error);
return null;
5 years ago
}
print(res);
cartResponse.itemCount = res["item_count"];
cartResponse.quantityCount = res["quantity_count"];
cartResponse.subtotal = res["subtotal"];
cartResponse.subtotalWithVat = res["subtotal_with_vat"];
cartResponse.subtotalVatAmount = res["subtotal_vat_amount"];
cartResponse.subtotalVatRate = res["subtotal_vat_rate"];
cartResponse.shoppingCarts = List();
res["shopping_carts"].forEach((item) {
ShoppingCart shoppingCart = ShoppingCart.fromJson(item);
cartResponse.shoppingCarts.add(shoppingCart);
4 years ago
totalAdditionalShippingCharge +=
shoppingCart.product.additionalShippingCharge;
5 years ago
});
return cartResponse;
5 years ago
}
String getPaymentOptionImage(PaymentOption paymentOption) {
String assetFile = "assets/images/pharmacy_module/payment/";
switch (paymentOption.index) {
case 0:
return "${assetFile}mada.png";
break;
case 1:
return "${assetFile}sadad.png";
break;
case 2:
return "${assetFile}visa.png";
break;
case 3:
return "${assetFile}mastercard.png";
break;
case 4:
return "${assetFile}installment.png";
break;
default:
return "";
}
}
String getPaymentOptionName(PaymentOption paymentOption) {
return _orderService.getPaymentOptionName(paymentOption);
}
getInformationsByAddress() async {
await getLacumAccountInformation();
await getShippingOption();
}
getLacumAccountInformation() async {
setState(ViewState.Busy);
await _orderService.getLacumAccountInformation();
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
getLacumGroupData();
}
}
Future getLacumGroupData() async {
setState(ViewState.Busy);
await _orderService.getLacumGroupInformation();
paymentCheckoutData.lacumInformation = _orderService.lacumGroupInformation;
4 years ago
paymentCheckoutData.usedLakumPoints = paymentCheckoutData
.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount;
5 years ago
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
getShippingOption() async {
setState(ViewState.Busy);
4 years ago
await _orderService
.getShippingOption(paymentCheckoutData.address)
.then((res) {
paymentCheckoutData.shippingOption = ShippingOption.fromJson(res);
setState(ViewState.Idle);
5 years ago
});
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
Future makeOrder() async {
setState(ViewState.Busy);
await pharmacyModuleViewModel.generatePharmacyToken();
4 years ago
await _orderService.makeOrder(
paymentCheckoutData, cartResponse.shoppingCarts);
5 years ago
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.ErrorLocal);
5 years ago
} else {
setState(ViewState.Idle);
}
}
bool isCartItemsOutOfStock() {
bool outOfStock = false;
for (int i = 0; i < cartResponse.shoppingCarts.length; i++) {
if (cartResponse.shoppingCarts[i].product.stockQuantity == 0) {
outOfStock = true;
break;
}
}
return outOfStock;
}
}
5 years ago
enum PaymentOption { meda, sadad, visa, mastercard, installments }