Merge branch 'development_new_design_2.0' into new_design_sikander

# Conflicts:
#	lib/pages/parent_categorise_page.dart
merge-requests/524/head
Sikander Saleem 4 years ago
commit 044c442ce0

@ -21,6 +21,7 @@ const THEME_VALUE = 'is_vibration';
const MAIN_USER = 'main-user';
const PHARMACY_LAST_VISITED_PRODUCTS = 'last-visited';
const PHARMACY_CUSTOMER_ID = 'costumer-id';
const PHARMACY_CUSTOMER_GUID = 'customer-guid';
const PHARMACY_CUSTOMER_OBJECT = 'pharmacy-customer-object';
const IS_ROBOT_VISIBLE = 'robot-visible';
const IS_ROBOT_INIT = 'robot-init';

@ -39,7 +39,8 @@ class CustomerAddressesService extends BaseService {
Map<String, String> queryParams = {'fields': 'addresses'};
hasError = false;
var customerID = await sharedPref.getObject(PHARMACY_CUSTOMER_ID);
await baseAppClient.getPharmacy("$BASE_PHARMACY_URL$GET_CUSTOMER_ADDRESSES$customerID", onSuccess: (dynamic response, int statusCode) {
var customerGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
await baseAppClient.getPharmacy("$BASE_PHARMACY_URL$GET_CUSTOMER_ADDRESSES$customerID/$customerGUID", onSuccess: (dynamic response, int statusCode) {
addressesList.clear();
response["customers"][0]["addresses"].forEach((data) {
addressesList.add(AddressInfo.fromJson(data));

@ -21,10 +21,11 @@ class OrderPreviewService extends BaseService {
Future getAddresses() async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
var customerGUID = await sharedPref.getString(PHARMACY_CUSTOMER_GUID);
Map<String, String> queryParams = {'fields': 'addresses'};
hasError = false;
try {
await baseAppClient.getPharmacy("$GET_CUSTOMERS_ADDRESSES$customerId", onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy("$GET_CUSTOMERS_ADDRESSES$customerId/$customerGUID", onSuccess: (dynamic response, int statusCode) {
addresses.clear();
response['customers'][0]['addresses'].forEach((item) {
addresses.add(Addresses.fromJson(item));
@ -58,13 +59,15 @@ class OrderPreviewService extends BaseService {
Future<Map> getShoppingCart() async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
var customerGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
if (customerId == null) return null;
Map<String, String> queryParams = {'shopping_cart_type': '1'};
dynamic localRes;
hasError = false;
try {
await baseAppClient.getPharmacy("$GET_SHOPPING_CART$customerId", onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy("$GET_SHOPPING_CART$customerId/$customerGUID", onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
hasError = true;

@ -22,16 +22,12 @@ class PharmacyModuleService extends BaseService {
List<PharmacyProduct> mostViewedProducts = List();
Future makeVerifyCustomer(dynamic data) async {
Map<String, String> queryParams = {
'FileNumber': data['PatientID'].toString()
};
Map<String, String> queryParams = {'FileNumber': data['PatientID'].toString()};
hasError = false;
try {
await baseAppClient.getPharmacy(PHARMACY_VERIFY_CUSTOMER,
onSuccess: (dynamic response, int statusCode) async {
await baseAppClient.getPharmacy(PHARMACY_VERIFY_CUSTOMER, onSuccess: (dynamic response, int statusCode) async {
if (response['UserName'] != null) {
sharedPref.setString(
PHARMACY_CUSTOMER_ID, response['CustomerId'].toString());
sharedPref.setString(PHARMACY_CUSTOMER_ID, response['CustomerId'].toString());
print(response);
} else {
await createUser();
@ -57,13 +53,14 @@ class PharmacyModuleService extends BaseService {
};
hasError = false;
try {
await baseAppClient.getPharmacy(PHARMACY_CREATE_CUSTOMER,
onSuccess: (dynamic response, int statusCode) async {
await baseAppClient.getPharmacy(PHARMACY_CREATE_CUSTOMER, onSuccess: (dynamic response, int statusCode) async {
if (!response['IsRegistered']) {
} else {
customerInfo = CustomerInfo.fromJson(response);
await sharedPref.setObject(
PHARMACY_CUSTOMER_ID, customerInfo.customerId);
print(response['customerDto']);
print(response['customerDto']['customerGuid']);
await sharedPref.setObject(PHARMACY_CUSTOMER_ID, customerInfo.customerId);
await sharedPref.setObject(PHARMACY_CUSTOMER_GUID, response['customerDto']['customerGuid']);
}
// await generatePharmacyToken();
}, onFailure: (String error, int statusCode) {
@ -83,11 +80,9 @@ class PharmacyModuleService extends BaseService {
};
hasError = false;
try {
await baseAppClient.getPharmacy(PHARMACY_AUTORZIE_CUSTOMER,
onSuccess: (dynamic response, int statusCode) async {
await baseAppClient.getPharmacy(PHARMACY_AUTORZIE_CUSTOMER, onSuccess: (dynamic response, int statusCode) async {
if (response['Status'] == 200) {
await sharedPref.setString(
PHARMACY_AUTORZIE_TOKEN, response['token'].toString());
await sharedPref.setString(PHARMACY_AUTORZIE_TOKEN, response['token'].toString());
}
}, onFailure: (String error, int statusCode) {
hasError = true;
@ -101,8 +96,7 @@ class PharmacyModuleService extends BaseService {
Future getBannerListList() async {
hasError = false;
try {
await baseAppClient.getPharmacy(GET_PHARMACY_BANNER,
onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy(GET_PHARMACY_BANNER, onSuccess: (dynamic response, int statusCode) {
bannerItems.clear();
response['images'].forEach((item) {
bannerItems.add(PharmacyImageObject.fromJson(item));
@ -120,8 +114,7 @@ class PharmacyModuleService extends BaseService {
if (manufacturerList.isNotEmpty) return;
Map<String, String> queryParams = {'page': '1', 'limit': '8'};
try {
await baseAppClient.getPharmacy(GET_PHARMACY_TOP_MANUFACTURER,
onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy(GET_PHARMACY_TOP_MANUFACTURER, onSuccess: (dynamic response, int statusCode) {
manufacturerList.clear();
response['manufacturer'].forEach((item) {
Manufacturer manufacturer = Manufacturer.fromJson(item);
@ -147,8 +140,7 @@ class PharmacyModuleService extends BaseService {
'id,discount_ids,name,namen,localized_names,display_order,short_description,full_description,full_descriptionn,sku,order_minimum_quantity,order_maximum_quantity,price,old_price,images,is_rx,rx_message,rx_messagen,discount_name,discount_namen,approved_rating_sum,approved_total_reviews,allow_back_in_stock_subscriptions,stock_quantity,stock_availability,stock_availabilityn,discount_percentage,reviews',
};
try {
await baseAppClient.getPharmacy(GET_PHARMACY_BEST_SELLER_PRODUCT,
onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy(GET_PHARMACY_BEST_SELLER_PRODUCT, onSuccess: (dynamic response, int statusCode) {
bestSellerProducts.clear();
response['products'].forEach((item) {
bestSellerProducts.add(PharmacyProduct.fromJson(item));
@ -165,23 +157,18 @@ class PharmacyModuleService extends BaseService {
Future getLastVisitedProducts() async {
String lastVisited = "";
if (await this.sharedPref.getString(PHARMACY_LAST_VISITED_PRODUCTS) !=
null) {
lastVisited =
await this.sharedPref.getString(PHARMACY_LAST_VISITED_PRODUCTS);
if (await this.sharedPref.getString(PHARMACY_LAST_VISITED_PRODUCTS) != null) {
lastVisited = await this.sharedPref.getString(PHARMACY_LAST_VISITED_PRODUCTS);
// lastVisited = "2458,4561";
try {
await baseAppClient
.getPharmacy("$GET_PHARMACY_PRODUCTs_BY_IDS$lastVisited",
onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy("$GET_PHARMACY_PRODUCTs_BY_IDS$lastVisited", onSuccess: (dynamic response, int statusCode) {
lastVisitedProducts.clear();
response['products'].forEach((item) {
lastVisitedProducts.add(PharmacyProduct.fromJson(item));
});
hasError = false;
}, onFailure: (String error, int statusCode) {
hasError =
true; // sharedPref.setString(PHARMACY_LAST_VISITED_PRODUCTS, "");
hasError = true; // sharedPref.setString(PHARMACY_LAST_VISITED_PRODUCTS, "");
super.error = error;
});
} catch (error) {
@ -197,8 +184,7 @@ class PharmacyModuleService extends BaseService {
'id,discount_ids,name,reviews,namen,localized_names,display_order,short_description,full_description,full_descriptionn,sku,order_minimum_quantity,order_maximum_quantity,price,old_price,images,is_rx,rx_message,rx_messagen,discount_name,discount_namen,approved_rating_sum,approved_total_reviews,allow_back_in_stock_subscriptions,stock_quantity,stock_availability,stock_availabilityn,discount_percentage',
};
try {
await baseAppClient.getPharmacy(GET_MOST_VIEWED_PRODUCTS,
onSuccess: (dynamic response, int statusCode) {
await baseAppClient.getPharmacy(GET_MOST_VIEWED_PRODUCTS, onSuccess: (dynamic response, int statusCode) {
mostViewedProducts.clear();
response['products'].forEach((item) {
mostViewedProducts.add(PharmacyProduct.fromJson(item));

@ -187,11 +187,14 @@ class PharmacyCategoriseService extends BaseService {
);
}
Future getSubProducts({String id}) async {
Future getSubProducts(
{String id, int pageIndex, bool isLoading = false}) async {
hasError = false;
_subProductsList.clear();
if (isLoading == false) {
_subProductsList.clear();
}
String endPoint = id != null
? GET_SUB_PRODUCTS + "$id" + '&page=1&limit=50'
? GET_SUB_PRODUCTS + "$id" + '&page=' + '$pageIndex' + '&limit=24'
: GET_SUB_PRODUCTS + "";
await baseAppClient.getPharmacy(
endPoint,

@ -37,9 +37,9 @@ class OrderModelViewModel extends BaseViewModel {
Future getOrder(customerId, pageID) async {
Future getOrder(customerId, customerGUID, pageID) async {
setState(ViewState.Busy);
await _orderService.getOrder(customerId, pageID);
await _orderService.getOrder(customerId, customerGUID, pageID);
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);

@ -121,7 +121,7 @@ class PharmacyCategoriseViewModel extends BaseViewModel {
hasError = false;
// _insuranceCardService.clearInsuranceCard();
setState(ViewState.BusyLocal);
//GifLoaderDialogUtils.showMyDialog(context);
GifLoaderDialogUtils.showMyDialog(context);
await _pharmacyCategoriseService.getParentProducts(
id: i, pageNumber: pageIndex, isLoading: isLoading);
if (_pharmacyCategoriseService.hasError) {
@ -129,31 +129,45 @@ class PharmacyCategoriseViewModel extends BaseViewModel {
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
//GifLoaderDialogUtils.hideDialog(context);
GifLoaderDialogUtils.hideDialog(context);
}
Future getSubCategorise({String i}) async {
Future getSubCategorise(
{String i,
int pageIndex,
bool isLoading = false,
BuildContext context}) async {
hasError = false;
// _insuranceCardService.clearInsuranceCard();
setState(ViewState.Busy);
await _pharmacyCategoriseService.getSubCategorise(id: i);
await _pharmacyCategoriseService.getSubCategorise(
id: i,
);
if (_pharmacyCategoriseService.hasError) {
error = _pharmacyCategoriseService.error;
setState(ViewState.ErrorLocal);
} else
getSubProducts(i: i);
getSubProducts(
i: i, pageIndex: pageIndex, isLoading: isLoading, context: context);
}
Future getSubProducts({String i}) async {
Future getSubProducts(
{String i,
int pageIndex,
bool isLoading = false,
BuildContext context}) async {
hasError = false;
// _insuranceCardService.clearInsuranceCard();
setState(ViewState.Busy);
await _pharmacyCategoriseService.getSubProducts(id: i);
setState(ViewState.BusyLocal);
GifLoaderDialogUtils.showMyDialog(context);
await _pharmacyCategoriseService.getSubProducts(
id: i, pageIndex: pageIndex, isLoading: isLoading);
if (_pharmacyCategoriseService.hasError) {
error = _pharmacyCategoriseService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
GifLoaderDialogUtils.hideDialog(context);
}
Future getFinalProducts({String i}) async {

@ -146,7 +146,6 @@ class _NewCMCStepTowPageState extends State<NewCMCStepTowPage> {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
isShowAppBar: true,
description: TranslationBase.of(context).infoCMC,

File diff suppressed because it is too large Load Diff

@ -91,46 +91,40 @@ class _CartOrderPageState extends State<CartOrderPage> {
endIndent: 0,
),
Container(
child: Column(
children: [
...List.generate(
model.cartResponse.shoppingCarts != null
? model.cartResponse.shoppingCarts.length
: 0,
(index) => ProductOrderItem(
model.cartResponse
.shoppingCarts[index], () async {
GifLoaderDialogUtils.showMyDialog(
context);
await model.changeProductQuantity(model
.cartResponse.shoppingCarts[index]);
if (model.state != ViewState.Error) {
// appScaffold.appBar.badgeUpdater(
// '${value.quantityCount ?? 0}');
}
if (model.state ==
ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
}
GifLoaderDialogUtils.hideDialog(
context);
}, () async {
GifLoaderDialogUtils.showMyDialog(
context);
await model
.deleteProduct(model.cartResponse
.shoppingCarts[index])
.then((value) {
if (model.state ==
ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
}
GifLoaderDialogUtils.hideDialog(
context);
});
}))
],
),
child: ListView.builder(
itemCount:
model.cartResponse.shoppingCarts.length,
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: const AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
return ProductOrderItem(
item: model.cartResponse.shoppingCarts[index],
changeCartItems: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.changeProductQuantity(model
.cartResponse.shoppingCarts[index]);
if (model.state != ViewState.Error) {}
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
}
GifLoaderDialogUtils.hideDialog(context);
},
deleteCartItems: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model
.deleteProduct(model
.cartResponse.shoppingCarts[index])
.then((value) {
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
}
GifLoaderDialogUtils.hideDialog(context);
});
},
model: model,
);
}),
),
const Divider(
color: Color(0xFFD6D6D6),
@ -289,8 +283,9 @@ class _OrderBottomWidgetState extends State<OrderBottomWidget> {
Widget build(BuildContext context) {
ProjectViewModel projectProvider = Provider.of(context);
return ! widget.isLoading && !(widget.model.cartResponse.shoppingCarts == null ||
widget.model.cartResponse.shoppingCarts.length == 0)
return !widget.isLoading &&
!(widget.model.cartResponse.shoppingCarts == null ||
widget.model.cartResponse.shoppingCarts.length == 0)
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [

@ -1,9 +1,13 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_detail.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page_pharmcy.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
@ -35,8 +39,7 @@ class PaymentBottomWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
margin:
EdgeInsets.symmetric(horizontal: 0, vertical: 4),
margin: EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Row(
children: [
Texts(
@ -46,8 +49,7 @@ class PaymentBottomWidget extends StatelessWidget {
color: Color(0xff929295),
),
Padding(
padding:
const EdgeInsets.symmetric(horizontal: 4),
padding: const EdgeInsets.symmetric(horizontal: 4),
child: Texts(
"${TranslationBase.of(context).inclusiveVat}",
fontSize: 8,
@ -76,26 +78,22 @@ class PaymentBottomWidget extends StatelessWidget {
width: 1,
),
),
onPressed: (orderPreviewViewModel
.paymentCheckoutData.address !=
null &&
orderPreviewViewModel
.paymentCheckoutData.paymentOption !=
null)
onPressed: (orderPreviewViewModel.paymentCheckoutData.address != null && orderPreviewViewModel.paymentCheckoutData.paymentOption != null)
? () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.makeOrder();
if (model.state == ViewState.Idle) {
AppToast.showSuccessToast(
message: TranslationBase.of(context).compeleteOrderMsg
// "Order has been placed successfully!!"
);
openPayment(
model.orderListModel[0], model.authenticatedUserObject.user);
AppToast.showSuccessToast(message: TranslationBase.of(context).compeleteOrderMsg);
GifLoaderDialogUtils.hideDialog(context);
openPayment(model.orderListModel[0], model.authenticatedUserObject.user);
} else {
AppToast.showErrorToast(message: model.error);
}
Navigator.pop(context);
Navigator.pop(context);
navigateToCartPage();
// Navigator.pop(context);
// Navigator.pop(context);
// Navigator.pop(context);
// Navigator.pop(context);
}
: null,
child: Padding(
@ -103,34 +101,14 @@ class PaymentBottomWidget extends StatelessWidget {
child: new Text(
"${TranslationBase.of(context).proceedPay}",
style: new TextStyle(
color: (orderPreviewViewModel
.paymentCheckoutData.address !=
null &&
orderPreviewViewModel.paymentCheckoutData
.paymentOption !=
null)
? Colors.white
: Colors.grey.shade400,
color:
(orderPreviewViewModel.paymentCheckoutData.address != null && orderPreviewViewModel.paymentCheckoutData.paymentOption != null) ? Colors.white : Colors.grey.shade400,
fontWeight: FontWeight.bold,
fontSize: 12),
),
),
color:
(orderPreviewViewModel.paymentCheckoutData.address !=
null &&
orderPreviewViewModel
.paymentCheckoutData.paymentOption !=
null)
? Colors.green
: Color(0xff929295),
disabledColor:
(orderPreviewViewModel.paymentCheckoutData.address !=
null &&
orderPreviewViewModel
.paymentCheckoutData.paymentOption !=
null)
? Colors.green
: Color(0xff929295),
color: (orderPreviewViewModel.paymentCheckoutData.address != null && orderPreviewViewModel.paymentCheckoutData.paymentOption != null) ? Colors.green : Color(0xff929295),
disabledColor: (orderPreviewViewModel.paymentCheckoutData.address != null && orderPreviewViewModel.paymentCheckoutData.paymentOption != null) ? Colors.green : Color(0xff929295),
),
),
],
@ -144,20 +122,10 @@ class PaymentBottomWidget extends StatelessWidget {
OrderDetailModel order,
AuthenticatedUser authenticatedUser,
) {
browser = new MyInAppBrowser(
onExitCallback: onBrowserExit, onLoadStartCallback: onBrowserLoadStart);
browser = new MyInAppBrowser(onExitCallback: onBrowserExit, onLoadStartCallback: onBrowserLoadStart);
browser.openPharmacyPaymentBrowser(
order,
order.orderTotal,
'ePharmacy Order',
order.id,
order.billingAddress.email,
order.customValuesXml,
"${authenticatedUser.firstName} ${authenticatedUser.middleName} ${authenticatedUser.lastName}",
authenticatedUser.patientID,
authenticatedUser,
browser);
browser.openPharmacyPaymentBrowser(order, order.orderTotal, 'ePharmacy Order', order.id, order.billingAddress.email, order.customValuesXml,
"${authenticatedUser.firstName} ${authenticatedUser.middleName} ${authenticatedUser.lastName}", authenticatedUser.patientID, authenticatedUser, browser);
}
onBrowserLoadStart(String url) {
@ -181,19 +149,20 @@ class PaymentBottomWidget extends StatelessWidget {
});
}
navigateToCartPage() {
Navigator.pushAndRemoveUntil(locator<NavigationService>().navigatorKey.currentContext, MaterialPageRoute(builder: (context) => LandingPagePharmacy(currentTab: 0)), (Route<dynamic> r) => false);
}
onBrowserExit(AppoitmentAllHistoryResultList appo, bool isPaymentMade) {
print("onBrowserExit Called!!!!");
if (isPaymentMade) {
AppToast.showSuccessToast(
message: "شكراً\nPayment status for your order is Paid");
Navigator.pop(context);
Navigator.pop(context);
AppToast.showSuccessToast(message: "شكراً\nPayment status for your order is Paid");
// Navigator.pop(context);
// Navigator.pop(context);
} else {
AppToast.showErrorToast(
message:
"Transaction Failed!\Your transaction is field to some reason please try again or contact to the administration");
Navigator.pop(context);
Navigator.pop(context);
AppToast.showErrorToast(message: "Transaction Failed!\Your transaction is field to some reason please try again or contact to the administration");
// Navigator.pop(context);
// Navigator.pop(context);
}
}
}

@ -1,4 +1,6 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
@ -11,8 +13,10 @@ class ProductOrderItem extends StatefulWidget {
final ShoppingCart item;
final VoidCallback changeCartItems;
final VoidCallback deleteCartItems;
final OrderPreviewViewModel model;
ProductOrderItem(this.item, this.changeCartItems, this.deleteCartItems);
ProductOrderItem(
{this.item, this.changeCartItems, this.deleteCartItems, this.model});
@override
_ProductOrderItemState createState() => _ProductOrderItemState();
@ -24,14 +28,14 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
@override
void initState() {
_quantityController.text = "${widget.item.quantity}";
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
super.initState();
}
@override
Widget build(BuildContext context) {
_quantityController.text = "${widget.item.quantity}";
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
ProjectViewModel projectProvider = Provider.of(context);
return Column(
@ -40,7 +44,8 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
leading: InkWell(
onTap: () => {widget.deleteCartItems()},
child: Icon(
FontAwesomeIcons.trashAlt,size: 15,
FontAwesomeIcons.trashAlt,
size: 15,
color: Colors.grey.shade700,
),
),
@ -50,17 +55,18 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
(widget.item.product.images != null && widget.item.product.images.length > 0)
(widget.item.product.images != null &&
widget.item.product.images.length > 0)
? Image.network(
widget.item.product.images[0].src,
fit: BoxFit.cover,
height: 80,
)
widget.item.product.images[0].src,
fit: BoxFit.cover,
height: 80,
)
: Image.asset(
"assets/images/no_image.png",
fit: BoxFit.cover,
height: 80,
),
"assets/images/no_image.png",
fit: BoxFit.cover,
height: 80,
),
Expanded(
child: Container(
margin:
@ -101,7 +107,9 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
width: 25,
height: 25,
child: Icon(
Icons.remove, color: Colors.grey.shade400, size: 20,
Icons.remove,
color: Colors.grey.shade400,
size: 20,
),
decoration: BoxDecoration(
border: Border.all(
@ -129,7 +137,8 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
if (value == null) {
widget.item.quantity = 0;
} else {
widget.item.quantity = int.parse(text);
widget.item.quantity =
int.parse(text);
}
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
@ -144,7 +153,9 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
width: 25,
height: 25,
child: Icon(
Icons.add, color: Colors.grey.shade400, size: 20,
Icons.add,
color: Colors.grey.shade400,
size: 20,
),
decoration: BoxDecoration(
border: Border.all(
@ -169,21 +180,21 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
fontSize: 12,
fontWeight: FontWeight.bold,
),
widget.item.product.stockQuantity == 0 ?
Texts(
projectProvider.isArabic
? widget.item.product.stockAvailabilityn
: widget.item.product.stockAvailability,
fontWeight: FontWeight.normal,
fontSize: 13,
color:Colors.red,
): Texts(""),
widget.item.product.stockQuantity == 0
? Texts(
projectProvider.isArabic
? widget.item.product
.stockAvailabilityn
: widget.item.product
.stockAvailability,
fontWeight: FontWeight.normal,
fontSize: 13,
color: Colors.red,
)
: Texts(""),
],
),
),
],
),
)
@ -209,7 +220,7 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
_quantityOnChangeClick(Operation operation) {
int newValue = 0;
setState(() {
setState(() async {
switch (operation) {
case Operation.inc:
{
@ -230,14 +241,20 @@ class _ProductOrderItemState extends State<ProductOrderItem> {
}
if (newValue > 0) {
widget.item.quantity = newValue;
_quantityController.text = "${widget.item.quantity}";
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
await widget.changeCartItems();
if (widget.model.state == ViewState.ErrorLocal) {
if (operation == Operation.dec) {
newValue = widget.item.quantity + 1;
} else {
newValue = widget.item.quantity - 1;
}
} else {
_quantityController.text = "${widget.item.quantity}";
_totalPrice =
"${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}";
}
}
});
if (newValue > 0) {
widget.changeCartItems();
}
}
@override

@ -1,6 +1,7 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/orders_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/order/OrderDetails.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -8,6 +9,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
dynamic languageID;
@ -15,8 +17,9 @@ class OrderPage extends StatefulWidget {
// orderList({this.customerId, this.pageId});
String customerID;
String customerGUID;
OrderPage({@required this.customerID});
OrderPage({@required this.customerID, this.customerGUID});
@override
_OrderPageState createState() => _OrderPageState();
@ -51,13 +54,16 @@ class _OrderPageState extends State<OrderPage>
_tabController = new TabController(
length: 4,
vsync: this,
// initialIndex: 1
);
}
@override
Widget build(BuildContext context) {
return BaseView<OrderModelViewModel>(
onModelReady: (model) => model.getOrder(widget.customerID, pageID),
onModelReady: (model) =>
model.getOrder(widget.customerID, widget.customerGUID, pageID),
builder: (_, model, wi) => AppScaffold(
appBarTitle: TranslationBase.of(context).order,
baseViewModel: model,
@ -105,6 +111,8 @@ class _OrderPageState extends State<OrderPage>
}
Widget getDeliveredOrder(OrderModelViewModel model) {
ProjectViewModel projectViewModel = Provider.of(context);
deliveredOrderList.clear();
for (int i = 0; i < model.orders.length; i++) {
if (model.orders[i].orderStatusId == 30 ||
model.orders[i].orderStatusId == 997 ||
@ -134,9 +142,12 @@ class _OrderPageState extends State<OrderPage>
FadePage(
page: OrderDetailsPage(
orderModel:
deliveredOrderList[
index]),
));
deliveredOrderList[index]),
)).then((value) {
model.getOrder(widget.customerID,
widget.customerGUID, pageID);
getDeliveredOrder(model);
});
},
child: Row(
mainAxisAlignment:
@ -151,7 +162,8 @@ class _OrderPageState extends State<OrderPage>
Row(
children: [
Container(
margin: EdgeInsets.only(right: 5),
margin:
EdgeInsets.only(right: 5),
child: Text(
TranslationBase.of(context)
.orderNumber,
@ -180,7 +192,8 @@ class _OrderPageState extends State<OrderPage>
Row(
children: [
Container(
margin: EdgeInsets.only(right: 5),
margin:
EdgeInsets.only(right: 5),
child: Text(
TranslationBase.of(context)
.orderDate,
@ -208,7 +221,7 @@ class _OrderPageState extends State<OrderPage>
Container(
margin: EdgeInsets.all(8.0),
child: SvgPicture.asset(
languageID == "ar"
projectViewModel.isArabic
? 'assets/images/pharmacy/arrow_left.svg'
: 'assets/images/pharmacy/arrow_right.svg',
height: 20,
@ -241,11 +254,18 @@ class _OrderPageState extends State<OrderPage>
width: 5.0,
),
color: Colors.blue[700],
borderRadius:
BorderRadius.circular(30.0)),
child: deliveredOrderList[index].orderStatusId == 30 ||
deliveredOrderList[index].orderStatusId == 997 ||
deliveredOrderList[index].orderStatusId == 994
borderRadius: BorderRadius.circular(
30.0)),
child: deliveredOrderList[
index]
.orderStatusId ==
30 ||
deliveredOrderList[index]
.orderStatusId ==
997 ||
deliveredOrderList[index]
.orderStatusId ==
994
// deliveredOrderList[index].orderStatusId == 30
? Text(
// deliveredOrderList[0].orderStatus.toString().substring(12),
@ -371,6 +391,8 @@ class _OrderPageState extends State<OrderPage>
}
Widget getProcessingOrder(OrderModelViewModel model) {
ProjectViewModel projectViewModel = Provider.of(context);
processingOrderList.clear();
for (int i = 0; i < model.orders.length; i++) {
if (model.orders[i].orderStatusId == 20 ||
model.orders[i].orderStatusId == 995 ||
@ -379,6 +401,7 @@ class _OrderPageState extends State<OrderPage>
processingOrderList.add(model.orders[i]);
}
}
_tabController.index = 1;
return Container(
width: MediaQuery.of(context).size.width,
child: processingOrderList.length != 0
@ -397,12 +420,20 @@ class _OrderPageState extends State<OrderPage>
InkWell(
onTap: () {
Navigator.push(
context,
FadePage(
page: OrderDetailsPage(
orderModel:
processingOrderList[
index])));
context,
FadePage(
page: OrderDetailsPage(
orderModel:
processingOrderList[
index])))
.then((value) {
model
.getOrder(widget.customerID,
widget.customerGUID, pageID)
.then((value) {
getProcessingOrder(model);
});
});
},
child: Row(
mainAxisAlignment:
@ -417,7 +448,8 @@ class _OrderPageState extends State<OrderPage>
Row(
children: [
Container(
margin: EdgeInsets.only(right: 5),
margin:
EdgeInsets.only(right: 5),
child: Text(
TranslationBase.of(context)
.orderNumber,
@ -446,7 +478,8 @@ class _OrderPageState extends State<OrderPage>
Row(
children: [
Container(
margin: EdgeInsets.only(right: 5),
margin:
EdgeInsets.only(right: 5),
child: Text(
TranslationBase.of(context)
.orderDate,
@ -474,7 +507,7 @@ class _OrderPageState extends State<OrderPage>
Container(
margin: EdgeInsets.all(8.0),
child: SvgPicture.asset(
languageID == "ar"
projectViewModel.isArabic
? 'assets/images/pharmacy/arrow_left.svg'
: 'assets/images/pharmacy/arrow_right.svg',
height: 20,
@ -507,12 +540,21 @@ class _OrderPageState extends State<OrderPage>
width: 5.0,
),
color: Colors.green,
borderRadius:
BorderRadius.circular(30.0)),
child: processingOrderList[index].orderStatusId == 20 ||
processingOrderList[index].orderStatusId == 995 ||
processingOrderList[index].orderStatusId == 998 ||
processingOrderList[index].orderStatusId == 999
borderRadius: BorderRadius.circular(
30.0)),
child: processingOrderList[
index]
.orderStatusId ==
20 ||
processingOrderList[index]
.orderStatusId ==
995 ||
processingOrderList[index]
.orderStatusId ==
998 ||
processingOrderList[index]
.orderStatusId ==
999
// processingOrderList[index].orderStatusId == 20
? Text(
// deliveredOrderList[0].orderStatus.toString().substring(12),
@ -817,6 +859,8 @@ class _OrderPageState extends State<OrderPage>
}
Widget getPendingOrder(OrderModelViewModel model) {
ProjectViewModel projectViewModel = Provider.of(context);
pendingOrderList.clear();
for (int i = 0; i < model.orders.length; i++) {
if (model.orders[i].orderStatusId == 10) {
pendingOrderList.add(model.orders[i]);
@ -840,12 +884,20 @@ class _OrderPageState extends State<OrderPage>
InkWell(
onTap: () {
Navigator.push(
context,
FadePage(
page: OrderDetailsPage(
orderModel:
pendingOrderList[
index])));
context,
FadePage(
page: OrderDetailsPage(
orderModel:
pendingOrderList[
index])))
.then((value) {
model
.getOrder(widget.customerID,
widget.customerGUID, pageID)
.then((value) {
getPendingOrder(model);
});
});
},
child: Row(
mainAxisAlignment:
@ -867,7 +919,8 @@ class _OrderPageState extends State<OrderPage>
.orderNumber,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontWeight:
FontWeight.bold,
),
),
),
@ -878,7 +931,8 @@ class _OrderPageState extends State<OrderPage>
.toString(),
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontWeight:
FontWeight.bold,
),
),
),
@ -919,7 +973,7 @@ class _OrderPageState extends State<OrderPage>
Container(
margin: EdgeInsets.all(8.0),
child: SvgPicture.asset(
languageID == "ar"
projectViewModel.isArabic
? 'assets/images/pharmacy/arrow_left.svg'
: 'assets/images/pharmacy/arrow_right.svg',
height: 20,
@ -1084,6 +1138,8 @@ class _OrderPageState extends State<OrderPage>
}
Widget getCancelledOrder(OrderModelViewModel model) {
ProjectViewModel projectViewModel = Provider.of(context);
cancelledOrderList.clear();
for (int i = 0; i < model.orders.length; i++) {
if (model.orders[i].orderStatusId == 40 ||
model.orders[i].orderStatus == 996 ||
@ -1109,12 +1165,20 @@ class _OrderPageState extends State<OrderPage>
InkWell(
onTap: () {
Navigator.push(
context,
FadePage(
page: OrderDetailsPage(
orderModel:
cancelledOrderList[
index])));
context,
FadePage(
page: OrderDetailsPage(
orderModel:
cancelledOrderList[
index])))
.then((value) {
model
.getOrder(widget.customerID,
widget.customerGUID, pageID)
.then((value) {
getCancelledOrder(model);
});
});
},
child: Row(
mainAxisAlignment:
@ -1136,7 +1200,8 @@ class _OrderPageState extends State<OrderPage>
.orderNumber,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontWeight:
FontWeight.bold,
),
),
),
@ -1147,7 +1212,8 @@ class _OrderPageState extends State<OrderPage>
.toString(),
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
fontWeight:
FontWeight.bold,
),
),
),
@ -1188,7 +1254,7 @@ class _OrderPageState extends State<OrderPage>
Container(
margin: EdgeInsets.all(8.0),
child: SvgPicture.asset(
languageID == "ar"
projectViewModel.isArabic
? 'assets/images/pharmacy/arrow_left.svg'
: 'assets/images/pharmacy/arrow_right.svg',
height: 20,

@ -557,8 +557,6 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
? InkWell(
onTap: () {
presentConfirmDialog(model, widget.orderModel.id);
// model.orderListModel[0].id//(widget.orderModel.id));
//
},
child: Container(
// padding: EdgeInsets.only(left: 13.0, right: 13.0, top: 5.0),
@ -645,18 +643,12 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
confirmMessage: TranslationBase.of(context).confirmCancellation,
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => cancelFunction.getCanceledOrder(id, context).then((value) {
print(":D");
print(value);
// Navigator.pop(context);
Navigator.push(
context,
FadePage(
page: OrderPage(
// customerID: model.ordersList[0].customerId.toString()
customerID: widget.orderModel.customerId.toString())),
);
}),
okFunction: () {
Navigator.pop(context);
cancelFunction.getCanceledOrder(id, context).then((value) {
Navigator.pop(context);
});
},
cancelFunction: () => {});
dialog.showAlertDialog(context);
}

@ -41,6 +41,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
bool isLogin = false;
String firstName;
String customerId;
String customerGUID;
String lastName, mobileNo, identificationNo;
int languageId;
@ -50,11 +51,15 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
getCustomer() async {
String custID;
String custGUID;
custID = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
custGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
setState(() {
customerId = custID;
customerGUID = custGUID;
});
print("customer Id is" + customerId);
print("customer GUID is" + customerGUID);
return customerId;
}
@ -91,8 +96,9 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
return BaseView<OrderModelViewModel>(
onModelReady: (model) async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
var customerGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
GifLoaderDialogUtils.showMyDialog(context);
model.getOrder(customerId, page_id);
model.getOrder(customerId, customerGUID, page_id);
GifLoaderDialogUtils.hideDialog(context);
},
builder: (_, model, wi) => AppScaffold(
@ -170,7 +176,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
AppToast.showErrorToast(message: "Customer not found");
return;
}
Navigator.push(context, FadePage(page: OrderPage(customerID: customerId)));
Navigator.push(context, FadePage(page: OrderPage(customerID: customerId, customerGUID: customerGUID)));
},
child: Column(
children: <Widget>[

@ -1,3 +1,4 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacy/categorise_parent_model.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/product_detail_view_model.dart';
@ -18,6 +19,7 @@ import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:rating_bar/rating_bar.dart';
import 'base/base_view.dart';
@ -55,6 +57,10 @@ class _SubCategorisePageState extends State<SubCategorisePage> {
color: Colors.blue,
size: 29.0,
);
int pageIndex = 1;
RefreshController controller = RefreshController();
List<CategoriseParentModel> entityList = List();
List<CategoriseParentModel> entityListBrands = List();
@ -65,7 +71,8 @@ class _SubCategorisePageState extends State<SubCategorisePage> {
ProjectViewModel projectViewModel = Provider.of(context);
ProjectViewModel projectProvider = Provider.of(context);
return BaseView<PharmacyCategoriseViewModel>(
onModelReady: (model) => model.getSubCategorise(i: id),
onModelReady: (model) => model.getSubCategorise(
i: id, pageIndex: pageIndex, isLoading: false, context: context),
allowAny: true,
builder: (BuildContext context, PharmacyCategoriseViewModel model,
Widget child) =>
@ -75,9 +82,26 @@ class _SubCategorisePageState extends State<SubCategorisePage> {
isShowAppBar: true,
backgroundColor: Colors.white,
isShowDecPage: false,
//baseViewModel: model,
body: NetworkBaseView(
baseViewModel: model,
baseViewModel: model,
body: SmartRefresher(
controller: controller,
enablePullDown: false,
enablePullUp: true,
onLoading: () async {
setState(() {
++pageIndex;
});
await model.getSubProducts(
pageIndex: pageIndex,
i: id,
isLoading: true,
context: context);
if (model.state != ViewState.BusyLocal && pageIndex < 5) {
controller.loadComplete();
} else {
controller.loadFailed();
}
},
child: SingleChildScrollView(
child: Container(
child: Column(

@ -21,8 +21,9 @@ class OrderDetailsService extends BaseService{
Future getOrderDetails(OrderId) async {
var customerGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
hasError = false;
await baseAppClient.getPharmacy(GET_ORDER_DETAILS+OrderId,
await baseAppClient.getPharmacy(GET_ORDER_DETAILS+OrderId + "/$customerGUID",
onSuccess: (dynamic response, int statusCode) {
_orderList.clear();
response['orders'].forEach((item) {

@ -5,40 +5,38 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
class OrderService extends BaseService{
class OrderService extends BaseService {
AppSharedPreferences sharedPref = AppSharedPreferences();
AppGlobal appGlobal = new AppGlobal();
AuthenticatedUser authUser = new AuthenticatedUser();
AuthProvider authProvider = new AuthProvider();
List<Orders> _orderList = List();
List<Orders> get orderList => _orderList;
String url ="";
String url = "";
Future getOrder(customerId, pageId) async {
Future getOrder(customerId, customerGUID, pageId) async {
hasError = false;
// url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=1&limit=200&customer_id=1367368";
// url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=$pageId&limit=200&customer_id=$customerId";
url =GET_ORDER+"customer=1&fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc,product_count,can_cancel,can_refund&page=$pageId&limit=200&customer_id=$customerId";
// url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=$pageId&limit=200&customer_id=$customerId";
url = GET_ORDER + "customer=1&fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc,product_count,can_cancel,can_refund&page=$pageId&limit=200&customer_id=$customerId&CustomerguId=$customerGUID";
print(url);
await baseAppClient.getPharmacy(url,
onSuccess: (dynamic response, int statusCode) {
_orderList.clear();
await baseAppClient.getPharmacy(url, onSuccess: (dynamic response, int statusCode) {
_orderList.clear();
response['orders'].forEach((item) {
_orderList.add(Orders.fromJson(item));
});
print(_orderList.length);
print(response);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
});
response['orders'].forEach((item) {
_orderList.add(Orders.fromJson(item));
});
print(_orderList.length);
print(response);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
});
}
// Future getProductReview(orderId) async {
// print("step 1");
// hasError = false;
@ -59,7 +57,6 @@ class OrderService extends BaseService{
// });
// }
// Future<Map> getOrder(BuildContext context ) async {
//
// if (await this.sharedPref.getObject(USER_PROFILE) != null) {
@ -80,4 +77,4 @@ class OrderService extends BaseService{
// });
// return Future.value(localRes);
// }
}
}

@ -15,13 +15,14 @@ class PharmacyAddressService extends BaseService {
Future<List<AddressInfo>> getAddresses() async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
var customerGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
Map<String, String> queryParams = {'fields': 'addresses'};
hasError = false;
Addresses selectedAddress;
try {
var completer = Completer();
await baseAppClient.getPharmacy("$GET_CUSTOMERS_ADDRESSES$customerId", onSuccess: (dynamic response, int statusCode) async {
await baseAppClient.getPharmacy("$GET_CUSTOMERS_ADDRESSES$customerId/$customerGUID", onSuccess: (dynamic response, int statusCode) async {
addresses.clear();
var savedAddress = await sharedPref.getObject(PHARMACY_SELECTED_ADDRESS);
if (savedAddress != null) {

Loading…
Cancel
Save