diff --git a/assets/images/pharmacy/Redheart.svg b/assets/images/pharmacy/Redheart.svg
new file mode 100644
index 00000000..3bba67fa
--- /dev/null
+++ b/assets/images/pharmacy/Redheart.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/images/pharmacy/heart-empty.svg b/assets/images/pharmacy/heart-empty.svg
new file mode 100644
index 00000000..a682a44e
--- /dev/null
+++ b/assets/images/pharmacy/heart-empty.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/pharmacy/sort.png b/assets/images/pharmacy/sort.png
new file mode 100644
index 00000000..0143d915
Binary files /dev/null and b/assets/images/pharmacy/sort.png differ
diff --git a/lib/config/config.dart b/lib/config/config.dart
index a4f701de..d7529454 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -225,7 +225,7 @@ const GET_PATIENT_HEALTH_STATS = 'Services/Patients.svc/REST/Med_GetTransactions
const CHANNEL = 3;
const GENERAL_ID = 'Cs2020@2016\$2958';
const IP_ADDRESS = '10.20.10.20';
-const VERSION_ID = 5.8;
+const VERSION_ID = 8.8;
const SETUP_ID = '91877';
const LANGUAGE = 2;
const PATIENT_OUT_SA = 0;
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 9ba405e7..23308d16 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -1115,6 +1115,7 @@ const Map localizedValues = {
"calculate": {"en": "calculate", "ar": "حساب"},
"enterReadingValue": {"en": "Enter the reading value", "ar": "ادخل القيمة"},
"result": {"en": "Result", "ar": "النتيجة"},
+ "sort": {"en": "Sort", "ar": "فرز"},
"bloodSugarConversion": {"en": "Blood Sugar Conversion", "ar": "السكر في الدم"},
"convertBloodSugarStatement": {
"en": "Convert blood sugar/glucose from mmol/l (UK standard) to mg/dlt (US standard) and vice versa.",
diff --git a/lib/core/model/pharmacies/order_model.dart b/lib/core/model/pharmacies/order_model.dart
index 8872aaf8..0866420c 100644
--- a/lib/core/model/pharmacies/order_model.dart
+++ b/lib/core/model/pharmacies/order_model.dart
@@ -79,10 +79,10 @@ class OrderModel {
dynamic storeId;
String orderGuid;
bool pickUpInStore;
- PaymentMethodSystemName paymentMethodSystemName;
- PaymentName paymentName;
- PaymentName paymentNamen;
- CustomerCurrencyCode customerCurrencyCode;
+ dynamic paymentMethodSystemName;
+ dynamic paymentName;
+ dynamic paymentNamen;
+ dynamic customerCurrencyCode;
dynamic currencyRate;
dynamic customerTaxDisplayTypeId;
dynamic vatNumber;
@@ -102,42 +102,42 @@ class OrderModel {
dynamic refundedAmount;
dynamic rewardPointsWereAdded;
String rxAttachments;
- CheckoutAttributeDescription checkoutAttributeDescription;
+ dynamic checkoutAttributeDescription;
dynamic customerLanguageId;
dynamic affiliateId;
- CustomerIp customerIp;
+ dynamic customerIp;
String authorizationTransactionId;
dynamic authorizationTransactionCode;
dynamic authorizationTransactionResult;
dynamic captureTransactionId;
dynamic captureTransactionResult;
dynamic subscriptionTransactionId;
- DateTime paidDateUtc;
- ShippingMethod shippingMethod;
- ShippingRateComputationMethodSystemName shippingRateComputationMethodSystemName;
+ dynamic paidDateUtc;
+ dynamic shippingMethod;
+ dynamic shippingRateComputationMethodSystemName;
String customValuesXml;
bool deleted;
- DateTime createdOnUtc;
- OrderModelCustomer customer;
+ dynamic createdOnUtc;
+ dynamic customer;
dynamic customerId;
- IngAddress billingAddress;
- IngAddress shippingAddress;
+ dynamic billingAddress;
+ dynamic shippingAddress;
List orderItems;
dynamic orderStatusId;
- OrderStatus orderStatus;
- OrderStatusn orderStatusn;
+ dynamic orderStatus;
+ dynamic orderStatusn;
dynamic paymentStatusId;
- PaymentStatus paymentStatus;
- PaymentStatusn paymentStatusn;
- ShippingStatus shippingStatus;
- ShippingStatusn shippingStatusn;
- CustomerTaxDisplayType customerTaxDisplayType;
+ dynamic paymentStatus;
+ dynamic paymentStatusn;
+ dynamic shippingStatus;
+ dynamic shippingStatusn;
+ dynamic customerTaxDisplayType;
bool canCancel;
bool canRefund;
dynamic lakumAmount;
- DateTime preferDeliveryDate;
- PreferDeliveryTime preferDeliveryTime;
- PreferDeliveryTimen preferDeliveryTimen;
+ dynamic preferDeliveryDate;
+ dynamic preferDeliveryTime;
+ dynamic preferDeliveryTimen;
factory OrderModel.fromJson(Map json) => OrderModel(
id: json["id"],
@@ -311,7 +311,7 @@ class IngAddress {
DateTime createdOnUtc;
dynamic province;
String latLong;
-
+
LatLng getLocation(){
if(latLong.contains(',')){
var parts = latLong.trim().split(',');
@@ -476,10 +476,10 @@ class OrderModelCustomer {
});
String id;
- Username username;
- BillingAddressEmail email;
- FirstName firstName;
- LastName lastName;
+ dynamic username;
+ dynamic email;
+ dynamic firstName;
+ dynamic lastName;
String languageId;
dynamic adminComment;
bool isTaxExempt;
@@ -488,10 +488,10 @@ class OrderModelCustomer {
bool deleted;
bool isSystemAccount;
dynamic systemName;
- LastIpAddress lastIpAddress;
- DateTime createdOnUtc;
- DateTime lastLoginDateUtc;
- DateTime lastActivityDateUtc;
+ dynamic lastIpAddress;
+ dynamic createdOnUtc;
+ dynamic lastLoginDateUtc;
+ dynamic lastActivityDateUtc;
dynamic registeredInStoreId;
List roleIds;
@@ -577,6 +577,7 @@ final customerTaxDisplayTypeValues = EnumValues({
"ExcludingTax": CustomerTaxDisplayType.EXCLUDING_TAX
});
+
class OrderItem {
OrderItem({
this.quantity,
@@ -867,9 +868,9 @@ class Product {
dynamic displayOrder;
bool published;
bool deleted;
- DateTime createdOnUtc;
- DateTime updatedOnUtc;
- ProductType productType;
+ dynamic createdOnUtc;
+ dynamic updatedOnUtc;
+ dynamic productType;
dynamic parentGroupedProductId;
dynamic roleIds;
dynamic discountIds;
@@ -1146,14 +1147,14 @@ class Review {
dynamic productId;
dynamic storeId;
bool isApproved;
- Title title;
- ReviewText reviewText;
+ dynamic title;
+ dynamic reviewText;
dynamic replyText;
dynamic rating;
dynamic helpfulYesTotal;
dynamic helpfulNoTotal;
- DateTime createdOnUtc;
- ReviewCustomer customer;
+ dynamic createdOnUtc;
+ dynamic customer;
dynamic product;
factory Review.fromJson(Map json) => Review(
@@ -1235,7 +1236,7 @@ class ReviewCustomer {
dynamic isOutSa;
dynamic patientType;
dynamic gender;
- DateTime birthDate;
+ dynamic birthDate;
dynamic phone;
dynamic countryCode;
dynamic yahalaAccountno;
@@ -1244,7 +1245,7 @@ class ReviewCustomer {
List addresses;
String id;
String username;
- PurpleEmail email;
+ dynamic email;
dynamic firstName;
dynamic lastName;
dynamic languageId;
diff --git a/lib/core/model/pharmacies/orders_model.dart b/lib/core/model/pharmacies/orders_model.dart
index a97bda98..0ad94767 100644
--- a/lib/core/model/pharmacies/orders_model.dart
+++ b/lib/core/model/pharmacies/orders_model.dart
@@ -32,6 +32,10 @@ class Orders {
bool canCancel;
bool canRefund;
dynamic customerId;
+ double orderSubtotalExclTax;
+ dynamic orderShippingExclTax;
+ double orderTax;
+
Orders(
{this.id,
@@ -43,7 +47,10 @@ class Orders {
this.orderStatusn,
this.canCancel,
this.canRefund,
- this.customerId,});
+ this.customerId,
+ this.orderShippingExclTax,
+ this.orderSubtotalExclTax,
+ this.orderTax,});
Orders.fromJson(Map json) {
try {
@@ -57,6 +64,9 @@ class Orders {
canCancel = json['can_cancel'];
canRefund = json['can_refund'];
customerId = json['customer_id'];
+ orderSubtotalExclTax= json["order_subtotal_excl_tax"].toDouble();
+ orderShippingExclTax= json["order_shipping_excl_tax"];
+ orderTax= json["order_tax"].toDouble();
}catch(e){
print(e);
}
@@ -72,6 +82,9 @@ class Orders {
data['order_status_id'] = this.orderStatusId;
data['order_status'] = this.orderStatus;
data['order_statusn'] = this.orderStatusn;
+ data ["order_subtotal_excl_tax"] = this.orderSubtotalExclTax;
+ data ["order_shipping_excl_tax"]= this.orderShippingExclTax;
+ data ["order_tax"]= this.orderTax;
return data;
}
}
diff --git a/lib/core/model/pharmacies/recommendedProduct_model.dart b/lib/core/model/pharmacies/recommendedProduct_model.dart
index ce17e2a8..e1e88cd8 100644
--- a/lib/core/model/pharmacies/recommendedProduct_model.dart
+++ b/lib/core/model/pharmacies/recommendedProduct_model.dart
@@ -1,11 +1,9 @@
class RecommendedProductModel {
- String messageStatus;
List products;
- RecommendedProductModel({this.messageStatus, this.products});
+ RecommendedProductModel({this.products});
RecommendedProductModel.fromJson(Map json) {
- messageStatus = json['MessageStatus'];
if (json['products'] != null) {
products = new List();
json['products'].forEach((v) {
@@ -16,7 +14,6 @@ class RecommendedProductModel {
Map toJson() {
final Map data = new Map();
- data['MessageStatus'] = this.messageStatus;
if (this.products != null) {
data['products'] = this.products.map((v) => v.toJson()).toList();
}
@@ -29,238 +26,213 @@ class Products {
bool visibleIndividually;
String name;
String namen;
- List localizedNames;
String shortDescription;
String shortDescriptionn;
String fullDescription;
String fullDescriptionn;
bool markasNew;
bool showOnHomePage;
- Null metaKeywords;
- Null metaDescription;
- Null metaTitle;
+ dynamic metaKeywords;
+ dynamic metaDescription;
+ dynamic metaTitle;
bool allowCustomerReviews;
- int approvedRatingSum;
- int notApprovedRatingSum;
- int approvedTotalReviews;
- int notApprovedTotalReviews;
+ dynamic approvedRatingSum;
+ dynamic notApprovedRatingSum;
+ dynamic approvedTotalReviews;
+ dynamic notApprovedTotalReviews;
String sku;
bool isRx;
bool prescriptionRequired;
- Null rxMessage;
- Null rxMessagen;
- Null manufacturerPartNumber;
- Null gtin;
+ dynamic rxMessage;
+ dynamic rxMessagen;
+ dynamic manufacturerPartNumber;
+ dynamic gtin;
bool isGiftCard;
bool requireOtherProducts;
bool automaticallyAddRequiredProducts;
bool isDownload;
bool unlimitedDownloads;
- int maxNumberOfDownloads;
- Null downloadExpirationDays;
+ dynamic maxNumberOfDownloads;
+ dynamic downloadExpirationDays;
bool hasSampleDownload;
bool hasUserAgreement;
bool isRecurring;
- int recurringCycleLength;
- int recurringTotalCycles;
+ dynamic recurringCycleLength;
+ dynamic recurringTotalCycles;
bool isRental;
- int rentalPriceLength;
+ dynamic rentalPriceLength;
bool isShipEnabled;
bool isFreeShipping;
bool shipSeparately;
- int additionalShippingCharge;
+ dynamic additionalShippingCharge;
bool isTaxExempt;
bool isTelecommunicationsOrBroadcastingOrElectronicServices;
bool useMultipleWarehouses;
- int manageInventoryMethodId;
- int stockQuantity;
+ dynamic manageInventoryMethodId;
+ dynamic stockQuantity;
String stockAvailability;
String stockAvailabilityn;
bool displayStockAvailability;
bool displayStockQuantity;
- int minStockQuantity;
- int notifyAdminForQuantityBelow;
+ dynamic minStockQuantity;
+ dynamic notifyAdminForQuantityBelow;
bool allowBackInStockSubscriptions;
- int orderMinimumQuantity;
- int orderMaximumQuantity;
- Null allowedQuantities;
+ dynamic orderMinimumQuantity;
+ dynamic orderMaximumQuantity;
+ dynamic allowedQuantities;
bool allowAddingOnlyExistingAttributeCombinations;
bool disableBuyButton;
bool disableWishlistButton;
bool availableForPreOrder;
- Null preOrderAvailabilityStartDateTimeUtc;
+ dynamic preOrderAvailabilityStartDateTimeUtc;
bool callForPrice;
- double price;
- int oldPrice;
- double productCost;
- Null specialPrice;
- Null specialPriceStartDateTimeUtc;
- Null specialPriceEndDateTimeUtc;
+ dynamic price;
+ dynamic oldPrice;
+ dynamic productCost;
+ dynamic specialPrice;
+ dynamic specialPriceStartDateTimeUtc;
+ dynamic specialPriceEndDateTimeUtc;
bool customerEntersPrice;
- int minimumCustomerEnteredPrice;
- int maximumCustomerEnteredPrice;
+ dynamic minimumCustomerEnteredPrice;
+ dynamic maximumCustomerEnteredPrice;
bool basepriceEnabled;
- int basepriceAmount;
- int basepriceBaseAmount;
+ dynamic basepriceAmount;
+ dynamic basepriceBaseAmount;
bool hasTierPrices;
bool hasDiscountsApplied;
- Null discountName;
- Null discountNamen;
- Null discountDescription;
- Null discountDescriptionn;
- Null discountPercentage;
+ dynamic discountName;
+ dynamic discountNamen;
+ dynamic discountDescription;
+ dynamic discountDescriptionn;
+ dynamic discountPercentage;
String currency;
String currencyn;
double weight;
- int length;
- int width;
- int height;
- Null availableStartDateTimeUtc;
- Null availableEndDateTimeUtc;
- int displayOrder;
+ dynamic length;
+ dynamic width;
+ dynamic height;
+ dynamic availableStartDateTimeUtc;
+ dynamic availableEndDateTimeUtc;
+ dynamic displayOrder;
bool published;
bool deleted;
String createdOnUtc;
String updatedOnUtc;
String productType;
- int parentGroupedProductId;
- List roleIds;
- List discountIds;
- List storeIds;
- List manufacturerIds;
- List reviews;
- List images;
- List attributes;
- List specifications;
- List associatedProductIds;
- List tags;
- int vendorId;
+ dynamic parentGroupedProductId;
+ dynamic vendorId;
String seName;
+ List images;
- Products(
- {this.id,
- this.visibleIndividually,
- this.name,
- this.namen,
- this.localizedNames,
- this.shortDescription,
- this.shortDescriptionn,
- this.fullDescription,
- this.fullDescriptionn,
- this.markasNew,
- this.showOnHomePage,
- this.metaKeywords,
- this.metaDescription,
- this.metaTitle,
- this.allowCustomerReviews,
- this.approvedRatingSum,
- this.notApprovedRatingSum,
- this.approvedTotalReviews,
- this.notApprovedTotalReviews,
- this.sku,
- this.isRx,
- this.prescriptionRequired,
- this.rxMessage,
- this.rxMessagen,
- this.manufacturerPartNumber,
- this.gtin,
- this.isGiftCard,
- this.requireOtherProducts,
- this.automaticallyAddRequiredProducts,
- this.isDownload,
- this.unlimitedDownloads,
- this.maxNumberOfDownloads,
- this.downloadExpirationDays,
- this.hasSampleDownload,
- this.hasUserAgreement,
- this.isRecurring,
- this.recurringCycleLength,
- this.recurringTotalCycles,
- this.isRental,
- this.rentalPriceLength,
- this.isShipEnabled,
- this.isFreeShipping,
- this.shipSeparately,
- this.additionalShippingCharge,
- this.isTaxExempt,
- this.isTelecommunicationsOrBroadcastingOrElectronicServices,
- this.useMultipleWarehouses,
- this.manageInventoryMethodId,
- this.stockQuantity,
- this.stockAvailability,
- this.stockAvailabilityn,
- this.displayStockAvailability,
- this.displayStockQuantity,
- this.minStockQuantity,
- this.notifyAdminForQuantityBelow,
- this.allowBackInStockSubscriptions,
- this.orderMinimumQuantity,
- this.orderMaximumQuantity,
- this.allowedQuantities,
- this.allowAddingOnlyExistingAttributeCombinations,
- this.disableBuyButton,
- this.disableWishlistButton,
- this.availableForPreOrder,
- this.preOrderAvailabilityStartDateTimeUtc,
- this.callForPrice,
- this.price,
- this.oldPrice,
- this.productCost,
- this.specialPrice,
- this.specialPriceStartDateTimeUtc,
- this.specialPriceEndDateTimeUtc,
- this.customerEntersPrice,
- this.minimumCustomerEnteredPrice,
- this.maximumCustomerEnteredPrice,
- this.basepriceEnabled,
- this.basepriceAmount,
- this.basepriceBaseAmount,
- this.hasTierPrices,
- this.hasDiscountsApplied,
- this.discountName,
- this.discountNamen,
- this.discountDescription,
- this.discountDescriptionn,
- this.discountPercentage,
- this.currency,
- this.currencyn,
- this.weight,
- this.length,
- this.width,
- this.height,
- this.availableStartDateTimeUtc,
- this.availableEndDateTimeUtc,
- this.displayOrder,
- this.published,
- this.deleted,
- this.createdOnUtc,
- this.updatedOnUtc,
- this.productType,
- this.parentGroupedProductId,
- this.roleIds,
- this.discountIds,
- this.storeIds,
- this.manufacturerIds,
- this.reviews,
- this.images,
- this.attributes,
- this.specifications,
- this.associatedProductIds,
- this.tags,
- this.vendorId,
- this.seName});
+ Products({
+ this.id,
+ this.visibleIndividually,
+ this.name,
+ this.namen,
+ this.shortDescription,
+ this.shortDescriptionn,
+ this.fullDescription,
+ this.fullDescriptionn,
+ this.markasNew,
+ this.showOnHomePage,
+ this.metaKeywords,
+ this.metaDescription,
+ this.metaTitle,
+ this.allowCustomerReviews,
+ this.approvedRatingSum,
+ this.notApprovedRatingSum,
+ this.approvedTotalReviews,
+ this.notApprovedTotalReviews,
+ this.sku,
+ this.isRx,
+ this.prescriptionRequired,
+ this.rxMessage,
+ this.rxMessagen,
+ this.manufacturerPartNumber,
+ this.gtin,
+ this.isGiftCard,
+ this.requireOtherProducts,
+ this.automaticallyAddRequiredProducts,
+ this.isDownload,
+ this.unlimitedDownloads,
+ this.maxNumberOfDownloads,
+ this.downloadExpirationDays,
+ this.hasSampleDownload,
+ this.hasUserAgreement,
+ this.isRecurring,
+ this.recurringCycleLength,
+ this.recurringTotalCycles,
+ this.isRental,
+ this.rentalPriceLength,
+ this.isShipEnabled,
+ this.isFreeShipping,
+ this.shipSeparately,
+ this.additionalShippingCharge,
+ this.isTaxExempt,
+ this.isTelecommunicationsOrBroadcastingOrElectronicServices,
+ this.useMultipleWarehouses,
+ this.manageInventoryMethodId,
+ this.stockQuantity,
+ this.stockAvailability,
+ this.stockAvailabilityn,
+ this.displayStockAvailability,
+ this.displayStockQuantity,
+ this.minStockQuantity,
+ this.notifyAdminForQuantityBelow,
+ this.allowBackInStockSubscriptions,
+ this.orderMinimumQuantity,
+ this.orderMaximumQuantity,
+ this.allowedQuantities,
+ this.allowAddingOnlyExistingAttributeCombinations,
+ this.disableBuyButton,
+ this.disableWishlistButton,
+ this.availableForPreOrder,
+ this.preOrderAvailabilityStartDateTimeUtc,
+ this.callForPrice,
+ this.price,
+ this.oldPrice,
+ this.productCost,
+ this.specialPrice,
+ this.specialPriceStartDateTimeUtc,
+ this.specialPriceEndDateTimeUtc,
+ this.customerEntersPrice,
+ this.minimumCustomerEnteredPrice,
+ this.maximumCustomerEnteredPrice,
+ this.basepriceEnabled,
+ this.basepriceAmount,
+ this.basepriceBaseAmount,
+ this.hasTierPrices,
+ this.hasDiscountsApplied,
+ this.discountName,
+ this.discountNamen,
+ this.discountDescription,
+ this.discountDescriptionn,
+ this.discountPercentage,
+ this.currency,
+ this.currencyn,
+ this.weight,
+ this.length,
+ this.width,
+ this.height,
+ this.availableStartDateTimeUtc,
+ this.availableEndDateTimeUtc,
+ this.displayOrder,
+ this.published,
+ this.deleted,
+ this.createdOnUtc,
+ this.updatedOnUtc,
+ this.productType,
+ this.parentGroupedProductId,
+ this.vendorId,
+ this.seName,
+ this.images,
+ });
Products.fromJson(Map json) {
id = json['id'];
visibleIndividually = json['visible_individually'];
name = json['name'];
namen = json['namen'];
- if (json['localized_names'] != null) {
- localizedNames = new List();
- json['localized_names'].forEach((v) {
- localizedNames.add(new LocalizedNames.fromJson(v));
- });
- }
shortDescription = json['short_description'];
shortDescriptionn = json['short_descriptionn'];
fullDescription = json['full_description'];
@@ -285,7 +257,7 @@ class Products {
isGiftCard = json['is_gift_card'];
requireOtherProducts = json['require_other_products'];
automaticallyAddRequiredProducts =
- json['automatically_add_required_products'];
+ json['automatically_add_required_products'];
isDownload = json['is_download'];
unlimitedDownloads = json['unlimited_downloads'];
maxNumberOfDownloads = json['max_number_of_downloads'];
@@ -303,7 +275,7 @@ class Products {
additionalShippingCharge = json['additional_shipping_charge'];
isTaxExempt = json['is_tax_exempt'];
isTelecommunicationsOrBroadcastingOrElectronicServices =
- json['is_telecommunications_or_broadcasting_or_electronic_services'];
+ json['is_telecommunications_or_broadcasting_or_electronic_services'];
useMultipleWarehouses = json['use_multiple_warehouses'];
manageInventoryMethodId = json['manage_inventory_method_id'];
stockQuantity = json['stock_quantity'];
@@ -318,12 +290,12 @@ class Products {
orderMaximumQuantity = json['order_maximum_quantity'];
allowedQuantities = json['allowed_quantities'];
allowAddingOnlyExistingAttributeCombinations =
- json['allow_adding_only_existing_attribute_combinations'];
+ json['allow_adding_only_existing_attribute_combinations'];
disableBuyButton = json['disable_buy_button'];
disableWishlistButton = json['disable_wishlist_button'];
availableForPreOrder = json['available_for_pre_order'];
preOrderAvailabilityStartDateTimeUtc =
- json['pre_order_availability_start_date_time_utc'];
+ json['pre_order_availability_start_date_time_utc'];
callForPrice = json['call_for_price'];
price = json['price'];
oldPrice = json['old_price'];
@@ -359,63 +331,14 @@ class Products {
updatedOnUtc = json['updated_on_utc'];
productType = json['product_type'];
parentGroupedProductId = json['parent_grouped_product_id'];
- if (json['role_ids'] != null) {
- roleIds = new List();
- json['role_ids'].forEach((v) {
- roleIds.add(null);
- });
- }
- if (json['discount_ids'] != null) {
- discountIds = new List();
- json['discount_ids'].forEach((v) {
- discountIds.add(null);
- });
- }
- if (json['store_ids'] != null) {
- storeIds = new List();
- json['store_ids'].forEach((v) {
- storeIds.add(null);
- });
- }
- manufacturerIds = json['manufacturer_ids'].cast();
- if (json['reviews'] != null) {
- reviews = new List();
- json['reviews'].forEach((v) {
- reviews.add(new Reviews.fromJson(v));
- });
- }
+ vendorId = json['vendor_id'];
+ seName = json['se_name'];
if (json['images'] != null) {
images = new List();
json['images'].forEach((v) {
images.add(new Images.fromJson(v));
});
}
- if (json['attributes'] != null) {
- attributes = new List();
- json['attributes'].forEach((v) {
- attributes.add(v);
- });
- }
- if (json['specifications'] != null) {
- specifications = new List();
- json['specifications'].forEach((v) {
- specifications.add(new Specifications.fromJson(v));
- });
- }
- if (json['associated_product_ids'] != null) {
- associatedProductIds = new List();
- json['associated_product_ids'].forEach((v) {
- associatedProductIds.add(v);
- });
- }
- if (json['tags'] != null) {
- tags = new List();
- json['tags'].forEach((v) {
- tags.add(v);
- });
- }
- vendorId = json['vendor_id'];
- seName = json['se_name'];
}
Map toJson() {
@@ -424,10 +347,6 @@ class Products {
data['visible_individually'] = this.visibleIndividually;
data['name'] = this.name;
data['namen'] = this.namen;
- if (this.localizedNames != null) {
- data['localized_names'] =
- this.localizedNames.map((v) => v.toJson()).toList();
- }
data['short_description'] = this.shortDescription;
data['short_descriptionn'] = this.shortDescriptionn;
data['full_description'] = this.fullDescription;
@@ -528,289 +447,12 @@ class Products {
data['updated_on_utc'] = this.updatedOnUtc;
data['product_type'] = this.productType;
data['parent_grouped_product_id'] = this.parentGroupedProductId;
- if (this.roleIds != null) {
- data['role_ids'] = this.roleIds.map((v) => v);
- }
- if (this.discountIds != null) {
- data['discount_ids'] = this.discountIds.map((v) => v);
- }
- if (this.storeIds != null) {
- data['store_ids'] = this.storeIds.map((v) => v);
- }
- data['manufacturer_ids'] = this.manufacturerIds;
- if (this.reviews != null) {
- data['reviews'] = this.reviews.map((v) => v.toJson()).toList();
- }
- if (this.images != null) {
- data['images'] = this.images.map((v) => v.toJson()).toList();
- }
- if (this.attributes != null) {
- data['attributes'] = this.attributes.map((v) => v);
- }
- if (this.specifications != null) {
- data['specifications'] =
- this.specifications.map((v) => v.toJson()).toList();
- }
- if (this.associatedProductIds != null) {
- data['associated_product_ids'] =
- this.associatedProductIds.map((v) => v);
- }
- if (this.tags != null) {
- data['tags'] = this.tags.map((v) => v);
- }
data['vendor_id'] = this.vendorId;
data['se_name'] = this.seName;
- return data;
- }
-}
-
-class LocalizedNames {
- int languageId;
- String localizedName;
-
- LocalizedNames({this.languageId, this.localizedName});
-
- LocalizedNames.fromJson(Map json) {
- languageId = json['language_id'];
- localizedName = json['localized_name'];
- }
-
- Map toJson() {
- final Map data = new Map();
- data['language_id'] = this.languageId;
- data['localized_name'] = this.localizedName;
- return data;
- }
-}
-
-class Reviews {
- int id;
- int position;
- int reviewId;
- int customerId;
- int productId;
- int storeId;
- bool isApproved;
- String title;
- String reviewText;
- Null replyText;
- int rating;
- int helpfulYesTotal;
- int helpfulNoTotal;
- String createdOnUtc;
- Customer customer;
- Null product;
-
- Reviews(
- {this.id,
- this.position,
- this.reviewId,
- this.customerId,
- this.productId,
- this.storeId,
- this.isApproved,
- this.title,
- this.reviewText,
- this.replyText,
- this.rating,
- this.helpfulYesTotal,
- this.helpfulNoTotal,
- this.createdOnUtc,
- this.customer,
- this.product});
-
- Reviews.fromJson(Map json) {
- id = json['id'];
- position = json['position'];
- reviewId = json['review_id'];
- customerId = json['customer_id'];
- productId = json['product_id'];
- storeId = json['store_id'];
- isApproved = json['is_approved'];
- title = json['title'];
- reviewText = json['review_text'];
- replyText = json['reply_text'];
- rating = json['rating'];
- helpfulYesTotal = json['helpful_yes_total'];
- helpfulNoTotal = json['helpful_no_total'];
- createdOnUtc = json['created_on_utc'];
- customer = json['customer'] != null
- ? new Customer.fromJson(json['customer'])
- : null;
- product = json['product'];
- }
-
- Map toJson() {
- final Map data = new Map();
- data['id'] = this.id;
- data['position'] = this.position;
- data['review_id'] = this.reviewId;
- data['customer_id'] = this.customerId;
- data['product_id'] = this.productId;
- data['store_id'] = this.storeId;
- data['is_approved'] = this.isApproved;
- data['title'] = this.title;
- data['review_text'] = this.reviewText;
- data['reply_text'] = this.replyText;
- data['rating'] = this.rating;
- data['helpful_yes_total'] = this.helpfulYesTotal;
- data['helpful_no_total'] = this.helpfulNoTotal;
- data['created_on_utc'] = this.createdOnUtc;
- if (this.customer != null) {
- data['customer'] = this.customer.toJson();
- }
- data['product'] = this.product;
- return data;
- }
-}
-
-class Customer {
- Null fileNumber;
- Null iqamaNumber;
- int isOutSa;
- int patientType;
- Null gender;
- String birthDate;
- Null phone;
- Null countryCode;
- Null yahalaAccountno;
- Null billingAddress;
- Null shippingAddress;
- List addresses;
- String id;
- String username;
- String email;
- Null firstName;
- Null lastName;
- Null languageId;
- Null adminComment;
- Null isTaxExempt;
- Null hasShoppingCartItems;
- Null active;
- Null deleted;
- Null isSystemAccount;
- Null systemName;
- Null lastIpAddress;
- Null createdOnUtc;
- Null lastLoginDateUtc;
- Null lastActivityDateUtc;
- Null registeredInStoreId;
- List roleIds;
-
- Customer(
- {this.fileNumber,
- this.iqamaNumber,
- this.isOutSa,
- this.patientType,
- this.gender,
- this.birthDate,
- this.phone,
- this.countryCode,
- this.yahalaAccountno,
- this.billingAddress,
- this.shippingAddress,
- this.addresses,
- this.id,
- this.username,
- this.email,
- this.firstName,
- this.lastName,
- this.languageId,
- this.adminComment,
- this.isTaxExempt,
- this.hasShoppingCartItems,
- this.active,
- this.deleted,
- this.isSystemAccount,
- this.systemName,
- this.lastIpAddress,
- this.createdOnUtc,
- this.lastLoginDateUtc,
- this.lastActivityDateUtc,
- this.registeredInStoreId,
- this.roleIds});
-
- Customer.fromJson(Map json) {
- fileNumber = json['file_number'];
- iqamaNumber = json['iqama_number'];
- isOutSa = json['is_out_sa'];
- patientType = json['patient_type'];
- gender = json['gender'];
- birthDate = json['birth_date'];
- phone = json['phone'];
- countryCode = json['country_code'];
- yahalaAccountno = json['yahala_accountno'];
- billingAddress = json['billing_address'];
- shippingAddress = json['shipping_address'];
- if (json['addresses'] != null) {
- addresses = new List();
- json['addresses'].forEach((v) {
- addresses.add(v);
- });
- }
- id = json['id'];
- username = json['username'];
- email = json['email'];
- firstName = json['first_name'];
- lastName = json['last_name'];
- languageId = json['language_id'];
- adminComment = json['admin_comment'];
- isTaxExempt = json['is_tax_exempt'];
- hasShoppingCartItems = json['has_shopping_cart_items'];
- active = json['active'];
- deleted = json['deleted'];
- isSystemAccount = json['is_system_account'];
- systemName = json['system_name'];
- lastIpAddress = json['last_ip_address'];
- createdOnUtc = json['created_on_utc'];
- lastLoginDateUtc = json['last_login_date_utc'];
- lastActivityDateUtc = json['last_activity_date_utc'];
- registeredInStoreId = json['registered_in_store_id'];
- if (json['role_ids'] != null) {
- roleIds = new List();
- json['role_ids'].forEach((v) {
- roleIds.add(null);
- });
+ if (this.images != null) {
+ data['images'] = this.images.map((v) => v.toJson()).toList();
}
- }
- Map toJson() {
- final Map data = new Map();
- data['file_number'] = this.fileNumber;
- data['iqama_number'] = this.iqamaNumber;
- data['is_out_sa'] = this.isOutSa;
- data['patient_type'] = this.patientType;
- data['gender'] = this.gender;
- data['birth_date'] = this.birthDate;
- data['phone'] = this.phone;
- data['country_code'] = this.countryCode;
- data['yahala_accountno'] = this.yahalaAccountno;
- data['billing_address'] = this.billingAddress;
- data['shipping_address'] = this.shippingAddress;
- if (this.addresses != null) {
- data['addresses'] = this.addresses.map((v) => v);
- }
- data['id'] = this.id;
- data['username'] = this.username;
- data['email'] = this.email;
- data['first_name'] = this.firstName;
- data['last_name'] = this.lastName;
- data['language_id'] = this.languageId;
- data['admin_comment'] = this.adminComment;
- data['is_tax_exempt'] = this.isTaxExempt;
- data['has_shopping_cart_items'] = this.hasShoppingCartItems;
- data['active'] = this.active;
- data['deleted'] = this.deleted;
- data['is_system_account'] = this.isSystemAccount;
- data['system_name'] = this.systemName;
- data['last_ip_address'] = this.lastIpAddress;
- data['created_on_utc'] = this.createdOnUtc;
- data['last_login_date_utc'] = this.lastLoginDateUtc;
- data['last_activity_date_utc'] = this.lastActivityDateUtc;
- data['registered_in_store_id'] = this.registeredInStoreId;
- if (this.roleIds != null) {
- data['role_ids'] = this.roleIds.map((v) => v);
- }
return data;
}
}
@@ -842,40 +484,3 @@ class Images {
return data;
}
}
-
-class Specifications {
- int id;
- int displayOrder;
- String defaultValue;
- String defaultValuen;
- String name;
- String nameN;
-
- Specifications(
- {this.id,
- this.displayOrder,
- this.defaultValue,
- this.defaultValuen,
- this.name,
- this.nameN});
-
- Specifications.fromJson(Map json) {
- id = json['id'];
- displayOrder = json['display_order'];
- defaultValue = json['default_value'];
- defaultValuen = json['default_valuen'];
- name = json['name'];
- nameN = json['nameN'];
- }
-
- Map toJson() {
- final Map data = new Map();
- data['id'] = this.id;
- data['display_order'] = this.displayOrder;
- data['default_value'] = this.defaultValue;
- data['default_valuen'] = this.defaultValuen;
- data['name'] = this.name;
- data['nameN'] = this.nameN;
- return data;
- }
-}
\ No newline at end of file
diff --git a/lib/core/service/parmacyModule/prescription_service.dart b/lib/core/service/parmacyModule/prescription_service.dart
index ce931812..ddeaef20 100644
--- a/lib/core/service/parmacyModule/prescription_service.dart
+++ b/lib/core/service/parmacyModule/prescription_service.dart
@@ -1,11 +1,9 @@
-
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Prescriptions.dart';
-
class PrescriptionService extends BaseService {
final AppSharedPreferences sharedPref = AppSharedPreferences();
bool isFinished = true;
@@ -16,7 +14,6 @@ class PrescriptionService extends BaseService {
List _prescriptionsList = List();
List get prescriptionsList => _prescriptionsList;
-
// Future getPrescription() async {
// hasError = false;
// url = PRESCRIPTION;
@@ -35,29 +32,23 @@ class PrescriptionService extends BaseService {
// });
// }
Future getPrescription() async {
- url = PRESCRIPTION;
- print("Print PRESCRIPTION url" + url);
+ url = PRESCRIPTION;
+ print("Print PRESCRIPTION url" + url);
hasError = false;
-<<<<<<< HEAD
Map body = Map();
body['isDentalAllowedBackend'] = false;
- await baseAppClient.post(PRESCRIPTION,
-=======
- url = PRESCRIPTION;
print("Print PRESCRIPTION url" + url);
await baseAppClient.post(url,
->>>>>>> development
onSuccess: (dynamic response, int statusCode) {
- _prescriptionsList.clear();
- response['PatientPrescriptionList'].forEach((prescriptions) {
- _prescriptionsList.add(Prescriptions.fromJson(prescriptions));
- });
- print(_prescriptionsList.length);
- print(response);
- }, onFailure: (String error, int statusCode) {
- hasError = true;
- super.error = error;
- }, body: body);
+ _prescriptionsList.clear();
+ response['PatientPrescriptionList'].forEach((prescriptions) {
+ _prescriptionsList.add(Prescriptions.fromJson(prescriptions));
+ });
+ print(_prescriptionsList.length);
+ print("response is -------------"+response);
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
}
-
-}
\ No newline at end of file
+}
diff --git a/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart b/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart
index ddb10f4e..b3f581db 100644
--- a/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart
+++ b/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart
@@ -34,13 +34,13 @@ class PharmacyModuleViewModel extends BaseViewModel {
_pharmacyService.lastVisitedProducts;
- List get recommendedProduct =>
- _recommendedProductService.recommendedProductList;
+ List get recommendedProductList =>
+ _recommendedProductService.recommendedList;
List get prescriptionsList =>
_prescriptionService.prescriptionsList;
-
+ bool hasError = false;
// List get pharmacyPrescriptionsList => PharmacyProduct.pharmacyPrescriptionsList ;
Future getPharmacyHomeData() async {
@@ -136,10 +136,10 @@ class PharmacyModuleViewModel extends BaseViewModel {
}
/////////////RecommendedProducts
- getRecommendedProducts(ProductId) async {
- print("_____________________________________");
- print(ProductId);
- await _recommendedProductService.getRecommendedProducts(ProductId.toString());
+ getRecommendedProducts(productId) async {
+ hasError = false;
+ setState(ViewState.Busy);
+ await _recommendedProductService.getRecommendedProducts(productId.toString());
if (_recommendedProductService.hasError) {
error = _recommendedProductService.error;
setState(ViewState.Error);
diff --git a/lib/pages/pharmacies/product_detail.dart b/lib/pages/pharmacies/product_detail.dart
index 73157d85..41daef80 100644
--- a/lib/pages/pharmacies/product_detail.dart
+++ b/lib/pages/pharmacies/product_detail.dart
@@ -280,45 +280,23 @@ class __ProductDetailPageState extends State {
SizedBox(
height: 10,
),
- Container(
- child: Text(
- languageID == 'ar'
- ? widget.product.shortDescriptionn
- : widget.product.shortDescription ??
- "",
- style: TextStyle(
- fontSize: 16,
- fontFamily: 'WorkSans-Regular'),
- ),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- child: Text(
- TranslationBase.of(context).howToUse,
- style: TextStyle(
- fontSize: 17,
- color: Colors.grey,
- fontWeight: FontWeight.w600),
- ),
- ),
Divider(height: 1, color: Colors.grey),
SizedBox(
- height: 10,
+ height: 15,
),
Container(
child: Text(
languageID == 'ar'
? widget.product.fullDescriptionn
- : widget.product.fullDescription,
+ : widget.product.fullDescription ??
+ "",
style: TextStyle(
fontSize: 16,
fontFamily: 'WorkSans-Regular'),
),
),
SizedBox(
- height: 10,
+ height: 20,
),
// Container(
// child: Text(
@@ -329,6 +307,32 @@ class __ProductDetailPageState extends State {
// fontWeight: FontWeight.w600),
// ),
// ),
+// Divider(height: 1, color: Colors.grey),
+// SizedBox(
+// height: 10,
+// ),
+// Container(
+// child: Text(
+// languageID == 'ar'
+// ? widget.product.fullDescriptionn
+// : widget.product.fullDescription,
+// style: TextStyle(
+// fontSize: 16,
+// fontFamily: 'WorkSans-Regular'),
+// ),
+// ),
+// SizedBox(
+// height: 10,
+// ),
+// Container(
+// child: Text(
+// TranslationBase.of(context).howToUse,
+// style: TextStyle(
+// fontSize: 17,
+// color: Colors.grey,
+// fontWeight: FontWeight.w600),
+// ),
+// ),
// SizedBox(
// height: 6,
// ),
@@ -1894,8 +1898,9 @@ checkWishlist() async {
ProductDetailViewModel x = new ProductDetailViewModel();
await x.checkWishlistData();
for (int i = 0; i < x.wishListItems.length; i++) {
-// print(itemID);
-// print(x.wishListItems[i].product.id);
+ print("---------Enad----wishlist---------------");
+ print(itemID);
+ print(x.wishListItems[i].product.id);
if (itemID == x.wishListItems[i].product.id) {
isInWishlit = true;
// print('in wishlist');
diff --git a/lib/pages/pharmacies/screens/pharmacy_module_page.dart b/lib/pages/pharmacies/screens/pharmacy_module_page.dart
index 3dfc94c9..3f09029a 100644
--- a/lib/pages/pharmacies/screens/pharmacy_module_page.dart
+++ b/lib/pages/pharmacies/screens/pharmacy_module_page.dart
@@ -1,14 +1,16 @@
-
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
+import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/recommendedProduct_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/product_detail_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/landing/home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/offers_categorise_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/product-brands.dart';
+import 'package:diplomaticquarterapp/pages/pharmacies/product_detail.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lacum-activitaion-vida-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lakum-main-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/recommended-product-page.dart';
@@ -23,21 +25,49 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
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:rating_bar/rating_bar.dart';
+bool isInWishlist = false;
+int price = 0;
+dynamic itemID;
+var product;
+var customerId;
+var item;
dynamic languageID;
-class PharmacyPage extends StatelessWidget {
-// Products productModel ;
+List wishlistData;
+
+class PharmacyPage extends StatefulWidget {
+// final PharmacyProduct product;
+// PharmacyPage(this.product);
+
+
+ @override
+ _PharmacyPageState createState() => _PharmacyPageState();
+}
+
+class _PharmacyPageState extends State {
+ dynamic wishlistVar;
getLanguageID() async {
languageID = await sharedPref.getString(APP_LANGUAGE);
}
+
List recommendedProductList = [];
- var model;
+ List wishList = [];
+
+ var model;
+// String ProductId="4561";
+ //String id ="3608";
+ String ProductId="";
+ String id ="";
@override
void initState() {
- print("model recommended is " + model.recommendedProduct.length);
-
+ checkWishlist();
+ // userInfo(widget.product.id, widget.product);
+ userInfo(id, product);
+ print("-------------this--------------");
+ print(itemID);
}
@override
@@ -303,102 +333,182 @@ class PharmacyPage extends StatelessWidget {
),
),
Container(
- height: model.recommendedProduct.length > 0
- ? MediaQuery.of(context).size.height * 0.28
+ height: model.recommendedProductList.length > 0
+ ? MediaQuery.of(context).size.height * 0.30
: 0,
- padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 22.0),
- margin: EdgeInsets.only(left: 10),
+ margin: EdgeInsets.symmetric(
+ horizontal: 6,
+ vertical: 4),
+// padding: EdgeInsets.symmetric(horizontal: 5.0, vertical: 22.0),
+// margin: EdgeInsets.only(left: 10),
child:BaseView(
- onModelReady: (model) => model.getRecommendedProducts(4561 ),
- builder: (_, model, wi) => model.recommendedProduct[0].products.length > 0
+ onModelReady: (model) => model.getRecommendedProducts(ProductId),
+ builder: (_, model, wi) => model.recommendedProductList.length != null
? ListView.builder(
-// itemBuilder: (ctx, i) =>
-// ProductTileItem(model.recommendedProduct[i]),
-// scrollDirection: Axis.horizontal,
-// itemCount: model.recommendedProduct.length,
scrollDirection: Axis.horizontal,
shrinkWrap: true,
physics: ScrollPhysics(),
// physics: NeverScrollableScrollPhysics(),
- itemCount: model.recommendedProduct[0].products.length,
+ itemCount: model.recommendedProductList.length,
itemBuilder: (context, index) {
- return Container(
- height: MediaQuery.of(context).size.height * 0.6,
- padding: EdgeInsets.only(bottom: 5.0, left: 5.0, right: 8.0),
- margin: EdgeInsets.only(right: 10.0),
- decoration: BoxDecoration(
- border: Border.all(
- color: Colors.grey,
- style: BorderStyle.solid,
- width: 1.0,
+ return
+ Card(
+ elevation: 2,
+ shape: RoundedRectangleBorder(
+ side: BorderSide(color: Colors.grey[300], width: 2),
+ borderRadius: BorderRadius.circular(10)),
+//
+ margin: EdgeInsets.symmetric(
+ horizontal: 8,
+ vertical: 4,
+ ),
+ child: Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(15),
),
- color: Colors.white,
- borderRadius: BorderRadius.circular(10.0)),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- margin: EdgeInsets.fromLTRB(0, 16, 0, 0),
- alignment: Alignment.center,
- child: (model.recommendedProduct[0].products[index].images != null &&
- model.recommendedProduct[0].products[index].images.length > 0)
- ? Image.network(
- model.recommendedProduct[0].products[index].images[0].src.toString(),
+
+ ),
+ padding: EdgeInsets.symmetric(horizontal: 4),
+ width: MediaQuery.of(context).size.width / 3,
+//
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+
+ Stack(
+ children:[
+ Container(
+ child: Align(
+ alignment: Alignment.topRight,
+ child: //true
+ itemID.contains(model.recommendedProductList[index].id)
+ // !isInWishlist
+ ? IconButton(
+ icon: Icon(Icons.favorite_border),
+ color: Colors.grey,
+ iconSize: 30,
+ onPressed: () {
+ setState(() {
+ addToWishlistFunction(itemID);
+ });
+ },
+ )
+ : IconButton(
+ icon: Icon(Icons.favorite),
+ color: Colors.red,
+ iconSize: 30,
+ onPressed: () {
+ setState(() {
+ deleteFromWishlistFunction(itemID);
+ });
+ },
+ )
+//
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.fromLTRB(0, 16, 10, 16),
+ alignment: Alignment.center,
+// padding: EdgeInsets.only(left: 25, bottom: 20),
+ child: (model.recommendedProductList[index].images != null &&
+ model.recommendedProductList[index].images.length > 0)
+ ? Image.network(
+ model.recommendedProductList[index].images[0].src.toString(),
// item.images[0].src,
- fit: BoxFit.cover,
- height: 80,
- )
- : Image.asset(
- "assets/images/no_image.png",
- fit: BoxFit.cover,
- height: 80,
- ),
- ),
- Text(
- model.recommendedProduct[0].products[index].shortDescription
- .toString(),
- style: TextStyle(
- color: Colors.green,
- fontSize: 15.0,
+ fit: BoxFit.cover,
+ height: 60,
+ )
+ : Image.asset(
+ "assets/images/no_image.png",
+ fit: BoxFit.cover,
+ height: 60,
+ ),
+ ),
+ Container(
+ width: model.recommendedProductList[index].rxMessage != null
+ ? MediaQuery.of(context).size.width / 5
+ : 0,
+ padding: EdgeInsets.all(4),
+ decoration: BoxDecoration(
+ color: Color(0xffb23838),
+ borderRadius:
+ BorderRadius.only(topLeft: Radius.circular(6)),
+ ),
+ child: Texts(
+ model.recommendedProductList[index].rxMessage != null
+ ? model.recommendedProductList[index].rxMessage : "",
+ color: Colors.white,
+ regular: true,
+ fontSize: 10,
+ fontWeight: FontWeight.w400,
+ ),
+ ),
+ ] ),
+ Container(
+ margin: EdgeInsets.symmetric(
+ horizontal: 6,
+ vertical: 0,
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ model.recommendedProductList[index].name,
+ style: TextStyle(
+ color: Colors.black,
+ fontSize: 13.0,
// fontWeight: FontWeight.bold,
+ ),
+ ),
+ Padding(
+// padding: const EdgeInsets.only(top: 15, bottom: 10),
+ padding: const EdgeInsets.only(top: 10, bottom: 5),
+ child: Texts(
+ "SAR ${model.recommendedProductList[index].price}",
+ bold: true,
+ fontSize: 14,
+ ),
+ ),
+ ],
+ ),
),
- ),
- Padding(
- padding: const EdgeInsets.only(top: 4, bottom: 4),
- child: Texts(
- "SAR ${model.recommendedProduct[0].products[index].price}",
- bold: true,
- fontSize: 14,
- ),
- ),
- Row(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
-// Container(
+ Row(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Container(
+ padding: EdgeInsets.only(right: 10),
// margin: EdgeInsets.only(left: 5),
-// child: Align(
-// alignment: Alignment.topLeft,
-// child: RatingBar.readOnly(
-// initialRating:
-// model.recommendedProduct[0].products[index].reviews.toDouble(),
-//// initialRating: productRate,
-// size: 15.0,
-// filledColor: Colors.yellow[700],
-// emptyColor: Colors.grey[500],
-// isHalfAllowed: true,
-// halfFilledIcon: Icons.star_half,
-// filledIcon: Icons.star,
-// emptyIcon: Icons.star,
-// ),
-// ),
-// ),
- ]),
- ],
+ child: Align(
+ alignment: Alignment.topLeft,
+ child: RatingBar.readOnly(
+ initialRating:
+ model.recommendedProductList[index].approvedRatingSum.toDouble(),
+// initialRating: productRate,
+ size: 13.0,
+ filledColor: Colors.yellow[700],
+ emptyColor: Colors.grey[500],
+ isHalfAllowed: true,
+ halfFilledIcon: Icons.star_half,
+ filledIcon: Icons.star,
+ emptyIcon: Icons.star,
+ ),
+ ),
+ ),
+ Texts(
+ "(${model.recommendedProductList[index].approvedTotalReviews.toString()})",
+// bold: true,
+ fontSize: 12,
+ ),
+ ]),
+ ],
+ ),
),
);
}
- ): Container(
+ ):
+ Container(
// child: Text("NO DATA"),
),
),
@@ -509,8 +619,56 @@ class PharmacyPage extends StatelessWidget {
),
);
}
+
+
+ addToWishlistFunction(itemID) async {
+ ProductDetailViewModel x = new ProductDetailViewModel();
+ isInWishlist = true;
+ await x.addToWishlistData(itemID);
+ }
+
+ deleteFromWishlistFunction(itemID) async {
+ ProductDetailViewModel x = new ProductDetailViewModel();
+ isInWishlist = false;
+ await x.addToWishlistData(itemID);
+ }
+
+
+
+ checkWishlist() async {
+ ProductDetailViewModel x = new ProductDetailViewModel();
+ await x.checkWishlistData();
+ for (int i = 0; i < x.wishListItems.length; i++) {
+ // itemID = x.wishListItems[i].id;
+ print("-------------wishlist---------------");
+ print(itemID);
+// print(product.id);
+ print(x.wishListItems[i].productId);
+ if (itemID == x.wishListItems[i].productId) {
+ isInWishlist = true;
+// print('in wishlist');
+ break;
+ } else {
+ isInWishlist = false;
+// print('not in wishlist');
+ }
+ }
+ }
+
+
+ Future userInfo(id, product) async {
+ customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
+ if (customerId != null) {
+ itemID = id;
+ product = product;
+ checkWishlist();
+ }
+ print("customerId:$customerId");
+ return customerId;
+ }
}
+
class GridViewButtons extends StatelessWidget {
final PharmacyModuleViewModel model;
@@ -643,6 +801,8 @@ class GridViewCard extends StatelessWidget {
);
}
+
+
String getDate(String date) {
DateTime dateObj = DateUtil.convertStringToDate(date);
return DateUtil.getWeekDay(dateObj.weekday) +
@@ -654,3 +814,34 @@ class GridViewCard extends StatelessWidget {
dateObj.year.toString();
}
}
+
+
+
+
+
+class test extends StatefulWidget {
+ @override
+ _testState createState() => _testState();
+}
+
+
+class _testState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return Container();
+ }
+}
+//addWishlistData() async {
+// ProductDetailViewModel x = new ProductDetailViewModel();
+// await wishlistData.add(x.checkWishlistData());
+// print("-------------testWishlist---------------");
+//
+//}
+
+// checkWishlist() async {
+// ProductDetailViewModel x = new ProductDetailViewModel();
+// wishlistVar = await x.checkWishlistData();
+// print("wishlistVar>>>>>>>>>>>>>>>");
+// print(wishlistVar);
+//
+// }
diff --git a/lib/pages/pharmacies/screens/recommended-product-page.dart b/lib/pages/pharmacies/screens/recommended-product-page.dart
index 7d2d4c71..df5e08d3 100644
--- a/lib/pages/pharmacies/screens/recommended-product-page.dart
+++ b/lib/pages/pharmacies/screens/recommended-product-page.dart
@@ -1,12 +1,18 @@
-
-
+import 'package:diplomaticquarterapp/core/model/pharmacies/recommendedProduct_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/product_detail_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
import 'package:rating_bar/rating_bar.dart';
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
+
+dynamic languageID;
+bool isInWishlist = false;
+var itemID;
class RecommendedProductPage extends StatefulWidget {
@override
@@ -14,152 +20,929 @@ class RecommendedProductPage extends StatefulWidget {
}
class _RecommendedProductPageState extends State
- with SingleTickerProviderStateMixin{
+ with SingleTickerProviderStateMixin {
+ List recommendedProductList = [];
+ String ProductId = "4561";
+ bool styleOne = true;
+ bool styleTwo = false;
+ Icon styleIcon = Icon(
+ Icons.widgets_sharp,
+ color: Colors.blue,
+ size: 29.0,
+ );
+
+ getLanguageID() async {
+ languageID = await sharedPref.getString(APP_LANGUAGE);
+ }
+
@override
void initState() {
super.initState();
-
}
@override
Widget build(BuildContext context) {
+ var size = MediaQuery.of(context).size;
+ final double itemHeight = ((size.height - kToolbarHeight - 24) * 0.80) / 2;
+ final double itemWidth = size.width / 2;
return BaseView(
- onModelReady: (model) => model.getRecommendedProducts(4561),
- builder: (_,model, wi )=> AppScaffold(
- appBarTitle:TranslationBase.of(context).recommended,
- baseViewModel: model,
- isShowAppBar: true,
- isPharmacy:true ,
- body: Column(
- children: [
-// Text(
-// "4455" + "Result",
-// style: TextStyle(
-// color: Colors.black,
-// fontSize: 13.0,
-// ),
-// ),
-// SizedBox(
-// height: 10,
-// ),
-// Divider(
-// color: Colors.grey[350],
-// height: 10,
-// thickness: 6,
-// indent: 0,
-// endIndent: 0,
-// ),
- GridView.count(
- crossAxisCount: 2 ,
- children: List.generate(30,(index){
- return Container(
- child: Card(
- color: Colors.blue,
- child: Container(
- height: model.recommendedProduct.length > 0
- ? MediaQuery.of(context).size.height * 0.28
- : 0,
- padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 18.0),
-// margin: EdgeInsets.only(left: 10),
- child:BaseView(
- onModelReady: (model) => model.getRecommendedProducts(4561 ),
- builder: (_, model, wi) => model.recommendedProduct[0].products.length > 0
- ? ListView.builder(
-// itemBuilder: (ctx, i) =>
-// ProductTileItem(model.recommendedProduct[i]),
-// scrollDirection: Axis.horizontal,
-// itemCount: model.recommendedProduct.length,
- scrollDirection: Axis.vertical,
- shrinkWrap: true,
- physics: ScrollPhysics(),
- // physics: NeverScrollableScrollPhysics(),
- itemCount: model.recommendedProduct[0].products.length,
- itemBuilder: (context, index) {
- return Container(
- height: MediaQuery.of(context).size.height * 0.6,
- padding: EdgeInsets.only(bottom: 5.0, left: 5.0, right: 8.0),
- margin: EdgeInsets.only(right: 10.0),
- decoration: BoxDecoration(
- border: Border.all(
- color: Colors.grey,
- style: BorderStyle.solid,
- width: 1.0,),
- color: Colors.white,
- borderRadius: BorderRadius.circular(10.0)),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- margin: EdgeInsets.fromLTRB(0, 16, 0, 0),
- alignment: Alignment.center,
- child: (model.recommendedProduct[0].products[index].images != null &&
- model.recommendedProduct[0].products[index].images.length > 0)
- ? Image.network(
- model.recommendedProduct[0].products[index].images[0].src.toString(),
+ onModelReady: (model) => model.getRecommendedProducts(ProductId),
+ builder: (_, model, wi) => AppScaffold(
+ appBarTitle: TranslationBase.of(context).recommended,
+ baseViewModel: model,
+ isShowAppBar: true,
+ isPharmacy: true,
+ backgroundColor: Colors.white,
+ body: Column(children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Container(
+ padding: EdgeInsets.only(
+ top: 8,
+ bottom: 10,
+ left: 10,
+ ),
+ child: Text(
+ model.recommendedProductList.length.toString(),
+ style: TextStyle(
+ color: Colors.black,
+ fontSize: 14.0,
+ ),
+ ),
+ ),
+ Container(
+ padding: EdgeInsets.only(top: 8, bottom: 10, left: 8),
+ child: Text(
+ TranslationBase.of(context).result,
+ style: TextStyle(
+ color: Colors.black,
+ fontSize: 14.0,
+ ),
+ ),
+ ),
+ ],
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ Padding(
+ padding: const EdgeInsets.symmetric(vertical: 8),
+ child: SizedBox(
+ child: Container(
+ width: 1,
+ color: Colors.grey,
+ ),
+ ),
+ ),
+ Container(
+ child: Image.asset(
+ 'assets/images/pharmacy/sort.png',
+ width: 20,
+ height: 20,
+// color: Colors.red,
+ ),
+ ),
+ Container(
+ child: Text(
+ TranslationBase.of(context).sort,
+ style: TextStyle(
+ color: Colors.black,
+ fontSize: 14.0,
+ ),
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.symmetric(vertical: 8),
+ child: SizedBox(
+ child: Container(
+ width: 1,
+ color: Colors.grey,
+ ),
+ ),
+ ),
+ Divider(
+ thickness: 1.0,
+ color: Colors.black12,
+ ),
+ Padding(
+ padding: EdgeInsets.all(8.0),
+ child: InkWell(
+ child: styleIcon,
+ onTap: () {
+ setState(() {
+ if (styleOne == true) {
+ styleOne = false;
+ styleTwo = true;
+ styleIcon = Icon(
+ Icons.auto_awesome_mosaic,
+ color: Colors.blue,
+ size: 29.0,
+ );
+ } else {
+ styleOne = true;
+ styleTwo = false;
+ styleIcon = Icon(
+ Icons.widgets_sharp,
+ color: Colors.blue,
+ size: 29.0,
+ );
+ }
+ });
+ },
+ ),
+ ),
+ ],
+ ),
+ ]),
+ SizedBox(
+ height: 2,
+ ),
+ Divider(
+ color: Colors.grey[350],
+ height: 10,
+ thickness: 6,
+ indent: 0,
+ endIndent: 0,
+ ),
+ styleOne == true
+ ? Container(
+ margin: EdgeInsets.all(5.0),
+ child: model.recommendedProductList.length != null
+ ? CustomScrollView(
+ primary: false,
+ shrinkWrap: true,
+ physics: NeverScrollableScrollPhysics(),
+ slivers: [
+ SliverPadding(
+ padding: const EdgeInsets.fromLTRB(0, 0, 0, 0),
+ sliver: SliverGrid.count(
+ crossAxisCount: 2,
+ childAspectRatio: (itemWidth / itemHeight),
+ children: model.recommendedProductList
+ .map((e) => Card(
+ elevation: 2,
+ shape: RoundedRectangleBorder(
+ side: BorderSide(
+ color: Colors.grey[300],
+ width: 2),
+ borderRadius:
+ BorderRadius.circular(
+ 10)),
+ margin: EdgeInsets.symmetric(
+ horizontal: 8,
+ vertical: 4,
+ ),
+ child: Container(
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(
+ Radius.circular(15),
+ ),
+ ),
+ padding: EdgeInsets.symmetric(
+ horizontal: 4),
+ width: MediaQuery.of(context)
+ .size
+ .width /
+ 3,
+//
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment
+ .start,
+ children: [
+ Stack(children: [
+ Container(
+ child: Align(
+ alignment:
+ Alignment
+ .topRight,
+ child: //true
+ //wishlistVar[index].id.contains(model.recommendedProductList[index].id)
+ !isInWishlist
+ ? IconButton(
+ icon:
+ Icon(Icons.favorite_border),
+ color:
+ Colors.grey,
+ iconSize:
+ 30,
+ onPressed:
+ () {
+ setState(() {
+ addToWishlistFunction(itemID);
+ });
+ },
+ )
+ : IconButton(
+ icon:
+ Icon(Icons.favorite),
+ color:
+ Colors.red,
+ iconSize:
+ 30,
+ onPressed:
+ () {
+ setState(() {
+ deleteFromWishlistFunction(itemID);
+ });
+ },
+ )
+//
+ ),
+ ),
+ Container(
+ margin: EdgeInsets
+ .fromLTRB(0, 16,
+ 10, 16),
+ alignment:
+ Alignment.center,
+// padding: EdgeInsets.only(left: 25, bottom: 20),
+ child: (e.images !=
+ null &&
+ e.images.length >
+ 0)
+ ? Image.network(
+ e.images[0]
+ .src
+ .toString(),
// item.images[0].src,
- fit: BoxFit.cover,
- height: 80,
- )
- : Image.asset(
- "assets/images/no_image.png",
- fit: BoxFit.cover,
- height: 80,
+ fit: BoxFit
+ .cover,
+ height: 60,
+ )
+ : Image.asset(
+ "assets/images/no_image.png",
+ fit: BoxFit
+ .cover,
+ height: 60,
+ ),
+ ),
+ Container(
+ width: e.rxMessage !=
+ null
+ ? MediaQuery.of(
+ context)
+ .size
+ .width /
+ 5
+ : 0,
+ padding:
+ EdgeInsets.all(4),
+ decoration:
+ BoxDecoration(
+ color: Color(
+ 0xffb23838),
+ borderRadius:
+ BorderRadius.only(
+ topLeft: Radius
+ .circular(
+ 6)),
+ ),
+ child: Texts(
+ e.rxMessage != null
+ ? e.rxMessage
+ : "",
+ color: Colors.white,
+ regular: true,
+ fontSize: 10,
+ fontWeight:
+ FontWeight.w400,
+ ),
+ ),
+ ]),
+ Container(
+ margin: EdgeInsets
+ .symmetric(
+ horizontal: 6,
+ vertical: 0,
+ ),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment
+ .start,
+ children: [
+ Text(
+ e.name,
+ style: TextStyle(
+ color: Colors
+ .black,
+ fontSize: 13.0,
+// fontWeight: FontWeight.bold,
+ ),
+ ),
+ Padding(
+// padding: const EdgeInsets.only(top: 15, bottom: 10),
+ padding:
+ const EdgeInsets
+ .only(
+ top: 10,
+ bottom:
+ 5),
+ child: Texts(
+ "SAR ${e.price}",
+ bold: true,
+ fontSize: 14,
+ ),
+ ),
+ ],
+ ),
+ ),
+ Row(
+ crossAxisAlignment:
+ CrossAxisAlignment
+ .start,
+ children: [
+ Container(
+ padding: EdgeInsets
+ .only(
+ right:
+ 10),
+// margin: EdgeInsets.only(left: 5),
+ child: Align(
+ alignment:
+ Alignment
+ .topLeft,
+ child: RatingBar
+ .readOnly(
+ initialRating: e
+ .approvedRatingSum
+ .toDouble(),
+// initialRating: productRate,
+ size: 13.0,
+ filledColor:
+ Colors.yellow[
+ 700],
+ emptyColor:
+ Colors.grey[
+ 500],
+ isHalfAllowed:
+ true,
+ halfFilledIcon:
+ Icons
+ .star_half,
+ filledIcon:
+ Icons
+ .star,
+ emptyIcon:
+ Icons
+ .star,
+ ),
+ ),
+ ),
+ Texts(
+ "(${e.approvedTotalReviews.toString()})",
+// bold: true,
+ fontSize: 12,
+ ),
+ ]),
+ ],
+ ),
+ ),
+ )
+// Column(
+// crossAxisAlignment:
+// CrossAxisAlignment.start,
+// children: [
+// Container(
+// child: Align(
+// alignment: Alignment.topRight,
+// child: !isInWishlist
+// ? IconButton(
+// icon: Icon(Icons.favorite_border),
+// color: Colors.grey,
+// iconSize: 30,
+// onPressed: () {
+// setState(() {
+// addToWishlistFunction(itemID);
+// });
+// },
+// )
+// : IconButton(
+// icon: Icon(Icons.favorite),
+// color: Colors.red,
+// iconSize: 30,
+// onPressed: () {
+// setState(() {
+// deleteFromWishlistFunction(itemID);
+// });
+// },
+// )
+////
+// ),),
+// Container(
+// padding: EdgeInsets.only(
+// left: 25, bottom: 20),
+//// margin: EdgeInsets.fromLTRB(0, 16, 0, 0),
+//// alignment: Alignment.centerLeft,
+// child: (e.images != null &&
+// e.images.length > 0)
+// ? Image.network(
+// e.images[0].src
+// .toString(),
+//// item.images[0].src,
+// fit: BoxFit.cover,
+// height: 80,
+// )
+// : Image.asset(
+// "assets/images/no_image.png",
+// fit: BoxFit.cover,
+// height: 80,
+// ),
+// ),
+// Text(
+// e.name,
+//// model.recommendedProduct[0].products[index].shortDescription
+//// .toString(),
+// style: TextStyle(
+// color: Colors.black,
+// fontSize: 15.0,
+//// fontWeight: FontWeight.bold,
+// ),
+// ),
+// Padding(
+// padding: const EdgeInsets.only(
+// top: 15, bottom: 10),
+// child: Texts(
+// "SAR ${e.price}",
+// bold: true,
+// fontSize: 14,
+// ),
+// ),
+// Row(
+// crossAxisAlignment:
+// CrossAxisAlignment.start,
+// children: [
+// Container(
+// padding: EdgeInsets.only(
+// right: 10),
+//// margin: EdgeInsets.only(left: 5),
+// child: Align(
+// alignment:
+// Alignment.topLeft,
+// child: RatingBar.readOnly(
+// initialRating: e
+// .approvedRatingSum
+// .toDouble(),
+//// initialRating: productRate,
+// size: 15.0,
+// filledColor:
+// Colors.yellow[700],
+// emptyColor:
+// Colors.grey[500],
+// isHalfAllowed: true,
+// halfFilledIcon:
+// Icons.star_half,
+// filledIcon: Icons.star,
+// emptyIcon: Icons.star,
+// ),
+// ),
+// ),
+// Texts(
+// "(${e.approvedTotalReviews.toString()})",
+//// bold: true,
+// fontSize: 12,
+// ),
+// ]),
+// ],
+// ),
+ )
+ .toList(),
+// children:[
+// ListView.builder(
+// scrollDirection: Axis.vertical,
+// shrinkWrap: true,
+// physics: ScrollPhysics(),
+// itemCount: model.recommendedProductList.length,
+// itemBuilder: (context, index) {
+// return Container(
+// height: 30,
+// padding: EdgeInsets.only( left: 15.0, top: 10, right: 10),
+// margin: EdgeInsets.only(right: 10.0),
+// decoration: BoxDecoration(
+// border: Border.all(
+// color: Colors.grey,
+// style: BorderStyle.solid,
+// width: 1.0,
+// ),
+// color: Colors.white,
+// borderRadius: BorderRadius.circular(10.0)),
+// child: Column(
+// crossAxisAlignment: CrossAxisAlignment.start,
+// children: [
+// Container(
+// child: Align(
+// alignment: Alignment.topRight,
+// child:!isInWishlist
+// ? InkWell(
+// onTap: () {
+// },
+// child: SvgPicture.asset(
+// 'assets/images/pharmacy/heart-empty.svg',
+// width: 20,
+// height: 20,
+// color: Colors.grey,
+// ),
+// )
+// : InkWell(
+// onTap: () {
+// },
+// child: SvgPicture.asset(
+// 'assets/images/pharmacy/Redheart.svg',
+// width: 20,
+// height: 20,
+//// color: Colors.red,
+// ),
+// )
+// ),
+// ),
+// Container(
+// padding: EdgeInsets.only(left: 25, bottom: 20),
+//// margin: EdgeInsets.fromLTRB(0, 16, 0, 0),
+//// alignment: Alignment.centerLeft,
+// child: (model.recommendedProductList[index].images != null &&
+// model.recommendedProductList[index].images.length > 0)
+// ? Image.network(
+// model.recommendedProductList[index].images[0].src.toString(),
+//// item.images[0].src,
+// fit: BoxFit.cover,
+// height: 80,
+// )
+// : Image.asset(
+// "assets/images/no_image.png",
+// fit: BoxFit.cover,
+// height: 80,
+// ),
+// ),
+// Text(
+// model.recommendedProductList[index].name,
+//// model.recommendedProduct[0].products[index].shortDescription
+//// .toString(),
+// style: TextStyle(
+// color: Colors.black,
+// fontSize: 15.0,
+//// fontWeight: FontWeight.bold,
+// ),
+// ),
+// Padding(
+// padding: const EdgeInsets.only(top: 15, bottom: 10),
+// child: Texts(
+// "SAR ${model.recommendedProductList[index].price}",
+// bold: true,
+// fontSize: 14,
+// ),
+// ),
+// Row(
+// crossAxisAlignment:
+// CrossAxisAlignment.start,
+// children: [
+// Container(
+// padding: EdgeInsets.only(right: 10),
+//// margin: EdgeInsets.only(left: 5),
+// child: Align(
+// alignment: Alignment.topLeft,
+// child: RatingBar.readOnly(
+// initialRating:
+// model.recommendedProductList[index].approvedRatingSum.toDouble(),
+//// initialRating: productRate,
+// size: 15.0,
+// filledColor: Colors.yellow[700],
+// emptyColor: Colors.grey[500],
+// isHalfAllowed: true,
+// halfFilledIcon: Icons.star_half,
+// filledIcon: Icons.star,
+// emptyIcon: Icons.star,
+// ),
+// ),
+// ),
+// Texts(
+// "(${model.recommendedProductList[index].approvedTotalReviews.toString()})",
+//// bold: true,
+// fontSize: 12,
+// ),
+// ]),
+// ],
+// ),
+// );
+// }
+// ),
+// ]
+ ),
+ ),
+ ])
+ : Container(),
+ )
+ : Container(
+ height: model.recommendedProductList.length > 0
+ ? MediaQuery.of(context).size.height * 0.60
+ : 0,
+ child: ListView.builder(
+ physics: ScrollPhysics(),
+// physics: NeverScrollableScrollPhysics(),
+ itemCount: model.recommendedProductList.length,
+ itemBuilder: (context, index) {
+ return Card(
+ elevation: 2,
+ shape: RoundedRectangleBorder(
+ side:
+ BorderSide(color: Colors.grey[300], width: 2),
+ borderRadius: BorderRadius.circular(10)),
+//
+ margin: EdgeInsets.symmetric(
+ horizontal: 8,
+ vertical: 4,
+ ),
+ child: Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(15),
+ ),
+ ),
+ padding: EdgeInsets.symmetric(horizontal: 5),
+ width: MediaQuery.of(context).size.width / 3,
+//
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Stack(children: [
+ Container(
+ child: Align(
+ alignment: Alignment.topRight,
+ child: //true
+ //wishlistVar[index].id.contains(model.recommendedProductList[index].id)
+ !isInWishlist
+ ? IconButton(
+ icon: Icon(
+ Icons.favorite_border),
+ color: Colors.grey,
+ iconSize: 30,
+ onPressed: () {
+ setState(() {
+ addToWishlistFunction(
+ itemID);
+ });
+ },
+ )
+ : IconButton(
+ icon: Icon(Icons.favorite),
+ color: Colors.red,
+ iconSize: 30,
+ onPressed: () {
+ setState(() {
+ deleteFromWishlistFunction(
+ itemID);
+ });
+ },
+ )
+//
),
- ),
+ ),
+ Container(
+ margin: EdgeInsets.fromLTRB(0, 16, 10, 16),
+ alignment: Alignment.center,
+// padding: EdgeInsets.only(left: 25, bottom: 20),
+ child: (model.recommendedProductList[index]
+ .images !=
+ null &&
+ model.recommendedProductList[index]
+ .images.length >
+ 0)
+ ? Image.network(
+ model.recommendedProductList[index]
+ .images[0].src
+ .toString(),
+// item.images[0].src,
+ fit: BoxFit.cover,
+ height: 60,
+ )
+ : Image.asset(
+ "assets/images/no_image.png",
+ fit: BoxFit.cover,
+ height: 60,
+ ),
+ ),
+ Container(
+ width: model.recommendedProductList[index]
+ .rxMessage !=
+ null
+ ? MediaQuery.of(context).size.width / 5
+ : 0,
+ padding: EdgeInsets.all(4),
+ decoration: BoxDecoration(
+ color: Color(0xffb23838),
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(6)),
+ ),
+ child: Texts(
+ model.recommendedProductList[index]
+ .rxMessage !=
+ null
+ ? model.recommendedProductList[index]
+ .rxMessage
+ : "",
+ color: Colors.white,
+ regular: true,
+ fontSize: 10,
+ fontWeight: FontWeight.w400,
+ ),
+ ),
+ ]),
+ Container(
+ margin: EdgeInsets.symmetric(
+ horizontal: 6,
+ vertical: 2,
+ ),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
Text(
- model.recommendedProduct[0].products[index].shortDescription
- .toString(),
+ model
+ .recommendedProductList[index].name,
style: TextStyle(
- color: Colors.green,
- fontSize: 15.0,
+ color: Colors.black,
+ fontSize: 13.0,
// fontWeight: FontWeight.bold,
),
),
Padding(
- padding: const EdgeInsets.only(top: 4, bottom: 4),
+// padding: const EdgeInsets.only(top: 15, bottom: 10),
+ padding: const EdgeInsets.only(
+ top: 10, bottom: 5),
child: Texts(
- "SAR ${model.recommendedProduct[0].products[index].price}",
+ "SAR ${model.recommendedProductList[index].price}",
bold: true,
fontSize: 14,
),
),
- Row(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
-// Container(
-// margin: EdgeInsets.only(left: 5),
-// child: Align(
-// alignment: Alignment.topLeft,
-// child: RatingBar.readOnly(
-// initialRating:
-// model.recommendedProduct[0].products[index].reviews.toDouble(),
-//// initialRating: productRate,
-// size: 15.0,
-// filledColor: Colors.yellow[700],
-// emptyColor: Colors.grey[500],
-// isHalfAllowed: true,
-// halfFilledIcon: Icons.star_half,
-// filledIcon: Icons.star,
-// emptyIcon: Icons.star,
-// ),
-// ),
-// ),
- ]),
],
),
- );
- }
- ): Container(
-// child: Text("NO DATA"),
+ ),
+ Row(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Container(
+ padding: EdgeInsets.only(
+ right: 10, bottom: 10),
+// margin: EdgeInsets.only(left: 5),
+ child: Align(
+ alignment: Alignment.topLeft,
+ child: RatingBar.readOnly(
+ initialRating: model
+ .recommendedProductList[index]
+ .approvedRatingSum
+ .toDouble(),
+// initialRating: productRate,
+ size: 13.0,
+ filledColor: Colors.yellow[700],
+ emptyColor: Colors.grey[500],
+ isHalfAllowed: true,
+ halfFilledIcon: Icons.star_half,
+ filledIcon: Icons.star,
+ emptyIcon: Icons.star,
+ ),
+ ),
+ ),
+ Texts(
+ "(${model.recommendedProductList[index].approvedTotalReviews.toString()})",
+// bold: true,
+ fontSize: 12,
+ ),
+ ]),
+ ],
+ ),
),
- ),
- ),
- ),
- );
- }),
- ),
- ] ),
- ),
+ );
+// Container(
+// height: 30,
+// padding: EdgeInsets.only( left: 10.0, top: 10, right: 10),
+//// margin: EdgeInsets.only(right: 10.0),
+// decoration: BoxDecoration(
+// border: Border.all(
+// color: Colors.grey,
+// style: BorderStyle.solid,
+// width: 1.0,
+// ),
+// color: Colors.white,
+// borderRadius: BorderRadius.circular(10.0)),
+// child: Column(
+// crossAxisAlignment: CrossAxisAlignment.start,
+// children: [
+// Container(
+// child: Align(
+// alignment: Alignment.topRight,
+// child:!isInWishlist
+// ? InkWell(
+// onTap: () {
+// },
+// child: SvgPicture.asset(
+// 'assets/images/pharmacy/heart-empty.svg',
+// width: 20,
+// height: 20,
+// color: Colors.grey,
+// ),
+// )
+// : InkWell(
+// onTap: () {
+// },
+// child: SvgPicture.asset(
+// 'assets/images/pharmacy/Redheart.svg',
+// width: 20,
+// height: 20,
+//// color: Colors.red,
+// ),
+// )
+// ),
+// ),
+// Container(
+// padding: EdgeInsets.only(left: 25, bottom: 20),
+//// margin: EdgeInsets.fromLTRB(0, 16, 0, 0),
+//// alignment: Alignment.centerLeft,
+// child: (model.recommendedProductList[index].images != null &&
+// model.recommendedProductList[index].images.length > 0)
+// ? Image.network(
+// model.recommendedProductList[index].images[0].src.toString(),
+//// item.images[0].src,
+// fit: BoxFit.cover,
+// height: 80,
+// )
+// : Image.asset(
+// "assets/images/no_image.png",
+// fit: BoxFit.cover,
+// height: 80,
+// ),
+// ),
+// Text(
+// model.recommendedProductList[index].name,
+//// model.recommendedProduct[0].products[index].shortDescription
+//// .toString(),
+// style: TextStyle(
+// color: Colors.black,
+// fontSize: 15.0,
+//// fontWeight: FontWeight.bold,
+// ),
+// ),
+// Padding(
+// padding: const EdgeInsets.only(top: 15, bottom: 10),
+// child: Texts(
+// "SAR ${model.recommendedProductList[index].price}",
+// bold: true,
+// fontSize: 14,
+// ),
+// ),
+// Row(
+// crossAxisAlignment:
+// CrossAxisAlignment.start,
+// children: [
+// Container(
+// padding: EdgeInsets.only(right: 10),
+//// margin: EdgeInsets.only(left: 5),
+// child: Align(
+// alignment: Alignment.topLeft,
+// child: RatingBar.readOnly(
+// initialRating:
+// model.recommendedProductList[index].approvedRatingSum.toDouble(),
+//// initialRating: productRate,
+// size: 15.0,
+// filledColor: Colors.yellow[700],
+// emptyColor: Colors.grey[500],
+// isHalfAllowed: true,
+// halfFilledIcon: Icons.star_half,
+// filledIcon: Icons.star,
+// emptyIcon: Icons.star,
+// ),
+// ),
+// ),
+// Texts(
+// "(${model.recommendedProductList[index].approvedTotalReviews.toString()})",
+//// bold: true,
+// fontSize: 12,
+// ),
+// ]),
+// ],
+// ),
+// );
+ }),
+ ),
+ ]),
+ ),
);
- }}
\ No newline at end of file
+ }
+}
+
+addToWishlistFunction(itemID) async {
+ ProductDetailViewModel x = new ProductDetailViewModel();
+ isInWishlist = true;
+ await x.addToWishlistData(itemID);
+}
+
+deleteFromWishlistFunction(itemID) async {
+ ProductDetailViewModel x = new ProductDetailViewModel();
+ isInWishlist = false;
+ await x.addToWishlistData(itemID);
+}
diff --git a/lib/pages/pharmacy/order/Order.dart b/lib/pages/pharmacy/order/Order.dart
index 4ef14389..02f64b83 100644
--- a/lib/pages/pharmacy/order/Order.dart
+++ b/lib/pages/pharmacy/order/Order.dart
@@ -69,6 +69,7 @@ class _OrderPageState extends State with SingleTickerProviderStateMix
TabBar(
labelPadding:
EdgeInsets.only(left: 3.0, right: 3.0),
+ labelColor: Colors.black,
tabs: [
Tab(text: TranslationBase.of(context).delivered),
Tab(text: TranslationBase.of(context).processing),
diff --git a/lib/pages/pharmacy/order/OrderDetails.dart b/lib/pages/pharmacy/order/OrderDetails.dart
index 670cb951..5e9b26ea 100644
--- a/lib/pages/pharmacy/order/OrderDetails.dart
+++ b/lib/pages/pharmacy/order/OrderDetails.dart
@@ -48,7 +48,7 @@ class _OrderDetailsPageState extends State {
var model;
var isCancel = false;
var isRefund = false;
- var isActiveDelivery = true;
+ var isActiveDelivery = false;
var dataIsCancel;
var dataIsRefund;
@@ -66,7 +66,13 @@ class _OrderDetailsPageState extends State {
@override
Widget build(BuildContext context) {
return BaseView(
- onModelReady: (model) => model.getOrderDetails(widget.orderModel.id),
+ onModelReady: (model){
+ model.getOrderDetails(widget.orderModel.id).then((value){
+ setState(() {
+ isActiveDelivery = (value.orderStatusId == 995 && (value.driverID != null && value.driverID.isNotEmpty));
+ });
+ });
+ },
builder: (_, model, wi) => AppScaffold(
appBarTitle: TranslationBase.of(context).orderDetail,
isShowAppBar: true,
@@ -111,11 +117,9 @@ class _OrderDetailsPageState extends State {
borderRadius: BorderRadius.circular(30.0)),
child: Text(
languageID == "ar"
- ? model.orderListModel[0].orderStatusn.toString()
- : model.orderListModel[0].orderStatus
- .toString()
- .substring(12),
-// TranslationBase.of(context).delivered,
+ ? widget.orderModel.orderStatusn.toString()
+ : widget.orderModel.orderStatus
+ .toString(),
style: TextStyle(
color: Colors.white,
fontSize: 13.0,
@@ -132,12 +136,7 @@ class _OrderDetailsPageState extends State {
children: [
Text(
model.orderListModel[0].shippingAddress.firstName
- .toString()
- .substring(10) +
- ' ' +
- model.orderListModel[0].shippingAddress.lastName
- .toString()
- .substring(9),
+ .toString().substring(10) ,
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
@@ -152,8 +151,8 @@ class _OrderDetailsPageState extends State {
children: [
Text(
model.orderListModel[0].shippingAddress.address1
- .toString()
- .substring(9),
+ .toString().substring(9),
+ // .substring(9),
style: TextStyle(
fontSize: 10.0,
fontWeight: FontWeight.bold,
@@ -169,9 +168,9 @@ class _OrderDetailsPageState extends State {
children: [
Text(
model.orderListModel[0].shippingAddress.address2
- .toString()
- .substring(9) +
- ' ' +
+ .toString().substring(9)
+ // .substring(9) +
+ + ' ' +
model.orderListModel[0].shippingAddress.country
.toString() +
' ' +
@@ -239,8 +238,8 @@ class _OrderDetailsPageState extends State {
Container(
child: flutterImage.Image.asset(
model.orderListModel[0]
- .shippingRateComputationMethodSystemName !=
- "Shipping.Aramex"
+ .shippingRateComputationMethodSystemName !=
+ "Shipping.Aramex"
? "assets/images/pharmacy_module/payment/LogoParmacyGreen.png"
: "assets/images/pharmacy_module/payment/aramex_shipping_logo.png",
fit: BoxFit.contain,
@@ -292,8 +291,8 @@ class _OrderDetailsPageState extends State {
margin: EdgeInsets.only(bottom: 10.0, top: 10.0),
child: Text(
model.orderListModel[0].paymentName
- .toString()
- .substring(12),
+ .toString().substring(12),
+
style: TextStyle(
fontSize: 13.0,
fontWeight: FontWeight.bold,
@@ -345,24 +344,24 @@ class _OrderDetailsPageState extends State {
productReviews: model.orderListModel[0]
.orderItems[index].product.approvedTotalReviews,
totalPrice:
- "${(model.orderListModel[0].orderItems[index].product.price * model.orderListModel[0].orderItems[index].quantity).toStringAsFixed(2)}",
+ "${(model.orderListModel[0].orderItems[index].product.price * model.orderListModel[0].orderItems[index].quantity).toStringAsFixed(2)}",
qyt: model
.orderListModel[0].orderItems[index].quantity
.toString(),
isOrderDetails: true,
imgs: model.orderListModel[0].orderItems[index]
- .product.images !=
- null &&
- model.orderListModel[0].orderItems[index]
- .product.images.length !=
- 0
+ .product.images !=
+ null &&
+ model.orderListModel[0].orderItems[index]
+ .product.images.length !=
+ 0
? model.orderListModel[0].orderItems[index]
- .product.images[0].src
- .toString()
+ .product.images[0].src
+ .toString()
: null,
status: model.orderListModel[0].orderStatusId,
product:
- model.orderListModel[0].orderItems[index].product,
+ model.orderListModel[0].orderItems[index].product,
),
);
}),
@@ -540,81 +539,81 @@ class _OrderDetailsPageState extends State {
),
model.orderListModel[0].orderStatusId == 10
? InkWell(
- onTap: () {
- model.makeOrder();
- },
- child: Container(
+ onTap: () {
+ model.makeOrder();
+ },
+ child: Container(
// margin: EdgeInsets.only(top: 20.0),
- height: 50.0,
- color: Colors.transparent,
- child: Container(
- padding: EdgeInsets.only(left: 130.0, right: 130.0),
- decoration: BoxDecoration(
- border: Border.all(
- color: Colors.green,
- style: BorderStyle.solid,
- width: 4.0),
- color: Colors.green,
- borderRadius: BorderRadius.circular(5.0)),
- child: Center(
- child: Text(
- TranslationBase.of(context).payOnline,
- style: TextStyle(
- color: Colors.white,
- fontWeight: FontWeight.bold,
- ),
- ),
- ),
+ height: 50.0,
+ color: Colors.transparent,
+ child: Container(
+ padding: EdgeInsets.only(left: 130.0, right: 130.0),
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: Colors.green,
+ style: BorderStyle.solid,
+ width: 4.0),
+ color: Colors.green,
+ borderRadius: BorderRadius.circular(5.0)),
+ child: Center(
+ child: Text(
+ TranslationBase.of(context).payOnline,
+ style: TextStyle(
+ color: Colors.white,
+ fontWeight: FontWeight.bold,
),
),
- )
+ ),
+ ),
+ ),
+ )
: Container(),
// getCancelOrder(canCancel, canRefund),
isCancel
? InkWell(
- onTap: () {
- presentConfirmDialog(model, widget.orderModel.id);
- // model.orderListModel[0].id//(widget.orderModel.id));
+ onTap: () {
+ presentConfirmDialog(model, widget.orderModel.id);
+ // model.orderListModel[0].id//(widget.orderModel.id));
//
- },
- child: Container(
+ },
+ child: Container(
// padding: EdgeInsets.only(left: 13.0, right: 13.0, top: 5.0),
- height: 50.0,
- color: Colors.transparent,
- child: Center(
- child: Text(
- TranslationBase.of(context).cancelOrder,
- style: TextStyle(
- color: Colors.red[900],
- fontWeight: FontWeight.bold,
- decoration: TextDecoration.underline),
- ),
- ),
- ),
- )
+ height: 50.0,
+ color: Colors.transparent,
+ child: Center(
+ child: Text(
+ TranslationBase.of(context).cancelOrder,
+ style: TextStyle(
+ color: Colors.red[900],
+ fontWeight: FontWeight.bold,
+ decoration: TextDecoration.underline),
+ ),
+ ),
+ ),
+ )
: Container(),
isActiveDelivery
? InkWell(
- onTap: () {
- // Navigator.push(
- // context,
- // MaterialPageRoute(builder: (context) => TrackDriver(order: widget.orderModel),
- // ));
- },
- child: Container(
- height: 50.0,
- color: Colors.transparent,
- child: Center(
- child: Text(
- TranslationBase.of(context).trackDeliveryDriver,
- style: TextStyle(
- color: Colors.green[900],
- fontWeight: FontWeight.normal,
- decoration: TextDecoration.none),
- ),
- ),
- ),
- )
+ onTap: () {
+ Navigator.push(
+ context,
+ MaterialPageRoute(builder: (context) => TrackDriver(order: model.orderListModel.first),
+ ));
+ },
+ child: Container(
+ height: 50.0,
+ color: Colors.transparent,
+ child: Center(
+ child: Text(
+ TranslationBase.of(context).trackDeliveryDriver,
+ style: TextStyle(
+ color: Colors.green[900],
+ fontWeight: FontWeight.normal,
+ decoration: TextDecoration.none),
+ ),
+ ),
+ ),
+ )
: Container(),
],
),
@@ -702,3 +701,4 @@ class _OrderDetailsPageState extends State {
}
}
}
+
diff --git a/lib/services/pharmacy_services/recommendedProduct_service.dart b/lib/services/pharmacy_services/recommendedProduct_service.dart
index 32fe0a67..ad7222f8 100644
--- a/lib/services/pharmacy_services/recommendedProduct_service.dart
+++ b/lib/services/pharmacy_services/recommendedProduct_service.dart
@@ -5,7 +5,7 @@ import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
-import 'package:flutter/material.dart';
+
@@ -15,23 +15,24 @@ class RecommendedProductService extends BaseService{
AuthenticatedUser authUser = new AuthenticatedUser();
AuthProvider authProvider = new AuthProvider();
- List _recommendedProductList = List();
- List get recommendedProductList => _recommendedProductList;
+ List _recommendedProductList = List();
+ List get recommendedList => _recommendedProductList;
String url ="";
- Future getRecommendedProducts(ProductId) async {
+ Future getRecommendedProducts(productId) async {
hasError = false;
- url =GET_RECOMMENDED_PRODUCT+ProductId;
- print("Recommended Product is"+url);
-
+ url =GET_RECOMMENDED_PRODUCT+productId;
await baseAppClient.getPharmacy(url,
onSuccess: (dynamic response, int statusCode) {
_recommendedProductList.clear();
-
response['products'].forEach((item) {
+ _recommendedProductList.add(Products.fromJson(item));
+ print("----------------------------------");
+ print("Test data");
+ print(_recommendedProductList[0]);
+ print(item['name']);
+ print(response);
});
- print("print recommended items" + _recommendedProductList.length.toString());
- print(response);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart
index c3acb5fd..3a993805 100644
--- a/lib/uitl/translations_delegate_base.dart
+++ b/lib/uitl/translations_delegate_base.dart
@@ -995,6 +995,7 @@ class TranslationBase {
String get convertBloodSugarStatement => localizedValues["convertBloodSugarStatement"][locale.languageCode];
String get convertFrom => localizedValues["convertFrom"][locale.languageCode];
String get result => localizedValues["result"][locale.languageCode];
+ String get sort => localizedValues["sort"][locale.languageCode];
String get bloodSugarConversion => localizedValues["bloodSugarConversion"][locale.languageCode];
String get convertCholesterolStatement => localizedValues["convertCholesterolStatement"][locale.languageCode];
String get triglyceridesConvertStatement => localizedValues["triglyceridesConvertStatement"][locale.languageCode];