working on pharmacy some fixes on cart page and request body

merge-requests/283/head
mosazaid 4 years ago
parent 123b1de1a4
commit 74dd274502

@ -31,6 +31,7 @@ AuthenticatedUserObject authenticatedUserObject =
VitalSignService _vitalSignService = locator<VitalSignService>(); VitalSignService _vitalSignService = locator<VitalSignService>();
class BaseAppClient { class BaseAppClient {
post(String endPoint, post(String endPoint,
{Map<String, dynamic> body, {Map<String, dynamic> body,
Function(dynamic response, int statusCode) onSuccess, Function(dynamic response, int statusCode) onSuccess,
@ -132,7 +133,198 @@ class BaseAppClient {
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); // var parsed = json.decode(response.body.toString());
var parsed = json.decode(utf8.decode(response.bodyBytes));
if (parsed['Response_Message'] != null) {
onSuccess(parsed, statusCode);
} else {
if (parsed['ErrorType'] == 4) {
navigateToAppUpdate(
AppGlobal.context, parsed['ErrorEndUserMessage']);
}
if (isAllowAny) {
onSuccess(parsed, statusCode);
} else if (parsed['IsAuthenticated'] == null) {
if (parsed['isSMSSent'] == true) {
onSuccess(parsed, statusCode);
} else if (parsed['MessageStatus'] == 1) {
onSuccess(parsed, statusCode);
} else if (parsed['Result'] == 'OK') {
onSuccess(parsed, statusCode);
} else {
if (parsed != null) {
onSuccess(parsed, statusCode);
} else {
onFailure(
parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'],
statusCode);
logout();
}
}
} else if (parsed['MessageStatus'] == 1 ||
parsed['SMSLoginRequired'] == true) {
onSuccess(parsed, statusCode);
} else if (parsed['MessageStatus'] == 2 &&
parsed['IsAuthenticated']) {
if (parsed['SameClinicApptList'] != null) {
onSuccess(parsed, statusCode);
} else {
if (parsed['message'] == null &&
parsed['ErrorEndUserMessage'] == null) {
if (parsed['ErrorSearchMsg'] == null) {
onFailure("Server Error found with no available message",
statusCode);
} else {
onFailure(parsed['ErrorSearchMsg'], statusCode);
}
} else {
onFailure(
parsed['message'] ??
parsed['ErrorEndUserMessage'] ??
parsed['ErrorMessage'],
statusCode);
}
}
} else if (!parsed['IsAuthenticated']) {
await logout();
//helpers.showErrorToast('Your session expired Please login agian');
} else {
if (parsed['SameClinicApptList'] != null) {
onSuccess(parsed, statusCode);
} else {
if (parsed['message'] != null) {
onFailure(parsed['message'] ?? parsed['message'], statusCode);
} else {
onFailure(
parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'],
statusCode);
}
}
}
}
}
} else {
onFailure('Please Check The Internet Connection', -1);
}
} catch (e) {
print(e);
onFailure(e.toString(), -1);
}
}
postPharmacy(String endPoint,
{Map<String, dynamic> body,
Function(dynamic response, int statusCode) onSuccess,
Function(String error, int statusCode) onFailure,
bool isAllowAny = false,
bool isExternal = false}) async {
var token = await sharedPref.getString(PHARMACY_AUTORZIE_TOKEN);
var user = await sharedPref.getObject(USER_PROFILE);
String url;
if (isExternal) {
url = endPoint;
} else {
url = PHARMACY_BASE_URL + endPoint;
}
try {
//Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
var pharmacyToken = await sharedPref.getString(PHARMACY_AUTORZIE_TOKEN);
var user = await sharedPref.getObject(USER_PROFILE);
Map<String, String> headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': token ?? '',
'Mobilenumber': user != null
? getPhoneNumberWithoutZero(user['MobileNumber'].toString())
: "",
'Statictoken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9',
'Username': user != null ? user['PatientID'].toString() : "",
};
if (!isExternal) {
String token = await sharedPref.getString(TOKEN);
var languageID =
await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar');
if (body.containsKey('SetupID')) {
body['SetupID'] = body.containsKey('SetupID')
? body['SetupID'] != null
? body['SetupID']
: SETUP_ID
: SETUP_ID;
}
body['VersionID'] = VERSION_ID;
body['Channel'] = CHANNEL;
body['LanguageID'] = languageID == 'ar' ? 1 : 2;
body['IPAdress'] = IP_ADDRESS;
body['generalid'] = GENERAL_ID;
body['PatientOutSA'] = body.containsKey('PatientOutSA')
? body['PatientOutSA'] != null
? body['PatientOutSA']
: PATIENT_OUT_SA
: PATIENT_OUT_SA;
if (body.containsKey('isDentalAllowedBackend')) {
body['isDentalAllowedBackend'] =
body.containsKey('isDentalAllowedBackend')
? body['isDentalAllowedBackend'] != null
? body['isDentalAllowedBackend']
: IS_DENTAL_ALLOWED_BACKEND
: IS_DENTAL_ALLOWED_BACKEND;
}
body['DeviceTypeID'] = DeviceTypeID;
if (!body.containsKey('IsPublicRequest')) {
body['PatientType'] = body.containsKey('PatientType')
? body['PatientType'] != null
? body['PatientType']
: user['PatientType'] != null
? user['PatientType']
: PATIENT_TYPE
: PATIENT_TYPE;
body['PatientTypeID'] = body.containsKey('PatientTypeID')
? body['PatientTypeID'] != null
? body['PatientTypeID']
: user['PatientType'] != null
? user['PatientType']
: PATIENT_TYPE_ID
: PATIENT_TYPE_ID;
if (user != null) {
body['TokenID'] = token;
body['PatientID'] = body['PatientID'] != null
? body['PatientID']
: user['PatientID'];
body['PatientOutSA'] = user['OutSA'];
body['SessionID'] = SESSION_ID; //getSe
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': pharmacyToken,
'Mobilenumber': user['MobileNumber'].toString(),
'Statictoken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9',
'Username': user['PatientID'].toString(),
};
}
}
}
print("URL : $url");
print("Body : ${json.encode(body)}");
if (await Utils.checkConnection()) {
final response = await http.post(url.trim(),
body: json.encode(body), headers: headers);
final int statusCode = response.statusCode;
print("statusCode :$statusCode");
if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode);
} else {
// var parsed = json.decode(response.body.toString());
var parsed = json.decode(utf8.decode(response.bodyBytes));
if (parsed['Response_Message'] != null) { if (parsed['Response_Message'] != null) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);
} else { } else {
@ -248,7 +440,8 @@ class BaseAppClient {
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); // var parsed = json.decode(response.body.toString());
var parsed = json.decode(utf8.decode(response.bodyBytes));
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);
} }
} else { } else {
@ -280,7 +473,7 @@ class BaseAppClient {
if (await Utils.checkConnection()) { if (await Utils.checkConnection()) {
final response = await http.get(url.trim(), headers: { final response = await http.get(url.trim(), headers: {
'Content-Type': 'application/json', 'Content-Type': 'text/html; charset=utf-8',
'Accept': 'application/json', 'Accept': 'application/json',
'Authorization': token ?? '', 'Authorization': token ?? '',
'Mobilenumber': user != null 'Mobilenumber': user != null
@ -295,8 +488,9 @@ class BaseAppClient {
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); // var parsed = json.decode(response.body.toString());
onSuccess(parsed, statusCode); var bodyUtf = json.decode(utf8.decode(response.bodyBytes));
onSuccess(bodyUtf, statusCode);
} }
} else { } else {
onFailure('Please Check The Internet Connection', -1); onFailure('Please Check The Internet Connection', -1);
@ -481,7 +675,8 @@ class BaseAppClient {
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); // var parsed = json.decode(response.body.toString());
var parsed = json.decode(utf8.decode(response.bodyBytes));
if (parsed['Response_Message'] != null) { if (parsed['Response_Message'] != null) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);
} else { } else {

@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/LacumAccountInformation.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/LacumAccountInformation.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_detail.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart';
import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
@ -15,6 +16,7 @@ class OrderPreviewService extends BaseService {
List<Addresses> addresses = List(); List<Addresses> addresses = List();
LacumAccountInformation lacumInformation; LacumAccountInformation lacumInformation;
LacumAccountInformation lacumGroupInformation; LacumAccountInformation lacumGroupInformation;
List<OrderDetailModel> orderList = List();
Future getAddresses() async { Future getAddresses() async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID); var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
@ -42,13 +44,14 @@ class OrderPreviewService extends BaseService {
dynamic localRes; dynamic localRes;
hasError = false; hasError = false;
try { try {
await baseAppClient.getPharmacy("$GET_SHIPPING_OPTIONS$customerId/${selectedAddress.id}", await baseAppClient
onSuccess: (dynamic response, int statusCode) { .getPharmacy("$GET_SHIPPING_OPTIONS$customerId/${selectedAddress.id}",
localRes = response['shipping_option'][0]; onSuccess: (dynamic response, int statusCode) {
}, onFailure: (String error, int statusCode) { localRes = response['shipping_option'][0];
hasError = true; }, onFailure: (String error, int statusCode) {
super.error = error; hasError = true;
}, queryParams: queryParams); super.error = error;
}, queryParams: queryParams);
} catch (error) { } catch (error) {
throw error; throw error;
} }
@ -89,7 +92,7 @@ class OrderPreviewService extends BaseService {
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body["shopping_cart_item"] = choppingCartObject; body["shopping_cart_item"] = choppingCartObject;
await baseAppClient.post("$GET_SHOPPING_CART$productId", await baseAppClient.postPharmacy("$GET_SHOPPING_CART$productId",
onSuccess: (response, statusCode) async { onSuccess: (response, statusCode) async {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
@ -125,8 +128,9 @@ class OrderPreviewService extends BaseService {
super.error = ""; super.error = "";
dynamic localRes; dynamic localRes;
await baseAppClient.getPharmacy("$DELETE_SHOPPING_CART_ALL$customerId/ShoppingCart", await baseAppClient
onSuccess: (response, statusCode) async { .getPharmacy("$DELETE_SHOPPING_CART_ALL$customerId/ShoppingCart",
onSuccess: (response, statusCode) async {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
@ -167,23 +171,24 @@ class OrderPreviewService extends BaseService {
try { try {
await baseAppClient.post(GET_LACUM_GROUP_INFORMATION, await baseAppClient.post(GET_LACUM_GROUP_INFORMATION,
onSuccess: (response, statusCode) async { onSuccess: (response, statusCode) async {
lacumGroupInformation = LacumAccountInformation.fromJson(response); lacumGroupInformation = LacumAccountInformation.fromJson(response);
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: body); }, body: body);
} catch (error) { } catch (error) {
throw error; throw error;
} }
} }
Future makeOrder(PaymentCheckoutData paymentCheckoutData, List<ShoppingCart> shoppingCarts) async { Future makeOrder(PaymentCheckoutData paymentCheckoutData,
List<ShoppingCart> shoppingCarts) async {
paymentCheckoutData.address.isChecked = true; paymentCheckoutData.address.isChecked = true;
hasError = false; hasError = false;
super.error = ""; super.error = "";
var languageID = var languageID =
await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'en'); await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'en');
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID); var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
Map<String, dynamic> orderBody = Map(); Map<String, dynamic> orderBody = Map();
@ -192,10 +197,15 @@ class OrderPreviewService extends BaseService {
orderBody['billing_address'] = paymentCheckoutData.address; orderBody['billing_address'] = paymentCheckoutData.address;
orderBody['pick_up_in_store'] = false; orderBody['pick_up_in_store'] = false;
orderBody['payment_method_system_name'] = "Payments.PayFort"; orderBody['payment_method_system_name'] = "Payments.PayFort";
orderBody['shipping_method'] = languageID == 'ar' ? paymentCheckoutData.shippingOption.namen : paymentCheckoutData.shippingOption.name ; orderBody['shipping_method'] = languageID == 'ar'
orderBody['shipping_rate_computation_method_system_name'] = paymentCheckoutData.shippingOption.shippingRateComputationMethodSystemName; ? paymentCheckoutData.shippingOption.namen
orderBody['customer_id'] = customerId; : paymentCheckoutData.shippingOption.name;
orderBody['custom_values_xml'] = "PaymentOption:${getPaymentOptionName(paymentCheckoutData.paymentOption)}"; orderBody['shipping_rate_computation_method_system_name'] =
paymentCheckoutData
.shippingOption.shippingRateComputationMethodSystemName;
orderBody['customer_id'] = int.parse(customerId);
orderBody['custom_values_xml'] =
"PaymentOption:${getPaymentOptionName(paymentCheckoutData.paymentOption)}";
orderBody['shippingOption'] = paymentCheckoutData.shippingOption; orderBody['shippingOption'] = paymentCheckoutData.shippingOption;
orderBody['shipping_address'] = paymentCheckoutData.address; orderBody['shipping_address'] = paymentCheckoutData.address;
orderBody['lakum_amount'] = paymentCheckoutData.usedLakumPoints; orderBody['lakum_amount'] = paymentCheckoutData.usedLakumPoints;
@ -215,10 +225,15 @@ class OrderPreviewService extends BaseService {
try { try {
await baseAppClient.post(ORDER_SHOPPING_CART, await baseAppClient.post(ORDER_SHOPPING_CART,
onSuccess: (response, statusCode) async { onSuccess: (response, statusCode) async {
}, onFailure: (String error, int statusCode) { orderList.clear();
hasError = true; response['orders'].forEach((item) {
super.error = error; orderList.add(OrderDetailModel.fromJson(item));
}, body: body); print(response);
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
} catch (error) { } catch (error) {
throw error; throw error;
} }

@ -5,8 +5,10 @@ import 'package:diplomaticquarterapp/core/model/pharmacies/LacumAccountInformati
import 'package:diplomaticquarterapp/core/model/pharmacies/ShippingOption.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/ShippingOption.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCartResponse.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCartResponse.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_detail.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart'; import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
import '../../../locator.dart'; import '../../../locator.dart';
import '../base_view_model.dart'; import '../base_view_model.dart';
@ -17,6 +19,11 @@ class OrderPreviewViewModel extends BaseViewModel {
List<Addresses> get addresses => _orderService.addresses; List<Addresses> get addresses => _orderService.addresses;
LacumAccountInformation get lacumInformation => LacumAccountInformation get lacumInformation =>
_orderService.lacumInformation; _orderService.lacumInformation;
List<OrderDetailModel> get orderListModel => _orderService.orderList;
PharmacyModuleViewModel pharmacyModuleViewModel =
locator<PharmacyModuleViewModel>();
ShoppingCartResponse cartResponse = ShoppingCartResponse(); ShoppingCartResponse cartResponse = ShoppingCartResponse();
PaymentCheckoutData paymentCheckoutData = PaymentCheckoutData(); PaymentCheckoutData paymentCheckoutData = PaymentCheckoutData();
double totalAdditionalShippingCharge = 0; double totalAdditionalShippingCharge = 0;
@ -32,7 +39,7 @@ class OrderPreviewViewModel extends BaseViewModel {
} }
} }
getShoppingCart() async { Future getShoppingCart() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _orderService.getShoppingCart().then((res) { await _orderService.getShoppingCart().then((res) {
_handleGetShoppingCartResponse(res); _handleGetShoppingCartResponse(res);
@ -48,20 +55,20 @@ class OrderPreviewViewModel extends BaseViewModel {
} }
} }
changeProductQuantity(ShoppingCart product) async { Future changeProductQuantity(ShoppingCart product) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _orderService.changeProductQuantity(product.id, product).then((res) { await _orderService.changeProductQuantity(product.id, product).then((res) {
_handleGetShoppingCartResponse(res); _handleGetShoppingCartResponse(res);
}); });
if (_orderService.hasError) { if (_orderService.hasError) {
error = _orderService.error; error = _orderService.error;
setState(ViewState.Error); setState(ViewState.ErrorLocal);
} else { } else {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
} }
deleteProduct(ShoppingCart product) async { Future deleteProduct(ShoppingCart product) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _orderService.deleteProduct(product.id).then((res) { await _orderService.deleteProduct(product.id).then((res) {
_handleGetShoppingCartResponse(res); _handleGetShoppingCartResponse(res);
@ -74,7 +81,7 @@ class OrderPreviewViewModel extends BaseViewModel {
} }
} }
deleteShoppingCart() async { Future deleteShoppingCart() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _orderService.deleteShoppingCart().then((res) { await _orderService.deleteShoppingCart().then((res) {
_handleGetShoppingCartResponse(res); _handleGetShoppingCartResponse(res);
@ -182,6 +189,8 @@ class OrderPreviewViewModel extends BaseViewModel {
Future makeOrder() async { Future makeOrder() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await pharmacyModuleViewModel.generatePharmacyToken();
await _orderService.makeOrder(paymentCheckoutData, cartResponse.shoppingCarts); await _orderService.makeOrder(paymentCheckoutData, cartResponse.shoppingCarts);
if (_orderService.hasError) { if (_orderService.hasError) {
error = _orderService.error; error = _orderService.error;

@ -110,15 +110,16 @@ class OrderModelViewModel extends BaseViewModel {
message: "Your review has been Submitted successfully"); message: "Your review has been Submitted successfully");
} }
} }
Future makeOrder() async { Future makeOrder() async {
setState(ViewState.Busy); /* setState(ViewState.Busy);
await _orderServices.makeOrder(paymentCheckoutData, cartResponse.shoppingCarts); await _orderServices.makeOrder(paymentCheckoutData, cartResponse.shoppingCarts);
if (_orderServices.hasError) { if (_orderServices.hasError) {
error = _orderServices.error; error = _orderServices.error;
setState(ViewState.Error); setState(ViewState.Error);
} else { } else {
setState(ViewState.Idle); setState(ViewState.Idle);
} }*/
} }
} }

@ -44,13 +44,14 @@ class PharmacyModuleViewModel extends BaseViewModel {
// List<PharmacyProduct> get pharmacyPrescriptionsList => PharmacyProduct.pharmacyPrescriptionsList ; // List<PharmacyProduct> get pharmacyPrescriptionsList => PharmacyProduct.pharmacyPrescriptionsList ;
Future getPharmacyHomeData() async { Future getPharmacyHomeData() async {
setState(ViewState.Busy); await generatePharmacyToken();
var data = await sharedPref.getObject(USER_PROFILE); var data = await sharedPref.getObject(USER_PROFILE);
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID); var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
setState(ViewState.Busy);
if (authenticatedUserObject.isLogin && data != null && customerId == null) { if (authenticatedUserObject.isLogin && data != null && customerId == null) {
await _pharmacyService.makeVerifyCustomer(data); await _pharmacyService.makeVerifyCustomer(data);
// here must call getShoppingCard()
if (_pharmacyService.hasError) { if (_pharmacyService.hasError) {
error = _pharmacyService.error; error = _pharmacyService.error;
setState(ViewState.Error); setState(ViewState.Error);

@ -1,3 +1,4 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCartResponse.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCartResponse.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
@ -7,6 +8,7 @@ import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-preview
import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy-terms-conditions-page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy-terms-conditions-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductOrderItem.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductOrderItem.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/GestureIconButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/GestureIconButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -32,7 +34,7 @@ class CartOrderPage extends StatelessWidget {
baseViewModel: model, baseViewModel: model,
backgroundColor: Colors.white, backgroundColor: Colors.white,
body: !(model.cartResponse.shoppingCarts == null || body: !(model.cartResponse.shoppingCarts == null ||
model.cartResponse.shoppingCarts.length == 0) model.cartResponse.shoppingCarts.length == 0)
? Container( ? Container(
height: height * 0.85, height: height * 0.85,
width: double.infinity, width: double.infinity,
@ -70,8 +72,16 @@ class CartOrderPage extends StatelessWidget {
cart.shoppingCarts[index], () { cart.shoppingCarts[index], () {
print(cart.shoppingCarts[index] print(cart.shoppingCarts[index]
.quantity); .quantity);
model.changeProductQuantity( model
cart.shoppingCarts[index]); .changeProductQuantity(
cart.shoppingCarts[index])
.then((value) {
if (model.state ==
ViewState.ErrorLocal) {
Utils.showErrorToast(
model.error);
}
});
}, },
() => model.deleteProduct( () => model.deleteProduct(
cart.shoppingCarts[index]))) cart.shoppingCarts[index])))
@ -246,64 +256,62 @@ class _OrderBottomWidgetState extends State<OrderBottomWidget> {
height: widget.height * 0.070, height: widget.height * 0.070,
color: Color(0xffe6ffe0), color: Color(0xffe6ffe0),
padding: EdgeInsets.symmetric(horizontal: 4), padding: EdgeInsets.symmetric(horizontal: 4),
child: Expanded( child: Row(
child: Row( children: [
children: [ InkWell(
InkWell( onTap: () {
onTap: () { setState(() {
setState(() { isAgree = !isAgree;
isAgree = !isAgree; });
}); },
}, child: Container(
child: Container( width: 25.0,
width: 25.0, height: widget.height * 0.070,
height: widget.height * 0.070, decoration: new BoxDecoration(
decoration: new BoxDecoration( color: !isAgree
color: !isAgree ? Color(0xffeeeeee)
? Color(0xffeeeeee) : Colors.green,
: Colors.green, shape: BoxShape.circle,
shape: BoxShape.circle, ),
child: !isAgree
? null
: Padding(
padding: const EdgeInsets.all(0.0),
child: Icon(
Icons.check,
color: Colors.white,
size: 25,
), ),
child: !isAgree
? null
: Padding(
padding: const EdgeInsets.all(0.0),
child: Icon(
Icons.check,
color: Colors.white,
size: 25,
),
),
), ),
), ),
Expanded( ),
child: Container( Expanded(
padding: EdgeInsets.symmetric(horizontal: 4), child: Container(
margin: const EdgeInsets.symmetric(vertical: 4), padding: EdgeInsets.symmetric(horizontal: 4),
child: Texts( margin: const EdgeInsets.symmetric(vertical: 4),
TranslationBase.of(context) child: Texts(
.pharmacyServiceTermsCondition, TranslationBase.of(context)
fontSize: 13, .pharmacyServiceTermsCondition,
color: Colors.grey.shade800, fontSize: 13,
fontWeight: FontWeight.normal, color: Colors.grey.shade800,
), fontWeight: FontWeight.normal,
), ),
), ),
InkWell( ),
onTap: () => { InkWell(
Navigator.push(context, onTap: () => {
FadePage(page: PharmacyTermsConditions())) Navigator.push(context,
}, FadePage(page: PharmacyTermsConditions()))
child: Container( },
child: Icon( child: Container(
Icons.info, child: Icon(
size: 25, Icons.info,
color: Color(0xff005aff), size: 25,
), color: Color(0xff005aff),
), ),
), ),
], ),
), ],
), ),
), ),
Container( Container(

File diff suppressed because it is too large Load Diff

@ -72,7 +72,7 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
child: Texts( child: Texts(
projectProvider.isArabic projectProvider.isArabic
? widget.item.product.namen ? widget.item.product.namen
: widget.item.product.name, : "${widget.item.product.name}",
regular: true, regular: true,
textAlign: TextAlign.justify, textAlign: TextAlign.justify,
fontSize: 12, fontSize: 12,
@ -88,91 +88,90 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
), ),
margin: const EdgeInsets.only(bottom: 4), margin: const EdgeInsets.only(bottom: 4),
), ),
Row( Container(
children: [ margin: EdgeInsets.symmetric(vertical: 4),
InkWell( child: Row(
onTap: () => children: [
{_quantityOnChangeClick(Operation.dec)}, InkWell(
child: Container( onTap: () =>
width: 25, {_quantityOnChangeClick(Operation.dec)},
height: 25, child: Container(
child: Center( width: 25,
child: Texts( height: 25,
"-", child: Icon(
color: Colors.grey.shade400, Icons.remove, color: Colors.grey.shade400, size: 20,
)), ),
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.all( border: Border.all(
color: Colors.grey.shade400, color: Colors.grey.shade400,
width: 1.0, width: 1.0,
),
), ),
), ),
), ),
), Container(
Container( margin:
margin: const EdgeInsets.symmetric(horizontal: 4),
const EdgeInsets.symmetric(horizontal: 4),
width: 25,
height: 25,
color: Colors.grey.shade300,
child: Center(
child: TextField(
cursorColor: Colors.black,
keyboardType: TextInputType.number,
controller: _quantityController,
textAlign: TextAlign.center,
onChanged: (text) {
setState(() {
var value = int.tryParse(text);
if (value == null) {
widget.item.quantity = 0;
} else {
widget.item.quantity = int.parse(text);
}
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
});
},
)),
),
InkWell(
onTap: () =>
{_quantityOnChangeClick(Operation.inc)},
child: Container(
width: 25, width: 25,
height: 25, height: 25,
color: Colors.grey.shade300,
child: Center( child: Center(
child: Texts( child: TextField(
"+", cursorColor: Colors.black,
color: Colors.grey.shade400, keyboardType: TextInputType.number,
controller: _quantityController,
textAlign: TextAlign.center,
onChanged: (text) {
setState(() {
var value = int.tryParse(text);
if (value == null) {
widget.item.quantity = 0;
} else {
widget.item.quantity = int.parse(text);
}
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
});
},
)), )),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey.shade400,
width: 1.0,
),
),
), ),
), InkWell(
Expanded( onTap: () =>
child: Column( {_quantityOnChangeClick(Operation.inc)},
crossAxisAlignment: CrossAxisAlignment.end, child: Container(
children: [ width: 25,
Texts( height: 25,
TranslationBase.of(context).total, child: Icon(
color: Colors.grey.shade500, Icons.add, color: Colors.grey.shade400, size: 20,
fontWeight: FontWeight.bold, ),
fontSize: 12, decoration: BoxDecoration(
border: Border.all(
color: Colors.grey.shade400,
width: 1.0,
),
), ),
Texts( ),
"$_totalPrice ${projectProvider.isArabic ? widget.item.currencyn : widget.item.currency}",
fontSize: 12,
fontWeight: FontWeight.bold,
)
],
), ),
) Expanded(
], child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Texts(
TranslationBase.of(context).total,
color: Colors.grey.shade500,
fontWeight: FontWeight.bold,
fontSize: 12,
),
Texts(
"$_totalPrice ${projectProvider.isArabic ? widget.item.currencyn : widget.item.currency}",
fontSize: 12,
fontWeight: FontWeight.bold,
)
],
),
)
],
),
) )
], ],
), ),

Loading…
Cancel
Save