diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
new file mode 100644
index 00000000..4ace459d
--- /dev/null
+++ b/android/app/proguard-rules.pro
@@ -0,0 +1,4 @@
+-keep class tvi.webrtc.** { *; }
+-keep class com.twilio.video.** { *; }
+-keep class com.twilio.common.** { *; }
+-keepattributes InnerClasses
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index 433bc8ad..32bda0b1 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -3,6 +3,9 @@ buildscript {
repositories {
google()
jcenter()
+// maven {
+// url "https://dl.bintray.com/kotlin/kotlin-eap/"
+// }
}
dependencies {
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index c935be88..1f9de82f 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-all.zip
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 f896d304..4b976928 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -12,8 +12,8 @@ const EXA_CART_API_BASE_URL = 'https://mdlaboratories.com/exacartapi';
const PACKAGES_CATEGORIES = '/api/categories';
const PACKAGES_PRODUCTS = '/api/products';
-const BASE_URL = 'https://uat.hmgwebservices.com/';
-//const BASE_URL = 'https://hmgwebservices.com/';
+//const BASE_URL = 'https://uat.hmgwebservices.com/';
+const BASE_URL = 'https://hmgwebservices.com/';
//const BASE_PHARMACY_URL = 'http://swd-pharapp-01:7200/api/';
const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
@@ -292,7 +292,7 @@ const GET_PATIENT_HEALTH_STATS =
const CHANNEL = 3;
const GENERAL_ID = 'Cs2020@2016\$2958';
const IP_ADDRESS = '10.20.10.20';
-const VERSION_ID = 6.1;
+const VERSION_ID = 8.8;
const SETUP_ID = '91877';
const LANGUAGE = 2;
const PATIENT_OUT_SA = 0;
@@ -435,6 +435,11 @@ const GET_ALL_CITIES = 'services/Lists.svc/rest/GetAllCities';
const CREATE_E_REFERRAL = "Services/Patients.svc/REST/CreateEReferral";
const GET_E_REFERRALS = "Services/Patients.svc/REST/GetEReferrals";
+// Encillary Orders
+
+const GET_ANCILLARY_ORDERS =
+ 'Services/Doctors.svc/REST/GetOnlineAncillaryOrderList';
+
//Pharmacy wishlist
// const GET_WISHLIST = "http://swd-pharapp-01:7200/api/shopping_cart_items/";
@@ -478,6 +483,7 @@ const TRANSFER_YAHALA_LOYALITY_POINTS =
const LAKUM_GET_USER_TERMS_AND_CONDITIONS =
"Services/ERP.svc/REST/GetUserTermsAndConditionsForEPharmcy";
const PRESCRIPTION = 'Services/Patients.svc/REST/GetPrescriptionApptList';
+const GET_RECOMMENDED_PRODUCT = 'alsoProduct/';
// Home Health Care
const HHC_GET_ALL_SERVICES =
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 2042d265..afcce431 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -1651,10 +1651,8 @@ const Map localizedValues = {
"calculate": {"en": "calculate", "ar": "حساب"},
"enterReadingValue": {"en": "Enter the reading value", "ar": "ادخل القيمة"},
"result": {"en": "Result", "ar": "النتيجة"},
- "bloodSugarConversion": {
- "en": "Blood Sugar Conversion",
- "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.",
@@ -1956,4 +1954,6 @@ const Map localizedValues = {
},
"order-overview": {"en": "Order Overview", "ar": "ملخص الطلب"},
"shipping-address": {"en": "Delivery Address", "ar": "عنوان التوصيل"},
+ "ancillary-orders": {"en": "Ancillary Orders", "ar": "الأوامر التبعية"},
+
};
diff --git a/lib/core/model/pharmacies/Customer.dart b/lib/core/model/pharmacies/Customer.dart
index 0462c0c2..9042930e 100644
--- a/lib/core/model/pharmacies/Customer.dart
+++ b/lib/core/model/pharmacies/Customer.dart
@@ -107,7 +107,12 @@ class Customer {
lastLoginDateUtc = json['last_login_date_utc'];
lastActivityDateUtc = json['last_activity_date_utc'];
registeredInStoreId = json['registered_in_store_id'];
- roleIds = json['role_ids'].cast();
+ if (json['role_ids'] != null) {
+ roleIds = new List();
+ json['role_ids'].forEach((v) {
+ roleIds.add(v);
+ });
+ }
}
Map toJson() {
diff --git a/lib/core/model/pharmacies/Reviews.dart b/lib/core/model/pharmacies/Reviews.dart
index f924dce3..2c767cdd 100644
--- a/lib/core/model/pharmacies/Reviews.dart
+++ b/lib/core/model/pharmacies/Reviews.dart
@@ -10,13 +10,13 @@ class Reviews {
bool isApproved;
String title;
String reviewText;
- Null replyText;
+ String replyText;
int rating;
int helpfulYesTotal;
int helpfulNoTotal;
String createdOnUtc;
Customer customer;
- Null product;
+ //Null product;
Reviews(
{this.id,
@@ -34,7 +34,8 @@ class Reviews {
this.helpfulNoTotal,
this.createdOnUtc,
this.customer,
- this.product});
+ // this.product
+ });
Reviews.fromJson(Map json) {
id = json['id'];
@@ -54,7 +55,7 @@ class Reviews {
customer = json['customer'] != null
? new Customer.fromJson(json['customer'])
: null;
- product = json['product'];
+ // product = json['product'];
}
Map toJson() {
@@ -76,7 +77,7 @@ class Reviews {
if (this.customer != null) {
data['customer'] = this.customer.toJson();
}
- data['product'] = this.product;
+ // data['product'] = this.product;
return data;
}
}
\ No newline at end of file
diff --git a/lib/core/model/pharmacies/order_model.dart b/lib/core/model/pharmacies/order_model.dart
index 42fc824d..92f4a729 100644
--- a/lib/core/model/pharmacies/order_model.dart
+++ b/lib/core/model/pharmacies/order_model.dart
@@ -312,7 +312,7 @@ class IngAddress {
DateTime createdOnUtc;
dynamic province;
String latLong;
-
+
LatLng getLocation(){
if(latLong.contains(',')){
var parts = latLong.trim().split(',');
@@ -477,10 +477,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;
@@ -489,10 +489,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;
@@ -578,6 +578,7 @@ final customerTaxDisplayTypeValues = EnumValues({
"ExcludingTax": CustomerTaxDisplayType.EXCLUDING_TAX
});
+
class OrderItem {
OrderItem({
this.quantity,
@@ -868,9 +869,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;
@@ -1147,14 +1148,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(
@@ -1236,7 +1237,7 @@ class ReviewCustomer {
dynamic isOutSa;
dynamic patientType;
dynamic gender;
- DateTime birthDate;
+ dynamic birthDate;
dynamic phone;
dynamic countryCode;
dynamic yahalaAccountno;
@@ -1245,7 +1246,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
new file mode 100644
index 00000000..e1e88cd8
--- /dev/null
+++ b/lib/core/model/pharmacies/recommendedProduct_model.dart
@@ -0,0 +1,486 @@
+class RecommendedProductModel {
+ List products;
+
+ RecommendedProductModel({this.products});
+
+ RecommendedProductModel.fromJson(Map json) {
+ if (json['products'] != null) {
+ products = new List();
+ json['products'].forEach((v) {
+ products.add(new Products.fromJson(v));
+ });
+ }
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ if (this.products != null) {
+ data['products'] = this.products.map((v) => v.toJson()).toList();
+ }
+ return data;
+ }
+}
+
+class Products {
+ String id;
+ bool visibleIndividually;
+ String name;
+ String namen;
+ String shortDescription;
+ String shortDescriptionn;
+ String fullDescription;
+ String fullDescriptionn;
+ bool markasNew;
+ bool showOnHomePage;
+ dynamic metaKeywords;
+ dynamic metaDescription;
+ dynamic metaTitle;
+ bool allowCustomerReviews;
+ dynamic approvedRatingSum;
+ dynamic notApprovedRatingSum;
+ dynamic approvedTotalReviews;
+ dynamic notApprovedTotalReviews;
+ String sku;
+ bool isRx;
+ bool prescriptionRequired;
+ dynamic rxMessage;
+ dynamic rxMessagen;
+ dynamic manufacturerPartNumber;
+ dynamic gtin;
+ bool isGiftCard;
+ bool requireOtherProducts;
+ bool automaticallyAddRequiredProducts;
+ bool isDownload;
+ bool unlimitedDownloads;
+ dynamic maxNumberOfDownloads;
+ dynamic downloadExpirationDays;
+ bool hasSampleDownload;
+ bool hasUserAgreement;
+ bool isRecurring;
+ dynamic recurringCycleLength;
+ dynamic recurringTotalCycles;
+ bool isRental;
+ dynamic rentalPriceLength;
+ bool isShipEnabled;
+ bool isFreeShipping;
+ bool shipSeparately;
+ dynamic additionalShippingCharge;
+ bool isTaxExempt;
+ bool isTelecommunicationsOrBroadcastingOrElectronicServices;
+ bool useMultipleWarehouses;
+ dynamic manageInventoryMethodId;
+ dynamic stockQuantity;
+ String stockAvailability;
+ String stockAvailabilityn;
+ bool displayStockAvailability;
+ bool displayStockQuantity;
+ dynamic minStockQuantity;
+ dynamic notifyAdminForQuantityBelow;
+ bool allowBackInStockSubscriptions;
+ dynamic orderMinimumQuantity;
+ dynamic orderMaximumQuantity;
+ dynamic allowedQuantities;
+ bool allowAddingOnlyExistingAttributeCombinations;
+ bool disableBuyButton;
+ bool disableWishlistButton;
+ bool availableForPreOrder;
+ dynamic preOrderAvailabilityStartDateTimeUtc;
+ bool callForPrice;
+ dynamic price;
+ dynamic oldPrice;
+ dynamic productCost;
+ dynamic specialPrice;
+ dynamic specialPriceStartDateTimeUtc;
+ dynamic specialPriceEndDateTimeUtc;
+ bool customerEntersPrice;
+ dynamic minimumCustomerEnteredPrice;
+ dynamic maximumCustomerEnteredPrice;
+ bool basepriceEnabled;
+ dynamic basepriceAmount;
+ dynamic basepriceBaseAmount;
+ bool hasTierPrices;
+ bool hasDiscountsApplied;
+ dynamic discountName;
+ dynamic discountNamen;
+ dynamic discountDescription;
+ dynamic discountDescriptionn;
+ dynamic discountPercentage;
+ String currency;
+ String currencyn;
+ double weight;
+ dynamic length;
+ dynamic width;
+ dynamic height;
+ dynamic availableStartDateTimeUtc;
+ dynamic availableEndDateTimeUtc;
+ dynamic displayOrder;
+ bool published;
+ bool deleted;
+ String createdOnUtc;
+ String updatedOnUtc;
+ String productType;
+ dynamic parentGroupedProductId;
+ dynamic vendorId;
+ String seName;
+ List images;
+
+ 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'];
+ shortDescription = json['short_description'];
+ shortDescriptionn = json['short_descriptionn'];
+ fullDescription = json['full_description'];
+ fullDescriptionn = json['full_descriptionn'];
+ markasNew = json['markas_new'];
+ showOnHomePage = json['show_on_home_page'];
+ metaKeywords = json['meta_keywords'];
+ metaDescription = json['meta_description'];
+ metaTitle = json['meta_title'];
+ allowCustomerReviews = json['allow_customer_reviews'];
+ approvedRatingSum = json['approved_rating_sum'];
+ notApprovedRatingSum = json['not_approved_rating_sum'];
+ approvedTotalReviews = json['approved_total_reviews'];
+ notApprovedTotalReviews = json['not_approved_total_reviews'];
+ sku = json['sku'];
+ isRx = json['is_rx'];
+ prescriptionRequired = json['prescription_required'];
+ rxMessage = json['rx_message'];
+ rxMessagen = json['rx_messagen'];
+ manufacturerPartNumber = json['manufacturer_part_number'];
+ gtin = json['gtin'];
+ isGiftCard = json['is_gift_card'];
+ requireOtherProducts = json['require_other_products'];
+ automaticallyAddRequiredProducts =
+ json['automatically_add_required_products'];
+ isDownload = json['is_download'];
+ unlimitedDownloads = json['unlimited_downloads'];
+ maxNumberOfDownloads = json['max_number_of_downloads'];
+ downloadExpirationDays = json['download_expiration_days'];
+ hasSampleDownload = json['has_sample_download'];
+ hasUserAgreement = json['has_user_agreement'];
+ isRecurring = json['is_recurring'];
+ recurringCycleLength = json['recurring_cycle_length'];
+ recurringTotalCycles = json['recurring_total_cycles'];
+ isRental = json['is_rental'];
+ rentalPriceLength = json['rental_price_length'];
+ isShipEnabled = json['is_ship_enabled'];
+ isFreeShipping = json['is_free_shipping'];
+ shipSeparately = json['ship_separately'];
+ additionalShippingCharge = json['additional_shipping_charge'];
+ isTaxExempt = json['is_tax_exempt'];
+ isTelecommunicationsOrBroadcastingOrElectronicServices =
+ json['is_telecommunications_or_broadcasting_or_electronic_services'];
+ useMultipleWarehouses = json['use_multiple_warehouses'];
+ manageInventoryMethodId = json['manage_inventory_method_id'];
+ stockQuantity = json['stock_quantity'];
+ stockAvailability = json['stock_availability'];
+ stockAvailabilityn = json['stock_availabilityn'];
+ displayStockAvailability = json['display_stock_availability'];
+ displayStockQuantity = json['display_stock_quantity'];
+ minStockQuantity = json['min_stock_quantity'];
+ notifyAdminForQuantityBelow = json['notify_admin_for_quantity_below'];
+ allowBackInStockSubscriptions = json['allow_back_in_stock_subscriptions'];
+ orderMinimumQuantity = json['order_minimum_quantity'];
+ orderMaximumQuantity = json['order_maximum_quantity'];
+ allowedQuantities = json['allowed_quantities'];
+ allowAddingOnlyExistingAttributeCombinations =
+ 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'];
+ callForPrice = json['call_for_price'];
+ price = json['price'];
+ oldPrice = json['old_price'];
+ productCost = json['product_cost'];
+ specialPrice = json['special_price'];
+ specialPriceStartDateTimeUtc = json['special_price_start_date_time_utc'];
+ specialPriceEndDateTimeUtc = json['special_price_end_date_time_utc'];
+ customerEntersPrice = json['customer_enters_price'];
+ minimumCustomerEnteredPrice = json['minimum_customer_entered_price'];
+ maximumCustomerEnteredPrice = json['maximum_customer_entered_price'];
+ basepriceEnabled = json['baseprice_enabled'];
+ basepriceAmount = json['baseprice_amount'];
+ basepriceBaseAmount = json['baseprice_base_amount'];
+ hasTierPrices = json['has_tier_prices'];
+ hasDiscountsApplied = json['has_discounts_applied'];
+ discountName = json['discount_name'];
+ discountNamen = json['discount_namen'];
+ discountDescription = json['discount_description'];
+ discountDescriptionn = json['discount_Descriptionn'];
+ discountPercentage = json['discount_percentage'];
+ currency = json['currency'];
+ currencyn = json['currencyn'];
+ weight = json['weight'];
+ length = json['length'];
+ width = json['width'];
+ height = json['height'];
+ availableStartDateTimeUtc = json['available_start_date_time_utc'];
+ availableEndDateTimeUtc = json['available_end_date_time_utc'];
+ displayOrder = json['display_order'];
+ published = json['published'];
+ deleted = json['deleted'];
+ createdOnUtc = json['created_on_utc'];
+ updatedOnUtc = json['updated_on_utc'];
+ productType = json['product_type'];
+ parentGroupedProductId = json['parent_grouped_product_id'];
+ 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));
+ });
+ }
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['id'] = this.id;
+ data['visible_individually'] = this.visibleIndividually;
+ data['name'] = this.name;
+ data['namen'] = this.namen;
+ data['short_description'] = this.shortDescription;
+ data['short_descriptionn'] = this.shortDescriptionn;
+ data['full_description'] = this.fullDescription;
+ data['full_descriptionn'] = this.fullDescriptionn;
+ data['markas_new'] = this.markasNew;
+ data['show_on_home_page'] = this.showOnHomePage;
+ data['meta_keywords'] = this.metaKeywords;
+ data['meta_description'] = this.metaDescription;
+ data['meta_title'] = this.metaTitle;
+ data['allow_customer_reviews'] = this.allowCustomerReviews;
+ data['approved_rating_sum'] = this.approvedRatingSum;
+ data['not_approved_rating_sum'] = this.notApprovedRatingSum;
+ data['approved_total_reviews'] = this.approvedTotalReviews;
+ data['not_approved_total_reviews'] = this.notApprovedTotalReviews;
+ data['sku'] = this.sku;
+ data['is_rx'] = this.isRx;
+ data['prescription_required'] = this.prescriptionRequired;
+ data['rx_message'] = this.rxMessage;
+ data['rx_messagen'] = this.rxMessagen;
+ data['manufacturer_part_number'] = this.manufacturerPartNumber;
+ data['gtin'] = this.gtin;
+ data['is_gift_card'] = this.isGiftCard;
+ data['require_other_products'] = this.requireOtherProducts;
+ data['automatically_add_required_products'] =
+ this.automaticallyAddRequiredProducts;
+ data['is_download'] = this.isDownload;
+ data['unlimited_downloads'] = this.unlimitedDownloads;
+ data['max_number_of_downloads'] = this.maxNumberOfDownloads;
+ data['download_expiration_days'] = this.downloadExpirationDays;
+ data['has_sample_download'] = this.hasSampleDownload;
+ data['has_user_agreement'] = this.hasUserAgreement;
+ data['is_recurring'] = this.isRecurring;
+ data['recurring_cycle_length'] = this.recurringCycleLength;
+ data['recurring_total_cycles'] = this.recurringTotalCycles;
+ data['is_rental'] = this.isRental;
+ data['rental_price_length'] = this.rentalPriceLength;
+ data['is_ship_enabled'] = this.isShipEnabled;
+ data['is_free_shipping'] = this.isFreeShipping;
+ data['ship_separately'] = this.shipSeparately;
+ data['additional_shipping_charge'] = this.additionalShippingCharge;
+ data['is_tax_exempt'] = this.isTaxExempt;
+ data['is_telecommunications_or_broadcasting_or_electronic_services'] =
+ this.isTelecommunicationsOrBroadcastingOrElectronicServices;
+ data['use_multiple_warehouses'] = this.useMultipleWarehouses;
+ data['manage_inventory_method_id'] = this.manageInventoryMethodId;
+ data['stock_quantity'] = this.stockQuantity;
+ data['stock_availability'] = this.stockAvailability;
+ data['stock_availabilityn'] = this.stockAvailabilityn;
+ data['display_stock_availability'] = this.displayStockAvailability;
+ data['display_stock_quantity'] = this.displayStockQuantity;
+ data['min_stock_quantity'] = this.minStockQuantity;
+ data['notify_admin_for_quantity_below'] = this.notifyAdminForQuantityBelow;
+ data['allow_back_in_stock_subscriptions'] =
+ this.allowBackInStockSubscriptions;
+ data['order_minimum_quantity'] = this.orderMinimumQuantity;
+ data['order_maximum_quantity'] = this.orderMaximumQuantity;
+ data['allowed_quantities'] = this.allowedQuantities;
+ data['allow_adding_only_existing_attribute_combinations'] =
+ this.allowAddingOnlyExistingAttributeCombinations;
+ data['disable_buy_button'] = this.disableBuyButton;
+ data['disable_wishlist_button'] = this.disableWishlistButton;
+ data['available_for_pre_order'] = this.availableForPreOrder;
+ data['pre_order_availability_start_date_time_utc'] =
+ this.preOrderAvailabilityStartDateTimeUtc;
+ data['call_for_price'] = this.callForPrice;
+ data['price'] = this.price;
+ data['old_price'] = this.oldPrice;
+ data['product_cost'] = this.productCost;
+ data['special_price'] = this.specialPrice;
+ data['special_price_start_date_time_utc'] =
+ this.specialPriceStartDateTimeUtc;
+ data['special_price_end_date_time_utc'] = this.specialPriceEndDateTimeUtc;
+ data['customer_enters_price'] = this.customerEntersPrice;
+ data['minimum_customer_entered_price'] = this.minimumCustomerEnteredPrice;
+ data['maximum_customer_entered_price'] = this.maximumCustomerEnteredPrice;
+ data['baseprice_enabled'] = this.basepriceEnabled;
+ data['baseprice_amount'] = this.basepriceAmount;
+ data['baseprice_base_amount'] = this.basepriceBaseAmount;
+ data['has_tier_prices'] = this.hasTierPrices;
+ data['has_discounts_applied'] = this.hasDiscountsApplied;
+ data['discount_name'] = this.discountName;
+ data['discount_namen'] = this.discountNamen;
+ data['discount_description'] = this.discountDescription;
+ data['discount_Descriptionn'] = this.discountDescriptionn;
+ data['discount_percentage'] = this.discountPercentage;
+ data['currency'] = this.currency;
+ data['currencyn'] = this.currencyn;
+ data['weight'] = this.weight;
+ data['length'] = this.length;
+ data['width'] = this.width;
+ data['height'] = this.height;
+ data['available_start_date_time_utc'] = this.availableStartDateTimeUtc;
+ data['available_end_date_time_utc'] = this.availableEndDateTimeUtc;
+ data['display_order'] = this.displayOrder;
+ data['published'] = this.published;
+ data['deleted'] = this.deleted;
+ data['created_on_utc'] = this.createdOnUtc;
+ data['updated_on_utc'] = this.updatedOnUtc;
+ data['product_type'] = this.productType;
+ data['parent_grouped_product_id'] = this.parentGroupedProductId;
+ data['vendor_id'] = this.vendorId;
+ data['se_name'] = this.seName;
+ if (this.images != null) {
+ data['images'] = this.images.map((v) => v.toJson()).toList();
+ }
+
+ return data;
+ }
+}
+
+class Images {
+ int id;
+ int position;
+ String src;
+ String thumb;
+ String attachment;
+
+ Images({this.id, this.position, this.src, this.thumb, this.attachment});
+
+ Images.fromJson(Map json) {
+ id = json['id'];
+ position = json['position'];
+ src = json['src'];
+ thumb = json['thumb'];
+ attachment = json['attachment'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['id'] = this.id;
+ data['position'] = this.position;
+ data['src'] = this.src;
+ data['thumb'] = this.thumb;
+ data['attachment'] = this.attachment;
+ return data;
+ }
+}
diff --git a/lib/core/service/ancillary_orders_service.dart b/lib/core/service/ancillary_orders_service.dart
new file mode 100644
index 00000000..5adf5305
--- /dev/null
+++ b/lib/core/service/ancillary_orders_service.dart
@@ -0,0 +1,24 @@
+import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/core/service/base_service.dart';
+import 'package:diplomaticquarterapp/models/anicllary-orders/ancillary_order_list_model.dart';
+
+class AncillaryOrdersService extends BaseService {
+ List _ancillaryLists = List();
+ List get ancillaryLists => _ancillaryLists;
+
+ Future getOrders() async {
+ Map body = Map();
+
+ hasError = false;
+
+ await baseAppClient.post(GET_ANCILLARY_ORDERS,
+ onSuccess: (dynamic response, int statusCode) {
+ response['AncillaryOrderList'].forEach((item) {
+ ancillaryLists.add(AncillaryOrdersListModel.fromJson(item));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+}
diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart
index ee93de95..abfa7594 100644
--- a/lib/core/service/client/base_app_client.dart
+++ b/lib/core/service/client/base_app_client.dart
@@ -385,4 +385,175 @@ class BaseAppClient {
return params;
}
+
+
+ pharmacyPost(String endPoint,
+ {Map body,
+ Function(dynamic response, int statusCode) onSuccess,
+ Function(String error, int statusCode) onFailure,
+ bool isAllowAny = false,
+ bool isExternal = false}) async {
+ String url;
+ if (isExternal) {
+ url = endPoint;
+ } else {
+ url = BASE_PHARMACY_URL + endPoint;
+ }
+ try {
+ //Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
+ if (!isExternal) {
+ String token = await sharedPref.getString(TOKEN);
+ var languageID =
+ await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar');
+ var user = await sharedPref.getObject(USER_PROFILE);
+ if (body.containsKey('SetupID')) {
+ body['SetupID'] = body.containsKey('SetupID')
+ ? body['SetupID'] != null
+ ? body['SetupID']
+ : SETUP_ID
+ : SETUP_ID;
+ }
+
+ body['VersionID'] = VERSION_ID;
+ body['Channel'] = CHANNEL;
+ body['LanguageID'] = languageID == 'ar' ? 1 : 2;
+
+ body['IPAdress'] = IP_ADDRESS;
+ body['generalid'] = GENERAL_ID;
+ body['PatientOutSA'] = body.containsKey('PatientOutSA')
+ ? body['PatientOutSA'] != null
+ ? body['PatientOutSA']
+ : PATIENT_OUT_SA
+ : PATIENT_OUT_SA;
+
+ if (body.containsKey('isDentalAllowedBackend')) {
+ body['isDentalAllowedBackend'] =
+ body.containsKey('isDentalAllowedBackend')
+ ? body['isDentalAllowedBackend'] != null
+ ? body['isDentalAllowedBackend']
+ : IS_DENTAL_ALLOWED_BACKEND
+ : IS_DENTAL_ALLOWED_BACKEND;
+ }
+
+ body['DeviceTypeID'] = DeviceTypeID;
+
+ if (!body.containsKey('IsPublicRequest')) {
+ body['PatientType'] = body.containsKey('PatientType')
+ ? body['PatientType'] != null
+ ? body['PatientType']
+ : user['PatientType'] != null
+ ? user['PatientType']
+ : PATIENT_TYPE
+ : PATIENT_TYPE;
+
+ body['PatientTypeID'] = body.containsKey('PatientTypeID')
+ ? body['PatientTypeID'] != null
+ ? body['PatientTypeID']
+ : user['PatientType'] != null
+ ? user['PatientType']
+ : PATIENT_TYPE_ID
+ : PATIENT_TYPE_ID;
+ if (user != null) {
+ body['TokenID'] = token;
+ body['PatientID'] = body['PatientID'] != null
+ ? body['PatientID']
+ : user['PatientID'];
+ body['PatientOutSA'] = user['OutSA'];
+ body['SessionID'] = SESSION_ID; //getSessionId(token);
+ }
+ }
+ }
+
+ print("URL : $url");
+ print("Body : ${json.encode(body)}");
+ var ss = json.encode(body);
+
+ if (await Utils.checkConnection()) {
+ final response = await http.post(url.trim(),
+ body: json.encode(body),
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json',
+ 'Statictoken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9',
+ });
+ final int statusCode = response.statusCode;
+ print("statusCode :$statusCode");
+ if (statusCode < 200 || statusCode >= 400 || json == null) {
+ onFailure('Error While Fetching data', statusCode);
+ } else {
+ var parsed = json.decode(response.body.toString());
+ if (parsed['Response_Message'] != null) {
+ onSuccess(parsed, statusCode);
+ } else {
+ if (parsed['ErrorType'] == 4) {
+ navigateToAppUpdate(
+ AppGlobal.context, parsed['ErrorEndUserMessage']);
+ }
+ if (isAllowAny) {
+ onSuccess(parsed, statusCode);
+ } else if (parsed['IsAuthenticated'] == null) {
+ if (parsed['isSMSSent'] == true) {
+ onSuccess(parsed, statusCode);
+ } else if (parsed['MessageStatus'] == 1) {
+ onSuccess(parsed, statusCode);
+ } else if (parsed['Result'] == 'OK') {
+ onSuccess(parsed, statusCode);
+ } else {
+ if (parsed != null) {
+ onSuccess(parsed, statusCode);
+ } else {
+ onFailure(
+ parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'],
+ statusCode);
+ logout();
+ }
+ }
+ } else if (parsed['MessageStatus'] == 1 ||
+ parsed['SMSLoginRequired'] == true) {
+ onSuccess(parsed, statusCode);
+ } else if (parsed['MessageStatus'] == 2 &&
+ parsed['IsAuthenticated']) {
+ if (parsed['message'] == null &&
+ parsed['ErrorEndUserMessage'] == null) {
+ if(parsed['ErrorSearchMsg'] == null ){
+ onFailure("Server Error found with no available message",
+ statusCode);
+ }else {
+ onFailure(parsed['ErrorSearchMsg'],
+ statusCode);
+ }
+ } else {
+ onFailure(
+ parsed['message'] ??
+ parsed['ErrorEndUserMessage'] ??
+ parsed['ErrorMessage'],
+ statusCode);
+ }
+ } else if (!parsed['IsAuthenticated']) {
+ await logout();
+
+ //helpers.showErrorToast('Your session expired Please login agian');
+ } else {
+ if (parsed['SameClinicApptList'] != null) {
+ onSuccess(parsed, statusCode);
+ } else {
+ if (parsed['message'] != null) {
+ onFailure(parsed['message'] ?? parsed['message'], statusCode);
+ } else {
+ onFailure(
+ parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'],
+ statusCode);
+ }
+ }
+ }
+ }
+ }
+ } else {
+ onFailure('Please Check The Internet Connection', -1);
+ }
+ } catch (e) {
+ print(e);
+ onFailure(e.toString(), -1);
+ }
+ }
}
diff --git a/lib/core/service/parmacyModule/parmacy_module_service.dart b/lib/core/service/parmacyModule/parmacy_module_service.dart
index 7fe5ca54..9d2b2f6b 100644
--- a/lib/core/service/parmacyModule/parmacy_module_service.dart
+++ b/lib/core/service/parmacyModule/parmacy_module_service.dart
@@ -20,15 +20,19 @@ class PharmacyModuleService extends BaseService {
List lastVisitedProducts = List();
Future makeVerifyCustomer(dynamic data) async {
- Map queryParams = {'FileNumber': data['PatientID'].toString()};
+ Map 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();
+ await createUser();
}
}, onFailure: (String error, int statusCode) {
hasError = true;
@@ -55,7 +59,8 @@ class PharmacyModuleService extends BaseService {
};
hasError = false;
try {
- await baseAppClient.get(PHARMACY_CREATE_CUSTOMER, onSuccess: (dynamic response, int statusCode) async{
+ await baseAppClient.get(PHARMACY_CREATE_CUSTOMER,
+ onSuccess: (dynamic response, int statusCode) async {
if (!response['IsRegistered']) {}
await generatePharmacyToken();
}, onFailure: (String error, int statusCode) {
@@ -68,16 +73,18 @@ class PharmacyModuleService extends BaseService {
}
Future generatePharmacyToken() async {
- await getUser();
+ await getUser();
Map queryParams = {
- 'Filenumber':user.patientID.toString(),
- 'MobileNumber':Utils.getPhoneNumberWithoutZero(user.mobileNumber),
+ 'Filenumber': user.patientID.toString(),
+ 'MobileNumber': Utils.getPhoneNumberWithoutZero(user.mobileNumber),
};
hasError = false;
try {
- await baseAppClient.get(PHARMACY_AUTORZIE_CUSTOMER, onSuccess: (dynamic response, int statusCode) async{
+ await baseAppClient.get(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;
@@ -91,7 +98,8 @@ 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));
@@ -108,7 +116,8 @@ class PharmacyModuleService extends BaseService {
Future getTopManufacturerList() async {
Map 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);
@@ -131,7 +140,8 @@ 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));
@@ -147,10 +157,14 @@ 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);
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));
diff --git a/lib/core/service/parmacyModule/prescription_service.dart b/lib/core/service/parmacyModule/prescription_service.dart
index 33c2cfd7..c2312890 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,38 +14,42 @@ class PrescriptionService extends BaseService {
List _prescriptionsList = List();
List get prescriptionsList => _prescriptionsList;
-
- Future getPrescription() async {
- hasError = false;
- url = PRESCRIPTION;
- print("Print PRESCRIPTION url" + url);
- await baseAppClient.post(url,
- onSuccess: (dynamic response, int statusCode) {
- _prescriptionsList.clear();
- response['PatientPrescriptionList'].forEach((item) {
- _prescriptionsList.add(Prescriptions.fromJson(item));
- });
- print(_prescriptionsList.length);
- print(response);
- }, onFailure: (String error, int statusCode) {
- hasError = true;
- super.error = error;
- });
- }
// Future getPrescription() async {
// hasError = false;
-// Map body = Map();
-// body['isDentalAllowedBackend'] = false;
-// await baseAppClient.post(PRESCRIPTION,
+// url = PRESCRIPTION;
+// print("Print PRESCRIPTION url" + url);
+// await baseAppClient.get(url,
// onSuccess: (dynamic response, int statusCode) {
-// prescriptionsList.clear();
-// response['PatientPrescriptionList'].forEach((prescriptions) {
-// prescriptionsList.add(Prescriptions.fromJson(prescriptions));
+// _prescriptionsList.clear();
+// response['PatientPrescriptionList'].forEach((item) {
+// _prescriptionsList.add(Prescriptions.fromJson(item));
// });
+// print(_prescriptionsList.length);
+// print(response);
// }, onFailure: (String error, int statusCode) {
// hasError = true;
// super.error = error;
-// }, body: body);
+// });
// }
-
-}
\ No newline at end of file
+ Future getPrescription() async {
+ url = PRESCRIPTION;
+ print("Print PRESCRIPTION url" + url);
+ hasError = false;
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ print("Print PRESCRIPTION url" + url);
+ await baseAppClient.post(url,
+ onSuccess: (dynamic response, int statusCode) {
+ _prescriptionsList.clear();
+ response['PatientPrescriptionList'].forEach((prescriptions) {
+ _prescriptionsList.add(Prescriptions.fromJson(prescriptions));
+ });
+ print(_prescriptionsList.length);
+ print("response is -------------"+response);
+ print(response);
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+}
diff --git a/lib/core/viewModels/AlHabibMedicalService/health-calculator/Bariatrics-viewmodel.dart b/lib/core/viewModels/AlHabibMedicalService/health-calculator/Bariatrics-viewmodel.dart
index 9348c116..5853cc8f 100644
--- a/lib/core/viewModels/AlHabibMedicalService/health-calculator/Bariatrics-viewmodel.dart
+++ b/lib/core/viewModels/AlHabibMedicalService/health-calculator/Bariatrics-viewmodel.dart
@@ -1,6 +1,7 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HealthCalculator/ClinicCategory.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HealthCalculator/DiseasesByClinic.dart';
+import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HealthCalculator/ClinicCategory.dart';
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/health-calculator/bariatrics-service.dart';
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
diff --git a/lib/core/viewModels/ancillary_orders_view_model.dart b/lib/core/viewModels/ancillary_orders_view_model.dart
new file mode 100644
index 00000000..2d92a402
--- /dev/null
+++ b/lib/core/viewModels/ancillary_orders_view_model.dart
@@ -0,0 +1,22 @@
+import 'package:diplomaticquarterapp/core/service/ancillary_orders_service.dart';
+
+import 'base_view_model.dart';
+import '../../locator.dart';
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
+
+class AnciallryOrdersViewModel extends BaseViewModel {
+ bool hasError = false;
+
+ AncillaryOrdersService _ancillaryService = locator();
+
+ Future getOrders() async {
+ hasError = false;
+ setState(ViewState.Busy);
+ await _ancillaryService.getOrders();
+ if (_ancillaryService.hasError) {
+ error = _ancillaryService.error;
+ setState(ViewState.ErrorLocal);
+ } else
+ setState(ViewState.Idle);
+ }
+}
diff --git a/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart b/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart
index 303dab9e..f38237e3 100644
--- a/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart
+++ b/lib/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart
@@ -4,11 +4,14 @@ import 'package:diplomaticquarterapp/core/model/pharmacies/Manufacturer.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyImageObject.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Prescriptions.dart';
+import 'package:diplomaticquarterapp/core/model/pharmacies/recommendedProduct_model.dart';
+import 'package:diplomaticquarterapp/core/service/medical/prescriptions_service.dart';
//import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart';
-//import 'package:diplomaticquarterapp/core/service/medical/prescriptions_service.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/prescription_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
+import 'package:diplomaticquarterapp/services/pharmacy_services/recommendedProduct_service.dart';
+
import '../../../locator.dart';
@@ -17,6 +20,9 @@ class PharmacyModuleViewModel extends BaseViewModel {
PrescriptionService _prescriptionService = locator();
+
+ RecommendedProductService _recommendedProductService = locator();
+
List get bannerList => _pharmacyService.bannerItems;
List get manufacturerList => _pharmacyService.manufacturerList;
@@ -27,9 +33,14 @@ class PharmacyModuleViewModel extends BaseViewModel {
List get lastVisitedProducts =>
_pharmacyService.lastVisitedProducts;
+
+ List get recommendedProductList =>
+ _recommendedProductService.recommendedList;
+
List get prescriptionsList =>
_prescriptionService.prescriptionsList;
+ bool hasError = false;
// List get pharmacyPrescriptionsList => PharmacyProduct.pharmacyPrescriptionsList ;
Future getPharmacyHomeData() async {
@@ -125,15 +136,17 @@ class PharmacyModuleViewModel extends BaseViewModel {
}
/////////////RecommendedProducts
-// _getRecommendedProducts() async {
-// await _pharmacyService.getRecommendedProducts();
-// if (_pharmacyService.hasError) {
-// error = _pharmacyService.error;
-// setState(ViewState.Error);
-// } else {
-// setState(ViewState.Idle);
-// }
-// }
+ getRecommendedProducts(productId) async {
+ hasError = false;
+ setState(ViewState.Busy);
+ await _recommendedProductService.getRecommendedProducts(productId);
+ if (_recommendedProductService.hasError) {
+ error = _recommendedProductService.error;
+ setState(ViewState.Error);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
Future checkUserIsActivated() async {
if (authenticatedUserObject.isLogin) {
@@ -161,4 +174,19 @@ class PharmacyModuleViewModel extends BaseViewModel {
}
}
+
+ ///////////////////////or
+// getPrescriptions() async {
+// setState(ViewState.Busy);
+// await _prescriptionsService.getPrescriptions();
+// if (_prescriptionsService.hasError) {
+// error = _prescriptionsService.error;
+// setState(ViewState.Error);
+// } else {
+// _filterList();
+// await _getPrescriptionsOrders();
+// setState(ViewState.Idle);
+// }
+// }
+
}
diff --git a/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart b/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart
index 339afa95..c7ac0a04 100644
--- a/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart
+++ b/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart
@@ -24,7 +24,6 @@ class ProductDetailViewModel extends BaseViewModel{
Future getProductReviewsData(productID) async {
- print('ENAD REview');
hasError = false;
setState(ViewState.Busy);
await _productDetailService.getProductReviews(productID);
@@ -36,7 +35,6 @@ class ProductDetailViewModel extends BaseViewModel{
}
Future getProductLocationData() async {
- print('ENAD in model view');
hasError = false;
setState(ViewState.Busy);
await _productDetailService.getProductAvailabiltyDetail();
diff --git a/lib/locator.dart b/lib/locator.dart
index 21bc111a..7803b6a9 100644
--- a/lib/locator.dart
+++ b/lib/locator.dart
@@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_v
import 'package:diplomaticquarterapp/core/viewModels/child_vaccines/user_information_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
+import 'package:diplomaticquarterapp/services/pharmacy_services/recommendedProduct_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/weather/weather_view_model.dart';
// import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/PharmacyAddressesViewModel.dart';
// import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
@@ -217,6 +218,8 @@ void setupLocator() {
locator.registerLazySingleton(() => TermsConditionService());
locator.registerLazySingleton(() => CancelOrderService());
locator.registerLazySingleton(() => PrescriptionService());
+ locator.registerLazySingleton(() => RecommendedProductService());
+
locator.registerLazySingleton(() => PrivilegeService());
locator.registerLazySingleton(() => WeatherService());
diff --git a/lib/models/anicllary-orders/ancillary_order_list_model.dart b/lib/models/anicllary-orders/ancillary_order_list_model.dart
new file mode 100644
index 00000000..76ef3a7d
--- /dev/null
+++ b/lib/models/anicllary-orders/ancillary_order_list_model.dart
@@ -0,0 +1,105 @@
+class AncillaryOrdersListModel {
+ List ancillaryOrderList;
+ Null errCode;
+ String message;
+ int patientID;
+ String patientName;
+ int patientType;
+ int projectID;
+ String projectName;
+ String setupID;
+ int statusCode;
+
+ AncillaryOrdersListModel(
+ {this.ancillaryOrderList,
+ this.errCode,
+ this.message,
+ this.patientID,
+ this.patientName,
+ this.patientType,
+ this.projectID,
+ this.projectName,
+ this.setupID,
+ this.statusCode});
+
+ AncillaryOrdersListModel.fromJson(Map json) {
+ if (json['AncillaryOrderList'] != null) {
+ ancillaryOrderList = new List();
+ json['AncillaryOrderList'].forEach((v) {
+ ancillaryOrderList.add(new AncillaryOrderList.fromJson(v));
+ });
+ }
+ errCode = json['ErrCode'];
+ message = json['Message'];
+ patientID = json['PatientID'];
+ patientName = json['PatientName'];
+ patientType = json['PatientType'];
+ projectID = json['ProjectID'];
+ projectName = json['ProjectName'];
+ setupID = json['SetupID'];
+ statusCode = json['StatusCode'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ if (this.ancillaryOrderList != null) {
+ data['AncillaryOrderList'] =
+ this.ancillaryOrderList.map((v) => v.toJson()).toList();
+ }
+ data['ErrCode'] = this.errCode;
+ data['Message'] = this.message;
+ data['PatientID'] = this.patientID;
+ data['PatientName'] = this.patientName;
+ data['PatientType'] = this.patientType;
+ data['ProjectID'] = this.projectID;
+ data['ProjectName'] = this.projectName;
+ data['SetupID'] = this.setupID;
+ data['StatusCode'] = this.statusCode;
+ return data;
+ }
+}
+
+class AncillaryOrderList {
+ String appointmentDate;
+ int appointmentNo;
+ int clinicID;
+ String clinicName;
+ int doctorID;
+ String doctorName;
+ String orderDate;
+ int orderNo;
+
+ AncillaryOrderList(
+ {this.appointmentDate,
+ this.appointmentNo,
+ this.clinicID,
+ this.clinicName,
+ this.doctorID,
+ this.doctorName,
+ this.orderDate,
+ this.orderNo});
+
+ AncillaryOrderList.fromJson(Map json) {
+ appointmentDate = json['AppointmentDate'];
+ appointmentNo = json['AppointmentNo'];
+ clinicID = json['ClinicID'];
+ clinicName = json['ClinicName'];
+ doctorID = json['DoctorID'];
+ doctorName = json['DoctorName'];
+ orderDate = json['OrderDate'];
+ orderNo = json['OrderNo'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['AppointmentDate'] = this.appointmentDate;
+ data['AppointmentNo'] = this.appointmentNo;
+ data['ClinicID'] = this.clinicID;
+ data['ClinicName'] = this.clinicName;
+ data['DoctorID'] = this.doctorID;
+ data['DoctorName'] = this.doctorName;
+ data['OrderDate'] = this.orderDate;
+ data['OrderNo'] = this.orderNo;
+ return data;
+ }
+}
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/cmc_location_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/cmc_location_page.dart
index 4e396427..72aa40dc 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/cmc_location_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/cmc_location_page.dart
@@ -22,127 +22,135 @@ class CMCLocationPage extends StatefulWidget {
final double longitude;
final dynamic model;
- const CMCLocationPage({Key key, this.onPick, this.latitude, this.longitude, this.model})
+ const CMCLocationPage(
+ {Key key, this.onPick, this.latitude, this.longitude, this.model})
: super(key: key);
@override
- _CMCLocationPageState createState() =>
- _CMCLocationPageState();
+ _CMCLocationPageState createState() => _CMCLocationPageState();
}
-class _CMCLocationPageState
- extends State {
+class _CMCLocationPageState extends State {
double latitude = 0;
double longitude = 0;
@override
void initState() {
-
latitude = widget.latitude;
longitude = widget.longitude;
super.initState();
}
-
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView(
onModelReady: (model) {},
builder: (_, model, widget) => AppScaffold(
- isShowDecPage: false,
- isShowAppBar: true,
- baseViewModel: model,
- body: PlacePicker(
- apiKey: GOOGLE_API_KEY,
- enableMyLocationButton: true,
- automaticallyImplyAppBarLeading: false,
- autocompleteOnTrailingWhitespace: true,
- selectInitialPosition: true,
- autocompleteLanguage: projectViewModel.currentLanguage,
- enableMapTypeButton: true,
- searchForInitialValue: false,
- onPlacePicked: (PickResult result) {
- print(result.adrAddress);
-
- },
- selectedPlaceWidgetBuilder:
- (_, selectedPlace, state, isSearchBarFocused) {
- print("state: $state, isSearchBarFocused: $isSearchBarFocused");
- return isSearchBarFocused
- ? Container()
- : FloatingCard(
- bottomPosition: 0.0,
- leftPosition: 0.0,
- rightPosition: 0.0,
- width: 500,
- borderRadius: BorderRadius.circular(12.0),
- child: state == SearchingState.Searching
- ? Center(child: CircularProgressIndicator())
- : Container(
- margin: EdgeInsets.all(12),
- child: Column(
- children: [
- SecondaryButton(
- color: Colors.grey[800],
- textColor: Colors.white,
- onTap: () async {
- print(selectedPlace);
- AddNewAddressRequestModel
- addNewAddressRequestModel =
- new AddNewAddressRequestModel(
- customer: Customer(addresses: [
- Addresses(
- address1:
- selectedPlace.formattedAddress,
- address2: selectedPlace
- .formattedAddress,
- customerAttributes: "",
- city: "",
- createdOnUtc: "",
- id: 0,
- latLong: "$latitude,$longitude",
- email: "")
- ]),
- );
+ isShowDecPage: false,
+ isShowAppBar: true,
+ baseViewModel: model,
+ body: PlacePicker(
+ apiKey: GOOGLE_API_KEY,
+ enableMyLocationButton: true,
+ automaticallyImplyAppBarLeading: false,
+ autocompleteOnTrailingWhitespace: true,
+ selectInitialPosition: true,
+ autocompleteLanguage: projectViewModel.currentLanguage,
+ enableMapTypeButton: true,
+ searchForInitialValue: false,
+ onPlacePicked: (PickResult result) {
+ print(result.adrAddress);
+ },
+ selectedPlaceWidgetBuilder:
+ (_, selectedPlace, state, isSearchBarFocused) {
+ print(
+ "state: $state, isSearchBarFocused: $isSearchBarFocused");
+ return isSearchBarFocused
+ ? Container()
+ : FloatingCard(
+ bottomPosition: 0.0,
+ leftPosition: 0.0,
+ rightPosition: 0.0,
+ width: 500,
+ borderRadius: BorderRadius.circular(12.0),
+ child: state == SearchingState.Searching
+ ? Center(child: CircularProgressIndicator())
+ : Container(
+ margin: EdgeInsets.all(12),
+ child: Column(
+ children: [
+ SecondaryButton(
+ color: Colors.grey[800],
+ textColor: Colors.white,
+ onTap: () async {
+ print(selectedPlace);
+ AddNewAddressRequestModel
+ addNewAddressRequestModel =
+ new AddNewAddressRequestModel(
+ customer: Customer(addresses: [
+ Addresses(
+ address1: selectedPlace
+ .formattedAddress,
+ address2: selectedPlace
+ .formattedAddress,
+ customerAttributes: "",
+ city: "",
+ createdOnUtc: "",
+ id: 0,
+ latLong:
+ "$latitude,$longitude",
+ email: "")
+ ]),
+ );
- selectedPlace.addressComponents.forEach((e) {
- if (e.types.contains("country")) {
- addNewAddressRequestModel.customer
- .addresses[0].country = e.longName;
- }
- if (e.types.contains("postal_code")) {
- addNewAddressRequestModel.customer
- .addresses[0].zipPostalCode =
- e.longName;
- }
- if (e.types.contains("locality")) {
- addNewAddressRequestModel.customer
- .addresses[0].city =
- e.longName;
- }
- });
+ selectedPlace.addressComponents
+ .forEach((e) {
+ if (e.types.contains("country")) {
+ addNewAddressRequestModel
+ .customer
+ .addresses[0]
+ .country = e.longName;
+ }
+ if (e.types
+ .contains("postal_code")) {
+ addNewAddressRequestModel
+ .customer
+ .addresses[0]
+ .zipPostalCode = e.longName;
+ }
+ if (e.types.contains("locality")) {
+ addNewAddressRequestModel
+ .customer
+ .addresses[0]
+ .city = e.longName;
+ }
+ });
- await model.addAddressInfo(
- addNewAddressRequestModel: addNewAddressRequestModel);
- if (model.state == ViewState.ErrorLocal) {
- Utils.showErrorToast(model.error);
- } else {
- AppToast.showSuccessToast(
- message: "Address Added Successfully");
- }
- Navigator.of(context).pop();
- },
- label: TranslationBase.of(context).addNewAddress,
- ),
- ],
- ),
- ),
- );
- },
- initialPosition: LatLng(latitude, longitude),
- useCurrentLocation: false,
- ),
- ));
+ await model.addAddressInfo(
+ addNewAddressRequestModel:
+ addNewAddressRequestModel);
+ if (model.state ==
+ ViewState.ErrorLocal) {
+ Utils.showErrorToast(model.error);
+ } else {
+ AppToast.showSuccessToast(
+ message:
+ "Address Added Successfully");
+ }
+ Navigator.of(context).pop();
+ },
+ label: TranslationBase.of(context)
+ .addNewAddress,
+ ),
+ ],
+ ),
+ ),
+ );
+ },
+ initialPosition: LatLng(latitude, longitude),
+ useCurrentLocation: false,
+ ),
+ ));
}
}
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_page.dart
index 2a7696b7..f314a9bf 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_page.dart
@@ -26,12 +26,10 @@ class NewCMCPage extends StatefulWidget {
final CMCViewModel model;
@override
- _NewCMCPageState createState() =>
- _NewCMCPageState();
+ _NewCMCPageState createState() => _NewCMCPageState();
}
-class _NewCMCPageState extends State
- with TickerProviderStateMixin {
+class _NewCMCPageState extends State with TickerProviderStateMixin {
PageController _controller;
int _currentIndex = 1;
@@ -49,7 +47,8 @@ class _NewCMCPageState extends State
price: widget.model.cmcAllServicesList[0].price,
serviceID: widget.model.cmcAllServicesList[0].serviceID.toString(),
selectedServiceName: widget.model.cmcAllServicesList[0].description,
- selectedServiceNameAR: widget.model.cmcAllServicesList[0].descriptionN,
+ selectedServiceNameAR:
+ widget.model.cmcAllServicesList[0].descriptionN,
recordID: 1,
totalPrice: widget.model.cmcAllServicesList[0].totalPrice,
vAT: widget.model.cmcAllServicesList[0].vAT);
@@ -98,20 +97,24 @@ class _NewCMCPageState extends State
model: model,
onTap: () async {
UpdatePresOrderRequestModel updatePresOrderRequestModel =
- UpdatePresOrderRequestModel(
- presOrderID: order.presOrderID,
- rejectionReason: "",
- presOrderStatus: 4, editedBy: 3);
+ UpdatePresOrderRequestModel(
+ presOrderID: order.presOrderID,
+ rejectionReason: "",
+ presOrderStatus: 4,
+ editedBy: 3);
await model.updateCmcPresOrder(updatePresOrderRequestModel);
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
} else {
- AppToast.showSuccessToast(message:TranslationBase.of(context).processDoneSuccessfully );
+ AppToast.showSuccessToast(
+ message:
+ TranslationBase.of(context).processDoneSuccessfully);
await model.getCmcAllPresOrders();
}
},
));
}
+
return Scaffold(
body: SafeArea(
child: SingleChildScrollView(
@@ -142,212 +145,255 @@ class _NewCMCPageState extends State
children: [
widget.model.cmcAllOrderDetail.length != 0
? FractionallySizedBox(
- widthFactor: 0.9,
- child: SingleChildScrollView(
- child: Column(
- children: [
- Container(
- width: double.infinity,
- margin: EdgeInsets.only(top: 15),
- decoration: BoxDecoration(
- border:
- Border.all(color: Colors.grey, width: 1),
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ widthFactor: 0.9,
+ child: SingleChildScrollView(
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
children: [
- SizedBox(
- height: 12,
- ),
Container(
width: double.infinity,
- padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
+ margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
- border: Border(
- bottom: BorderSide(
- color: Colors.grey,
- width: 1.0,
- ),
- ),
- // borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ border: Border.all(
+ color: Colors.grey, width: 1),
+ borderRadius:
+ BorderRadius.circular(12),
+ color:
+ Theme.of(context).primaryColor),
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
- Texts(
- TranslationBase
- .of(context)
- .requestID,
- bold: false,
- fontSize: 13,
- ),
SizedBox(
- height: 4,
+ height: 12,
),
- Texts(
- widget.model.cmcAllOrderDetail[0].iD.toString(),
- fontSize: 22,
- ),
- ],
- ),
- ),
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
- decoration: BoxDecoration(
- border: Border(
- bottom: BorderSide(
- color: Colors.grey,
- width: 1.0,
+ Container(
+ width: double.infinity,
+ padding: EdgeInsets.only(
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color: Colors.grey,
+ width: 1.0,
+ ),
+ ),
+ // borderRadius: BorderRadius.circular(12),
+ color: Theme.of(context)
+ .primaryColor),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Texts(
+ TranslationBase.of(context)
+ .requestID,
+ bold: false,
+ fontSize: 13,
+ ),
+ SizedBox(
+ height: 4,
+ ),
+ Texts(
+ widget.model
+ .cmcAllOrderDetail[0].iD
+ .toString(),
+ fontSize: 22,
+ ),
+ ],
),
),
- // borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Texts(
- TranslationBase
- .of(context)
- .OrderStatus,
- bold: false,
- fontSize: 13,
- ),
- SizedBox(
- height: 4,
- ),
- Texts(
-
- projectViewModel.isArabic ? widget.model.cmcAllOrderDetail[0]
- .descriptionN : widget.model.cmcAllOrderDetail[0].description,
- fontSize: 22,
+ Container(
+ width: double.infinity,
+ padding: EdgeInsets.only(
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color: Colors.grey,
+ width: 1.0,
+ ),
+ ),
+ // borderRadius: BorderRadius.circular(12),
+ color: Theme.of(context)
+ .primaryColor),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Texts(
+ TranslationBase.of(context)
+ .OrderStatus,
+ bold: false,
+ fontSize: 13,
+ ),
+ SizedBox(
+ height: 4,
+ ),
+ Texts(
+ projectViewModel.isArabic
+ ? widget
+ .model
+ .cmcAllOrderDetail[0]
+ .descriptionN
+ : widget
+ .model
+ .cmcAllOrderDetail[0]
+ .description,
+ fontSize: 22,
+ ),
+ ],
+ ),
),
- ],
- ),
- ),
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
- decoration: BoxDecoration(
- border: Border(
- bottom: BorderSide(
- color: Colors.grey,
- width: 1.0,
+ Container(
+ width: double.infinity,
+ padding: EdgeInsets.only(
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color: Colors.grey,
+ width: 1.0,
+ ),
+ ),
+ // borderRadius: BorderRadius.circular(12),
+ color: Theme.of(context)
+ .primaryColor),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Texts(
+ TranslationBase.of(context)
+ .pickupDate,
+ bold: false,
+ fontSize: 13,
+ ),
+ SizedBox(
+ height: 4,
+ ),
+ Texts(
+ DateUtil.getDayMonthYearDateFormatted(
+ DateUtil.convertStringToDate(
+ widget
+ .model
+ .cmcAllOrderDetail[
+ 0]
+ .createdOn)),
+ fontSize: 22,
+ ),
+ ],
),
),
- // borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Texts(
- TranslationBase.of(context).pickupDate,
- bold: false,
- fontSize: 13,
+ Container(
+ width: double.infinity,
+ padding: EdgeInsets.only(
+ left: 15, bottom: 15, top: 15),
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color: Colors.grey,
+ width: 1.0,
+ ),
+ ),
+ // borderRadius: BorderRadius.circular(12),
+ color: Theme.of(context)
+ .primaryColor),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Texts(
+ TranslationBase.of(context)
+ .serviceName,
+ bold: false,
+ fontSize: 13,
+ ),
+ SizedBox(
+ height: 4,
+ ),
+ Texts(
+ !projectViewModel.isArabic
+ ? widget
+ .model
+ .cmcAllOrderDetail[0]
+ .description
+ .toString()
+ : widget
+ .model
+ .cmcAllOrderDetail[0]
+ .descriptionN
+ .toString(),
+ fontSize: 22,
+ ),
+ ],
+ ),
),
SizedBox(
- height: 4,
+ height: 12,
),
- Texts(
- DateUtil.getDayMonthYearDateFormatted(
- DateUtil.convertStringToDate(widget.model.cmcAllOrderDetail[0].createdOn)),
- fontSize: 22,
- ),
- ],
- ),
- ),
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15),
- decoration: BoxDecoration(
- border: Border(
- bottom: BorderSide(
- color: Colors.grey,
- width: 1.0,
+ Center(
+ child: Container(
+ width: MediaQuery.of(context)
+ .size
+ .width *
+ 0.85,
+ child: SecondaryButton(
+ label: TranslationBase.of(
+ context)
+ .cancel
+ .toUpperCase(),
+ onTap: () {
+ showConfirmMessage(
+ widget.model,
+ widget.model
+ .cmcAllOrderDetail[0]);
+ },
+ color: Colors.red[800],
+ disabled: false,
+ textColor: Theme.of(context)
+ .backgroundColor),
),
),
- // borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- Texts(
- TranslationBase.of(context).serviceName,
- bold: false,
- fontSize: 13,
- ),
SizedBox(
- height: 4,
- ),
- Texts(
- !projectViewModel.isArabic?widget.model.cmcAllOrderDetail[0].description
- .toString() :
- widget.model.cmcAllOrderDetail[0]
- .descriptionN
- .toString(),
- fontSize: 22,
+ height: 22,
),
],
),
),
- SizedBox(
- height: 12,
- ),
- Center(
- child: Container(
- width: MediaQuery
- .of(context)
- .size
- .width *
- 0.85,
- child: SecondaryButton(
- label: TranslationBase.of(context).cancel.toUpperCase(),
- onTap: () {
- showConfirmMessage(widget.model,
- widget.model.cmcAllOrderDetail[0]);
- }
- ,
- color: Colors.red[800],
- disabled: false,
- textColor: Theme
- .of(context)
- .backgroundColor),
- ),
- ),
SizedBox(
height: 22,
),
],
),
),
- SizedBox(
- height: 22,
- ),
- ],
- ),
- ),
- )
+ )
: NewCMCStepOnePage(
- changePageViewIndex: changePageViewIndex,
- cMCInsertPresOrderRequestModel:
- cMCInsertPresOrderRequestModel,
- model: widget.model,
- ),
+ changePageViewIndex: changePageViewIndex,
+ cMCInsertPresOrderRequestModel:
+ cMCInsertPresOrderRequestModel,
+ model: widget.model,
+ ),
NewCMCStepTowPage(
longitude: _longitude,
latitude: _latitude,
changePageViewIndex: changePageViewIndex,
- cmcInsertPresOrderRequestModel: cMCInsertPresOrderRequestModel,
+ cmcInsertPresOrderRequestModel:
+ cMCInsertPresOrderRequestModel,
model: widget.model,
- ), NewCMCStepThreePage(
+ ),
+ NewCMCStepThreePage(
changePageViewIndex: changePageViewIndex,
- cmcInsertPresOrderRequestModel: cMCInsertPresOrderRequestModel,
+ cmcInsertPresOrderRequestModel:
+ cMCInsertPresOrderRequestModel,
model: widget.model,
),
],
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_one_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_one_page.dart
index b80d125a..c07b8345 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_one_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_one_page.dart
@@ -62,14 +62,14 @@ class _NewCMCStepOnePageState extends State {
),
Column(
children:
- widget.model.cmcAllServicesList.map((service) {
+ widget.model.cmcAllServicesList.map((service) {
return Container(
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
border:
- Border.all(color: Colors.grey, width: 1),
+ Border.all(color: Colors.grey, width: 1),
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Column(
children: [
Row(
@@ -79,53 +79,52 @@ class _NewCMCStepOnePageState extends State {
activeColor: Colors.red[800],
onChanged: (newValue) async {
PatientERCMCInsertServicesList
- patientERCMCInsertServicesList =
- new PatientERCMCInsertServicesList(
- price: service.price,
- serviceID: service.serviceID
- .toString(),
- selectedServiceName:
- service.description,
- selectedServiceNameAR:
- service.descriptionN,
- recordID: 1,
- totalPrice:
- service.totalPrice,
- vAT: service.vAT);
+ patientERCMCInsertServicesList =
+ new PatientERCMCInsertServicesList(
+ price: service.price,
+ serviceID: service.serviceID
+ .toString(),
+ selectedServiceName:
+ service.description,
+ selectedServiceNameAR:
+ service.descriptionN,
+ recordID: 1,
+ totalPrice:
+ service.totalPrice,
+ vAT: service.vAT);
setState(() {
widget
.cMCInsertPresOrderRequestModel
- .patientERCMCInsertServicesList =
- [
+ .patientERCMCInsertServicesList = [
patientERCMCInsertServicesList
];
});
CMCGetItemsRequestModel
- cMCGetItemsRequestModel =
- new CMCGetItemsRequestModel(
- checkupType: newValue);
+ cMCGetItemsRequestModel =
+ new CMCGetItemsRequestModel(
+ checkupType: newValue);
await widget.model.getCheckupItems(
cMCGetItemsRequestModel:
- cMCGetItemsRequestModel);
+ cMCGetItemsRequestModel);
},
groupValue: widget
- .cMCInsertPresOrderRequestModel
- .patientERCMCInsertServicesList
- .length >
- 0
+ .cMCInsertPresOrderRequestModel
+ .patientERCMCInsertServicesList
+ .length >
+ 0
? int.parse(widget
- .cMCInsertPresOrderRequestModel
- .patientERCMCInsertServicesList[
- 0]
- .serviceID)
+ .cMCInsertPresOrderRequestModel
+ .patientERCMCInsertServicesList[
+ 0]
+ .serviceID)
: 1),
Expanded(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Texts(
- projectViewModel.isArabic ? service
- .descriptionN : service
- .description,
+ projectViewModel.isArabic
+ ? service.descriptionN
+ : service.description,
fontSize: 15,
),
),
@@ -144,14 +143,18 @@ class _NewCMCStepOnePageState extends State {
height: 30,
),
Container(
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
width: double.infinity,
child: Column(
children: [
Row(
children: [
- Container(margin: EdgeInsets.only(
- right: 10, left: 10), child: Texts(TranslationBase.of(context).coveredService, fontWeight: FontWeight.bold,))
+ Container(
+ margin: EdgeInsets.only(right: 10, left: 10),
+ child: Texts(
+ TranslationBase.of(context).coveredService,
+ fontWeight: FontWeight.bold,
+ ))
],
),
Column(
@@ -163,10 +166,10 @@ class _NewCMCStepOnePageState extends State {
child: Container(
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Column(
- crossAxisAlignment: CrossAxisAlignment
- .start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
SizedBox(
height: 12,
@@ -182,17 +185,18 @@ class _NewCMCStepOnePageState extends State {
width: 0.5,
color: Colors.grey)),
//borderRadius: ,
- color: Colors.white),
+ color:
+ Theme.of(context).primaryColor),
child: Column(
crossAxisAlignment:
- CrossAxisAlignment.start,
+ CrossAxisAlignment.start,
children: [
- Container(margin: EdgeInsets.only(
- right: 10, left: 10),
- child: Texts(
- item.itemName,
- fontSize: 15, fontWeight: FontWeight.bold
- ),
+ Container(
+ margin: EdgeInsets.only(
+ right: 10, left: 10),
+ child: Texts(item.itemName,
+ fontSize: 15,
+ fontWeight: FontWeight.bold),
),
],
),
@@ -222,37 +226,34 @@ class _NewCMCStepOnePageState extends State {
Container(
width: MediaQuery.of(context).size.width * 0.9,
child: SecondaryButton(
- label: TranslationBase
- .of(context)
- .next,
- textColor: Theme
- .of(context)
- .backgroundColor,
+ label: TranslationBase.of(context).next,
+ textColor: Theme.of(context).backgroundColor,
color: Colors.grey[800],
onTap: () async {
if (widget.cMCInsertPresOrderRequestModel
- .patientERCMCInsertServicesList.length !=
- 0 ||
+ .patientERCMCInsertServicesList.length !=
+ 0 ||
widget.cMCInsertPresOrderRequestModel
- .patientERCMCInsertServicesList ==
+ .patientERCMCInsertServicesList ==
null) {
int index = widget.model.cmcAllServicesList.length;
PatientERCMCInsertServicesList
- patientERCMCInsertServicesList =
- new PatientERCMCInsertServicesList(
- price: widget
- .model.cmcAllServicesList[index - 1].price,
- serviceID: widget
- .model.cmcAllServicesList[index - 1].serviceID
- .toString(),
- selectedServiceName: widget.model
- .cmcAllServicesList[index - 1].description,
- selectedServiceNameAR: widget.model
- .cmcAllServicesList[index - 1].descriptionN,
- recordID: 1,
- totalPrice: widget
- .model.cmcAllServicesList[index - 1].totalPrice,
- vAT: widget.model.cmcAllServicesList[index - 1].vAT);
+ patientERCMCInsertServicesList =
+ new PatientERCMCInsertServicesList(
+ price: widget
+ .model.cmcAllServicesList[index - 1].price,
+ serviceID: widget
+ .model.cmcAllServicesList[index - 1].serviceID
+ .toString(),
+ selectedServiceName: widget.model
+ .cmcAllServicesList[index - 1].description,
+ selectedServiceNameAR: widget.model
+ .cmcAllServicesList[index - 1].descriptionN,
+ recordID: 1,
+ totalPrice: widget
+ .model.cmcAllServicesList[index - 1].totalPrice,
+ vAT:
+ widget.model.cmcAllServicesList[index - 1].vAT);
widget.cMCInsertPresOrderRequestModel
.patientERCMCInsertServicesList = [
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart
index eea9853b..75699a5c 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_three_page.dart
@@ -22,15 +22,13 @@ class NewCMCStepThreePage extends StatefulWidget {
{Key key,
this.changePageViewIndex,
this.model,
- this.cmcInsertPresOrderRequestModel});
+ this.cmcInsertPresOrderRequestModel});
@override
- _NewCMCStepThreePageState createState() =>
- _NewCMCStepThreePageState();
+ _NewCMCStepThreePageState createState() => _NewCMCStepThreePageState();
}
-class _NewCMCStepThreePageState
- extends State {
+class _NewCMCStepThreePageState extends State {
Completer _controller = Completer();
static CameraPosition _kGooglePlex = CameraPosition(
@@ -49,8 +47,7 @@ class _NewCMCStepThreePageState
widget.cmcInsertPresOrderRequestModel.latitude.hashCode
.toString(),
),
- position: LatLng(
- widget.cmcInsertPresOrderRequestModel.latitude,
+ position: LatLng(widget.cmcInsertPresOrderRequestModel.latitude,
widget.cmcInsertPresOrderRequestModel.longitude)),
);
_kGooglePlex = CameraPosition(
@@ -86,15 +83,16 @@ class _NewCMCStepThreePageState
),
Container(
decoration: BoxDecoration(
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.circular(12)),
padding: EdgeInsets.all(8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Texts(TranslationBase
- .of(context)
- .orderLocation + " : ", fontWeight: FontWeight.bold,),
+ Texts(
+ TranslationBase.of(context).orderLocation + " : ",
+ fontWeight: FontWeight.bold,
+ ),
SizedBox(
height: 12,
),
@@ -115,40 +113,38 @@ class _NewCMCStepThreePageState
SizedBox(
height: 12,
),
- Texts(TranslationBase
- .of(context)
- .selectedService),
+ Texts(TranslationBase.of(context).selectedService),
...List.generate(
widget.cmcInsertPresOrderRequestModel
.patientERCMCInsertServicesList.length,
- (index) =>
- Container(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Texts(
- TranslationBase
- .of(context)
- .serviceName,
- fontSize: 12, fontWeight: FontWeight.bold,
- ),
- SizedBox(
- height: 5,
- ),
- Texts(
- projectViewModel.isArabic ? widget
+ (index) => Container(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Texts(
+ TranslationBase.of(context).serviceName,
+ fontSize: 12,
+ fontWeight: FontWeight.bold,
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ Texts(
+ projectViewModel.isArabic
+ ? widget
.cmcInsertPresOrderRequestModel
.patientERCMCInsertServicesList[index]
- .selectedServiceNameAR : widget
+ .selectedServiceNameAR
+ : widget
.cmcInsertPresOrderRequestModel
.patientERCMCInsertServicesList[index]
.selectedServiceName,
- fontSize: 15,
- bold: true,
- ),
- ],
+ fontSize: 15,
+ bold: true,
),
- ),
+ ],
+ ),
+ ),
)
],
),
@@ -165,9 +161,7 @@ class _NewCMCStepThreePageState
Container(
width: MediaQuery.of(context).size.width * 0.9,
child: SecondaryButton(
- label: TranslationBase
- .of(context)
- .confirm,
+ label: TranslationBase.of(context).confirm,
color: Colors.grey[800],
onTap: () async {
await widget.model.insertPresPresOrder(
@@ -176,9 +170,7 @@ class _NewCMCStepThreePageState
widget.changePageViewIndex(0);
}
},
- textColor: Theme
- .of(context)
- .backgroundColor),
+ textColor: Theme.of(context).backgroundColor),
),
],
),
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart
index d9d4c56a..3d969d9e 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart
@@ -37,17 +37,14 @@ class NewCMCStepTowPage extends StatefulWidget {
: super(key: key);
@override
- _NewCMCStepTowPageState createState() =>
- _NewCMCStepTowPageState();
+ _NewCMCStepTowPageState createState() => _NewCMCStepTowPageState();
}
-class _NewCMCStepTowPageState
- extends State {
+class _NewCMCStepTowPageState extends State {
double latitude = 0;
double longitude = 0;
AddressInfo _selectedAddress;
-
@override
void initState() {
if (widget.cmcInsertPresOrderRequestModel.latitude == null) {
@@ -61,17 +58,18 @@ class _NewCMCStepTowPageState
setLatitudeAndLongitude({bool isSetState = false, String latLong}) {
if (latLong == null)
- latLong = widget.model.addressesList[widget.model.addressesList
- .length - 1].latLong;
+ latLong = widget
+ .model.addressesList[widget.model.addressesList.length - 1].latLong;
List latLongArr = latLong.split(',');
latitude = double.parse(latLongArr[0]);
longitude = double.parse(latLongArr[1]);
}
+
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
- return AppScaffold(
+ return AppScaffold(
isShowDecPage: false,
body: Stack(
children: [
@@ -84,7 +82,6 @@ class _NewCMCStepTowPageState
autocompleteLanguage: projectViewModel.currentLanguage,
enableMapTypeButton: true,
searchForInitialValue: false,
-
onPlacePicked: (PickResult result) {
print(result.adrAddress);
widget.changePageViewIndex(3);
@@ -95,57 +92,56 @@ class _NewCMCStepTowPageState
return isSearchBarFocused
? Container()
: FloatingCard(
- bottomPosition: 0.0,
- leftPosition: 0.0,
- rightPosition: 0.0,
- width: 500,
- borderRadius: BorderRadius.circular(12.0),
- child: state == SearchingState.Searching
- ? Center(child: CircularProgressIndicator())
- : Container(
- margin: EdgeInsets.all(12),
- child: Column(
- children: [
- SecondaryButton(
- color: Colors.grey[800],
- textColor: Colors.white,
- onTap: () {
- Navigator.push(
- context,
- FadePage(
- page:
- CMCLocationPage(
- latitude: latitude,
- longitude: longitude,
-
- ),
- ),
- );
- },
- label: TranslationBase.of(context).addNewAddress,
- ),
- SizedBox(height: 10,),
- SecondaryButton(
- color: Colors.red
- [800],
- textColor: Colors.white,
- onTap: () {
- setState(() {
- widget.cmcInsertPresOrderRequestModel
- .latitude =
- selectedPlace.geometry.location.lat;
- widget.cmcInsertPresOrderRequestModel
- .longitude =
- selectedPlace.geometry.location.lng;
- });
- widget.changePageViewIndex(3);
- },
- label: TranslationBase.of(context).confirm,
- ),
- ],
- )
- ),
- );
+ bottomPosition: 0.0,
+ leftPosition: 0.0,
+ rightPosition: 0.0,
+ width: 500,
+ borderRadius: BorderRadius.circular(12.0),
+ child: state == SearchingState.Searching
+ ? Center(child: CircularProgressIndicator())
+ : Container(
+ margin: EdgeInsets.all(12),
+ child: Column(
+ children: [
+ SecondaryButton(
+ color: Colors.grey[800],
+ textColor: Colors.white,
+ onTap: () {
+ Navigator.push(
+ context,
+ FadePage(
+ page: CMCLocationPage(
+ latitude: latitude,
+ longitude: longitude,
+ ),
+ ),
+ );
+ },
+ label: TranslationBase.of(context)
+ .addNewAddress,
+ ),
+ SizedBox(
+ height: 10,
+ ),
+ SecondaryButton(
+ color: Colors.red[800],
+ textColor: Colors.white,
+ onTap: () {
+ setState(() {
+ widget.cmcInsertPresOrderRequestModel
+ .latitude =
+ selectedPlace.geometry.location.lat;
+ widget.cmcInsertPresOrderRequestModel
+ .longitude =
+ selectedPlace.geometry.location.lng;
+ });
+ widget.changePageViewIndex(3);
+ },
+ label: TranslationBase.of(context).confirm,
+ ),
+ ],
+ )),
+ );
},
initialPosition: LatLng(latitude, longitude),
useCurrentLocation: false,
@@ -160,37 +156,36 @@ class _NewCMCStepTowPageState
// height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Expanded(child: Texts(getAddressName(), fontSize: 14,),),
+ Expanded(
+ child: Texts(
+ getAddressName(),
+ fontSize: 14,
+ ),
+ ),
Icon(Icons.arrow_drop_down)
],
),
),
),
- height: 56, width: double.infinity, color: Theme
- .of(context)
- .scaffoldBackgroundColor,
-
+ height: 56,
+ width: double.infinity,
+ color: Theme.of(context).scaffoldBackgroundColor,
)
],
),
);
-
-
}
-
void confirmSelectLocationDialog(List addresses) {
showDialog(
context: context,
child: SelectLocationDialog(
addresses: addresses,
- selectedAddress: _selectedAddress
- ,
+ selectedAddress: _selectedAddress,
onValueSelected: (value) {
setLatitudeAndLongitude(latLong: value.latLong);
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_page.dart
index 4f6213d5..f1d3e72f 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_page.dart
@@ -17,8 +17,7 @@ class CMCPage extends StatefulWidget {
_CMCPageState createState() => _CMCPageState();
}
-class _CMCPageState extends State
- with SingleTickerProviderStateMixin {
+class _CMCPageState extends State with SingleTickerProviderStateMixin {
TabController _tabController;
@override
@@ -36,14 +35,18 @@ class _CMCPageState extends State
@override
Widget build(BuildContext context) {
return BaseView(
- onModelReady: (model) async{
- await model.getCmcAllPresOrders();
-
+ onModelReady: (model) async {
+ await model.getCmcAllPresOrders();
},
builder: (_, model, widget) => AppScaffold(
isShowAppBar: true,
- description:TranslationBase.of(context).infoCMC,
- imagesInfo: [ImagesInfo(imageAr: 'assets/images/Wifi-AR.png',imageEn: 'assets/images/wifi-EN.png', isAsset: true)],
+ description: TranslationBase.of(context).infoCMC,
+ imagesInfo: [
+ ImagesInfo(
+ imageAr: 'assets/images/Wifi-AR.png',
+ imageEn: 'assets/images/wifi-EN.png',
+ isAsset: true)
+ ],
appBarTitle: TranslationBase.of(context).comprehensiveMedicalCheckup,
body: Scaffold(
extendBodyBehindAppBar: true,
@@ -58,9 +61,7 @@ class _CMCPageState extends State
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
- color: Theme.of(context)
- .scaffoldBackgroundColor
- .withOpacity(0.8),
+ color: Theme.of(context).primaryColor.withOpacity(0.8),
height: 70.0,
),
),
@@ -76,7 +77,7 @@ class _CMCPageState extends State
color: Theme.of(context).dividerColor,
width: 0.7),
),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Center(
child: TabBar(
isScrollable: true,
@@ -86,7 +87,7 @@ class _CMCPageState extends State
indicatorColor: Colors.red[800],
labelColor: Theme.of(context).primaryColor,
labelPadding:
- EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
+ EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
unselectedLabelColor: Colors.grey[800],
tabs: [
Container(
@@ -99,7 +100,8 @@ class _CMCPageState extends State
Container(
width: MediaQuery.of(context).size.width * 0.37,
child: Center(
- child: Texts(TranslationBase.of(context).orderLog),
+ child:
+ Texts(TranslationBase.of(context).orderLog),
),
),
],
diff --git a/lib/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/new_Home_health_care_step_one_page.dart b/lib/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/new_Home_health_care_step_one_page.dart
index 447ba177..86ee791b 100644
--- a/lib/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/new_Home_health_care_step_one_page.dart
+++ b/lib/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/new_Home_health_care_step_one_page.dart
@@ -31,19 +31,20 @@ class NewHomeHealthCareStepOnePage extends StatefulWidget {
_NewHomeHealthCareStepOnePageState();
}
-class _NewHomeHealthCareStepOnePageState extends State {
-
+class _NewHomeHealthCareStepOnePageState
+ extends State {
PickResult _result;
-
@override
void initState() {
- if (widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList == null)
- widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList = [];
+ if (widget.patientERInsertPresOrderRequestModel
+ .patientERHHCInsertServicesList ==
+ null)
+ widget.patientERInsertPresOrderRequestModel
+ .patientERHHCInsertServicesList = [];
super.initState();
}
-
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
@@ -67,9 +68,7 @@ class _NewHomeHealthCareStepOnePageState extends State
_getCurrentLocation();
}
- _getCurrentLocation() async {
- await getLastKnownPosition().then((value) {
- _latitude = value.latitude;
- _longitude = value.longitude;
- }).catchError((e) {
- _longitude = 0;
- _latitude = 0;
- });
- }
+ _getCurrentLocation() async {
+ await getLastKnownPosition().then((value) {
+ _latitude = value.latitude;
+ _longitude = value.longitude;
+ }).catchError((e) {
+ _longitude = 0;
+ _latitude = 0;
+ });
+ }
@override
void dispose() {
@@ -87,7 +87,9 @@ class _NewHomeHealthCarePageState extends State
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
} else {
- AppToast.showSuccessToast(message:TranslationBase.of(context).processDoneSuccessfully );
+ AppToast.showSuccessToast(
+ message:
+ TranslationBase.of(context).processDoneSuccessfully);
await model.getHHCAllPresOrders();
// await model.getHHCAllServices();
}
@@ -105,7 +107,9 @@ class _NewHomeHealthCarePageState extends State
child: Column(
children: [
Container(
- margin: EdgeInsets.only(left: MediaQuery.of(context).size.width*0.05, right: MediaQuery.of(context).size.width*0.05),
+ margin: EdgeInsets.only(
+ left: MediaQuery.of(context).size.width * 0.05,
+ right: MediaQuery.of(context).size.width * 0.05),
child: StepsWidget(
index: _currentIndex,
changeCurrentTab: _changeCurrentTab,
@@ -130,11 +134,13 @@ class _NewHomeHealthCarePageState extends State
width: double.infinity,
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
- border: Border.all(color: Colors.grey, width: 1),
+ border: Border.all(
+ color: Colors.grey, width: 1),
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
SizedBox(
height: 12,
@@ -142,7 +148,10 @@ class _NewHomeHealthCarePageState extends State
Container(
width: double.infinity,
padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
@@ -151,13 +160,14 @@ class _NewHomeHealthCarePageState extends State
),
),
// borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color:
+ Theme.of(context).primaryColor),
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase
- .of(context)
+ TranslationBase.of(context)
.requestID,
bold: false,
fontSize: 13,
@@ -166,7 +176,8 @@ class _NewHomeHealthCarePageState extends State
height: 4,
),
Texts(
- widget.model.pendingOrder.iD.toString(),
+ widget.model.pendingOrder.iD
+ .toString(),
fontSize: 22,
),
],
@@ -175,7 +186,10 @@ class _NewHomeHealthCarePageState extends State
Container(
width: double.infinity,
padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
@@ -184,13 +198,14 @@ class _NewHomeHealthCarePageState extends State
),
),
// borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color:
+ Theme.of(context).primaryColor),
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase
- .of(context)
+ TranslationBase.of(context)
.OrderStatus,
bold: false,
fontSize: 13,
@@ -199,11 +214,11 @@ class _NewHomeHealthCarePageState extends State
height: 4,
),
Texts(
-
- projectViewModel.isArabic ? widget
- .model.pendingOrder
- .descriptionN : widget.model
- .pendingOrder.description,
+ projectViewModel.isArabic
+ ? widget.model.pendingOrder
+ .descriptionN
+ : widget.model.pendingOrder
+ .description,
fontSize: 22,
),
],
@@ -212,7 +227,10 @@ class _NewHomeHealthCarePageState extends State
Container(
width: double.infinity,
padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
@@ -221,12 +239,15 @@ class _NewHomeHealthCarePageState extends State
),
),
// borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color:
+ Theme.of(context).primaryColor),
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase.of(context).pickupDate,
+ TranslationBase.of(context)
+ .pickupDate,
bold: false,
fontSize: 13,
),
@@ -234,9 +255,14 @@ class _NewHomeHealthCarePageState extends State
height: 4,
),
Texts(
- DateUtil.getDayMonthYearDateFormatted(
- DateUtil.convertStringToDate(widget
- .model.pendingOrder.createdOn)),
+ DateUtil
+ .getDayMonthYearDateFormatted(
+ DateUtil
+ .convertStringToDate(
+ widget
+ .model
+ .pendingOrder
+ .createdOn)),
fontSize: 22,
),
],
@@ -247,7 +273,10 @@ class _NewHomeHealthCarePageState extends State
(index) => Container(
width: double.infinity,
padding: EdgeInsets.only(
- left: 15, bottom: 15, top: 15,right: 15),
+ left: 15,
+ bottom: 15,
+ top: 15,
+ right: 15),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
@@ -256,14 +285,14 @@ class _NewHomeHealthCarePageState extends State
),
),
// borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context)
+ .primaryColor),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase
- .of(context)
+ TranslationBase.of(context)
.serviceName,
bold: false,
fontSize: 13,
@@ -273,12 +302,16 @@ class _NewHomeHealthCarePageState extends State
),
Texts(
projectViewModel.isArabic
- ? widget.model
- .hhcAllOrderDetail[index]
- .descriptionN
- : widget.model
- .hhcAllOrderDetail[index]
- .description,
+ ? widget
+ .model
+ .hhcAllOrderDetail[
+ index]
+ .descriptionN
+ : widget
+ .model
+ .hhcAllOrderDetail[
+ index]
+ .description,
fontSize: 22,
bold: true,
),
@@ -291,18 +324,24 @@ class _NewHomeHealthCarePageState extends State
),
Center(
child: Container(
- width:
- MediaQuery.of(context).size.width * 0.85,
+ width: MediaQuery.of(context)
+ .size
+ .width *
+ 0.85,
child: SecondaryButton(
- label: TranslationBase.of(context).cancel.toUpperCase(),
+ label: TranslationBase.of(context)
+ .cancel
+ .toUpperCase(),
onTap: () {
- showConfirmMessage(widget.model,
- widget.model.hhcAllOrderDetail[0]);
+ showConfirmMessage(
+ widget.model,
+ widget.model
+ .hhcAllOrderDetail[0]);
},
color: Colors.red[800],
disabled: false,
- textColor:
- Theme.of(context).backgroundColor),
+ textColor: Theme.of(context)
+ .backgroundColor),
),
),
SizedBox(
@@ -315,22 +354,24 @@ class _NewHomeHealthCarePageState extends State
)
: NewHomeHealthCareStepOnePage(
changePageViewIndex: _changeCurrentTab,
- patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
+ patientERInsertPresOrderRequestModel:
+ patientERInsertPresOrderRequestModel,
model: widget.model,
),
NewHomeHealthCareStepTowPage(
latitude: _latitude,
longitude: _longitude,
changePageViewIndex: _changeCurrentTab,
- patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
+ patientERInsertPresOrderRequestModel:
+ patientERInsertPresOrderRequestModel,
model: widget.model,
),
NewHomeHealthCareStepThreePage(
changePageViewIndex: _changeCurrentTab,
- patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
+ patientERInsertPresOrderRequestModel:
+ patientERInsertPresOrderRequestModel,
model: widget.model,
)
-
],
),
),
diff --git a/lib/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_page.dart b/lib/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_page.dart
index 1c10e594..b39c918f 100644
--- a/lib/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_page.dart
+++ b/lib/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_page.dart
@@ -37,15 +37,19 @@ class _HomeHealthCarePageState extends State
@override
Widget build(BuildContext context) {
return BaseView(
- onModelReady: (model){
+ onModelReady: (model) {
model.getHHCAllPresOrders();
},
builder: (_, model, widget) => AppScaffold(
isShowAppBar: true,
description: TranslationBase.of(context).HHCNotAuthMsg,
appBarTitle: TranslationBase.of(context).homeHealthCare,
- imagesInfo: [ImagesInfo(imageAr: 'assets/images/Wifi-AR.png',imageEn: 'assets/images/wifi-EN.png', isAsset: true)],
-
+ imagesInfo: [
+ ImagesInfo(
+ imageAr: 'assets/images/Wifi-AR.png',
+ imageEn: 'assets/images/wifi-EN.png',
+ isAsset: true)
+ ],
body: Scaffold(
extendBodyBehindAppBar: true,
appBar: PreferredSize(
@@ -77,7 +81,7 @@ class _HomeHealthCarePageState extends State
color: Theme.of(context).dividerColor,
width: 0.7),
),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Center(
child: TabBar(
isScrollable: true,
@@ -87,19 +91,25 @@ class _HomeHealthCarePageState extends State
indicatorColor: Colors.red[800],
labelColor: Theme.of(context).primaryColor,
labelPadding:
- EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
+ EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
unselectedLabelColor: Colors.grey[800],
tabs: [
Container(
width: MediaQuery.of(context).size.width * 0.37,
child: Center(
- child: Texts(TranslationBase.of(context).homeHealthCare),
+ child: Texts(
+ TranslationBase.of(context).homeHealthCare,
+ color: Colors.black,
+ ),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.37,
child: Center(
- child: Texts(TranslationBase.of(context).orderLog),
+ child: Texts(
+ TranslationBase.of(context).orderLog,
+ color: Colors.black,
+ ),
),
),
],
diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart
index d81fe78f..fe8f73f6 100644
--- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart
+++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart
@@ -58,8 +58,12 @@ class _AllHabibMedicalServiceState extends State {
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
- locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context);
- WidgetsBinding.instance.addPostFrameCallback((_) => {Geolocator.getLastKnownPosition().then((value) => setLocation(value))});
+ locationUtils =
+ new LocationUtils(isShowConfirmDialog: true, context: context);
+ WidgetsBinding.instance.addPostFrameCallback((_) => {
+ Geolocator.getLastKnownPosition()
+ .then((value) => setLocation(value))
+ });
});
super.initState();
}
@@ -98,12 +102,14 @@ class _AllHabibMedicalServiceState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase.of(context).healthWeatherIndicators,
+ TranslationBase.of(context)
+ .healthWeatherIndicators,
color: Colors.white,
fontWeight: FontWeight.w600,
),
Texts(
- TranslationBase.of(context).healthTipsBasedOnCurrentWeather,
+ TranslationBase.of(context)
+ .healthTipsBasedOnCurrentWeather,
color: Colors.white,
fontSize: 14,
),
@@ -131,7 +137,11 @@ class _AllHabibMedicalServiceState extends State {
width: 60,
height: 60,
),
- Directionality(textDirection: TextDirection.ltr, child: AppText(weather, fontSize: 22, color: Colors.white))
+ Directionality(
+ textDirection: TextDirection.ltr,
+ child: AppText(weather,
+ fontSize: 22,
+ color: Colors.white))
],
),
Texts(
@@ -151,7 +161,8 @@ class _AllHabibMedicalServiceState extends State {
Navigator.pop(context);
widget.goToMyProfile();
},
- imageLocation: 'assets/images/new-design/my_file_bottom_bar.png',
+ imageLocation:
+ 'assets/images/new-design/my_file_bottom_bar.png',
title: TranslationBase.of(context).myMedicalFile,
),
ServicesContainer(
@@ -173,7 +184,8 @@ class _AllHabibMedicalServiceState extends State {
),
),
),
- imageLocation: 'assets/images/new-design/booking_icon_active.png',
+ imageLocation:
+ 'assets/images/new-design/booking_icon_active.png',
title: TranslationBase.of(context).bookAppo,
),
ServicesContainer(
@@ -183,15 +195,28 @@ class _AllHabibMedicalServiceState extends State {
page: PaymentService(),
),
),
- imageLocation: 'assets/images/al-habib_online_payment_service_icon.png',
+ imageLocation:
+ 'assets/images/al-habib_online_payment_service_icon.png',
title: TranslationBase.of(context).onlinePaymentService,
),
+ ServicesContainer(
+ onTap: () => Navigator.push(
+ context,
+ FadePage(
+ page: PaymentService(),
+ ),
+ ),
+ imageLocation:
+ 'assets/images/comprehensive_medical_checkup_logo.png',
+ title: TranslationBase.of(context).anicllaryOrders,
+ ),
ServicesContainer(
onTap: () => Navigator.push(
context,
FadePage(),
),
- imageLocation: 'assets/images/al-habib_online_payment_service_icon.png',
+ imageLocation:
+ 'assets/images/al-habib_online_payment_service_icon.png',
title: TranslationBase.of(context).covid19_driveThrueTest,
),
ServicesContainer(
@@ -224,13 +249,17 @@ class _AllHabibMedicalServiceState extends State {
page: InsuranceUpdate(),
),
),
- imageLocation: 'assets/images/medical/insurance_card_icon.png',
+ imageLocation:
+ 'assets/images/medical/insurance_card_icon.png',
title: TranslationBase.of(context).updateInsurance,
),
ServicesContainer(
onTap: () => Navigator.push(
context,
- FadePage(page: authUser.patientID == null ? EReferralIndexPage() : EReferralPage()),
+ FadePage(
+ page: authUser.patientID == null
+ ? EReferralIndexPage()
+ : EReferralPage()),
),
imageLocation: 'assets/images/ereferral_service_icon.png',
title: TranslationBase.of(context).ereferral,
@@ -242,7 +271,8 @@ class _AllHabibMedicalServiceState extends State {
page: MyFamily(),
),
),
- imageLocation: 'assets/images/new-design/family_menu_icon_red.png',
+ imageLocation:
+ 'assets/images/new-design/family_menu_icon_red.png',
title: TranslationBase.of(context).myFamily,
),
if (projectViewModel.havePrivilege(35))
@@ -251,7 +281,8 @@ class _AllHabibMedicalServiceState extends State {
context,
FadePage(page: ChildVaccinesPage()),
),
- imageLocation: 'assets/images/new-design/children_vaccines_icon.png',
+ imageLocation:
+ 'assets/images/new-design/children_vaccines_icon.png',
title: TranslationBase.of(context).childVaccine,
),
ServicesContainer(
@@ -261,7 +292,8 @@ class _AllHabibMedicalServiceState extends State {
page: ToDo(isShowAppBar: true),
),
),
- imageLocation: 'assets/images/new-design/upcoming_icon_bottom_bar.png',
+ imageLocation:
+ 'assets/images/new-design/upcoming_icon_bottom_bar.png',
title: TranslationBase.of(context).todoList,
),
if (projectViewModel.havePrivilege(42))
@@ -288,7 +320,8 @@ class _AllHabibMedicalServiceState extends State {
page: (HealthCalculators()),
),
),
- imageLocation: 'assets/images/new-design/health_calculator_icon.png',
+ imageLocation:
+ 'assets/images/new-design/health_calculator_icon.png',
title: TranslationBase.of(context).calculators,
),
ServicesContainer(
@@ -298,12 +331,14 @@ class _AllHabibMedicalServiceState extends State {
page: HealthConverter(),
),
),
- imageLocation: 'assets/images/new-design/health_convertor_icon.png',
+ imageLocation:
+ 'assets/images/new-design/health_convertor_icon.png',
title: TranslationBase.of(context).converters,
),
if (projectViewModel.havePrivilege(38))
ServicesContainer(
- onTap: () => Navigator.push(context, FadePage(page: H2OPage())),
+ onTap: () =>
+ Navigator.push(context, FadePage(page: H2OPage())),
// Navigator.push(
// context,
// FadePage(
@@ -319,7 +354,8 @@ class _AllHabibMedicalServiceState extends State {
context,
FadePage(),
),
- imageLocation: 'assets/images/new-design/smartwatch_icon.png',
+ imageLocation:
+ 'assets/images/new-design/smartwatch_icon.png',
title: TranslationBase.of(context).smartWatches,
),
ServicesContainer(
@@ -329,12 +365,15 @@ class _AllHabibMedicalServiceState extends State {
page: ParkingPage(),
),
),
- imageLocation: 'assets/images/new-design/parking_system_icon.png',
+ imageLocation:
+ 'assets/images/new-design/parking_system_icon.png',
title: TranslationBase.of(context).parking,
),
ServicesContainer(
- onTap: () => launch("https://hmgwebservices.com/vt_mobile/html/index.html"),
- imageLocation: 'assets/images/new-design/virtual_tour_icon.png',
+ onTap: () => launch(
+ "https://hmgwebservices.com/vt_mobile/html/index.html"),
+ imageLocation:
+ 'assets/images/new-design/virtual_tour_icon.png',
title: TranslationBase.of(context).vTour,
),
ServicesContainer(
@@ -342,10 +381,12 @@ class _AllHabibMedicalServiceState extends State {
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => MyWebView(
title: "HMG News",
- selectedUrl: "https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
+ selectedUrl:
+ "https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
)));
},
- imageLocation: 'assets/images/new-design/twitter_dashboard_icon.png',
+ imageLocation:
+ 'assets/images/new-design/twitter_dashboard_icon.png',
title: TranslationBase.of(context).latestNews,
),
ServicesContainer(
@@ -368,7 +409,8 @@ class _AllHabibMedicalServiceState extends State {
getAuthUser() async {
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
- var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE));
+ var data = AuthenticatedUser.fromJson(
+ await this.sharedPref.getObject(USER_PROFILE));
setState(() {
authUser = data;
});
@@ -382,7 +424,8 @@ class _AllHabibMedicalServiceState extends State {
});
} else {
setState(() {
- weather = data != null ? data['Temperature'].toString() + '\u2103' : '--';
+ weather =
+ data != null ? data['Temperature'].toString() + '\u2103' : '--';
});
}
}
diff --git a/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrders.dart b/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrders.dart
new file mode 100644
index 00000000..57b134bf
--- /dev/null
+++ b/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrders.dart
@@ -0,0 +1,43 @@
+import 'package:diplomaticquarterapp/core/viewModels/ancillary_orders_view_model.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart';
+import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
+import 'package:flutter/material.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+
+class AnicllaryOrders extends StatefulWidget {
+ @override
+ _AnicllaryOrdersState createState() => _AnicllaryOrdersState();
+}
+
+class _AnicllaryOrdersState extends State
+ with SingleTickerProviderStateMixin {
+ TabController _tabController;
+ void initState() {
+ super.initState();
+ _tabController = TabController(length: 2, vsync: this);
+ }
+
+ void dispose() {
+ super.dispose();
+ _tabController.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ onModelReady: (model) => model.getOrders(),
+ builder: (_, model, widget) => AppScaffold(
+ isShowAppBar: true,
+ appBarTitle: TranslationBase.of(context).parking,
+ body: SingleChildScrollView(
+ padding: EdgeInsets.all(12), child: Container())));
+ }
+}
diff --git a/lib/pages/AlHabibMedicalService/ health_calculators.dart b/lib/pages/AlHabibMedicalService/ health_calculators.dart
index 80e0079f..dbd8939c 100644
--- a/lib/pages/AlHabibMedicalService/ health_calculators.dart
+++ b/lib/pages/AlHabibMedicalService/ health_calculators.dart
@@ -66,7 +66,7 @@ class _HealthCalculatorsState extends State
isScrollable: true,
indicatorWeight: 4.0,
indicatorColor: Colors.red,
- labelColor: Theme.of(context).primaryColor,
+ labelColor: Theme.of(context).buttonColor,
labelPadding:
EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0),
unselectedLabelColor: Colors.grey,
@@ -74,13 +74,15 @@ class _HealthCalculatorsState extends State
Container(
width: MediaQuery.of(context).size.width * 0.35,
child: Center(
- child: Texts(TranslationBase.of(context).generalHealth),
+ child: Texts(
+ TranslationBase.of(context).generalHealth),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.35,
child: Center(
- child: Texts(TranslationBase.of(context).womanHealth),
+ child:
+ Texts(TranslationBase.of(context).womanHealth),
),
),
],
@@ -119,7 +121,8 @@ class _HealthCalculatorsState extends State
child: MedicalProfileItem(
title: TranslationBase.of(context).bmi,
imagePath: 'bmi_health_calculator.png',
- subTitle: TranslationBase.of(context).calcHealth,
+ subTitle:
+ TranslationBase.of(context).calcHealth,
),
),
),
@@ -137,7 +140,8 @@ class _HealthCalculatorsState extends State
child: MedicalProfileItem(
title: TranslationBase.of(context).calories,
imagePath: 'calories-calculator.png',
- subTitle: TranslationBase.of(context).calcHealth,
+ subTitle:
+ TranslationBase.of(context).calcHealth,
),
),
),
@@ -159,7 +163,8 @@ class _HealthCalculatorsState extends State
child: MedicalProfileItem(
title: TranslationBase.of(context).bmr,
imagePath: 'BMR_calculator.png',
- subTitle: TranslationBase.of(context).calcHealth,
+ subTitle:
+ TranslationBase.of(context).calcHealth,
),
),
),
@@ -215,9 +220,11 @@ class _HealthCalculatorsState extends State
);
},
child: MedicalProfileItem(
- title: TranslationBase.of(context).carbohydrate,
+ title:
+ TranslationBase.of(context).carbohydrate,
imagePath: 'carb_protein.png',
- subTitle: TranslationBase.of(context).proteinFat,
+ subTitle:
+ TranslationBase.of(context).proteinFat,
),
),
),
diff --git a/lib/pages/Blood/blood_donation.dart b/lib/pages/Blood/blood_donation.dart
index 76ad2e1d..adff790c 100644
--- a/lib/pages/Blood/blood_donation.dart
+++ b/lib/pages/Blood/blood_donation.dart
@@ -101,7 +101,7 @@ class _BloodDonationPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -124,7 +124,7 @@ class _BloodDonationPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -148,7 +148,7 @@ class _BloodDonationPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -228,7 +228,7 @@ class _BloodDonationPageState extends State {
children: [
Center(
child: Container(
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
width: 350,
child: InkWell(
onTap: () {
diff --git a/lib/pages/Blood/my_balance_page.dart b/lib/pages/Blood/my_balance_page.dart
index 26665c2b..06bd50f6 100644
--- a/lib/pages/Blood/my_balance_page.dart
+++ b/lib/pages/Blood/my_balance_page.dart
@@ -48,11 +48,11 @@ class MyBalancePage extends StatelessWidget {
children: [
Texts(
TranslationBase.of(context).totalBalance,
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
),
Texts(
'${model.totalAdvanceBalanceAmount ?? 0} SAR',
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
bold: true,
),
],
@@ -68,7 +68,7 @@ class MyBalancePage extends StatelessWidget {
height: 65,
margin: EdgeInsets.only(top: 8),
decoration: BoxDecoration(
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7),
),
diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart
index 733bbe10..63c5e8e1 100644
--- a/lib/pages/BookAppointment/components/SearchByClinic.dart
+++ b/lib/pages/BookAppointment/components/SearchByClinic.dart
@@ -309,13 +309,14 @@ class _SearchByClinicState extends State {
patientDoctorAppointmentListHospital) async {
isProjectLoaded = false;
Navigator.push(
- context,
- FadePage(
- page: SearchResults(
- isLiveCareAppointment: false,
- doctorsList: docList,
- patientDoctorAppointmentListHospital:
- patientDoctorAppointmentListHospital))).then((value) {
+ context,
+ FadePage(
+ page: SearchResults(
+ isLiveCareAppointment: false,
+ doctorsList: docList,
+ patientDoctorAppointmentListHospital:
+ patientDoctorAppointmentListHospital)))
+ .then((value) {
getProjectsList();
});
}
diff --git a/lib/pages/landing/landing_page_pharmcy.dart b/lib/pages/landing/landing_page_pharmcy.dart
index 3dab7c83..04c9bb54 100644
--- a/lib/pages/landing/landing_page_pharmcy.dart
+++ b/lib/pages/landing/landing_page_pharmcy.dart
@@ -147,7 +147,7 @@ class _LandingPagePharmacyState extends State {
PharmacyPage(),
PharmacyCategorisePage(),
// OffersCategorisePage(),
- WishlistPage(),
+ WishlistPage(false),
PharmacyProfilePage(),
// Container(
// child: Text('text'),
diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart
index 851c7729..1952de64 100644
--- a/lib/pages/login/confirm-login.dart
+++ b/lib/pages/login/confirm-login.dart
@@ -658,10 +658,9 @@ class _ConfirmLogin extends State {
SizedBox(
height: 20,
),
- Texts(
- TranslationBase.of(context).verifyWhatsApp,
- fontSize: SizeConfig.textMultiplier * 2,
- )
+ Texts(TranslationBase.of(context).verifyWhatsApp,
+ fontSize: SizeConfig.textMultiplier * 2,
+ color: Colors.black)
],
),
)));
@@ -690,11 +689,10 @@ class _ConfirmLogin extends State {
: SizedBox(
height: 20,
),
- Texts(
- TranslationBase.of(context).verifySMS,
- fontSize: SizeConfig.textMultiplier * 2,
- textAlign: TextAlign.center,
- )
+ Texts(TranslationBase.of(context).verifySMS,
+ fontSize: SizeConfig.textMultiplier * 2,
+ textAlign: TextAlign.center,
+ color: Colors.black)
],
),
)));
@@ -721,10 +719,9 @@ class _ConfirmLogin extends State {
SizedBox(
height: 20,
),
- Texts(
- TranslationBase.of(context).verifyFingerprint,
- fontSize: SizeConfig.textMultiplier * 2,
- )
+ Texts(TranslationBase.of(context).verifyFingerprint,
+ fontSize: SizeConfig.textMultiplier * 2,
+ color: Colors.black)
],
),
)));
@@ -752,10 +749,9 @@ class _ConfirmLogin extends State {
SizedBox(
height: 20,
),
- Texts(
- TranslationBase.of(context).verifyFaceID,
- fontSize: SizeConfig.textMultiplier * 2,
- )
+ Texts(TranslationBase.of(context).verifyFaceID,
+ fontSize: SizeConfig.textMultiplier * 2,
+ color: Colors.black)
],
),
)));
@@ -791,11 +787,10 @@ class _ConfirmLogin extends State {
: SizedBox(
height: 20,
),
- Texts(
- TranslationBase.of(context).moreVerification,
- fontSize: SizeConfig.textMultiplier * 1.8,
- textAlign: TextAlign.center,
- )
+ Texts(TranslationBase.of(context).moreVerification,
+ fontSize: SizeConfig.textMultiplier * 1.8,
+ textAlign: TextAlign.center,
+ color: Colors.black)
],
),
)));
diff --git a/lib/pages/medical/balance/advance_payment_page.dart b/lib/pages/medical/balance/advance_payment_page.dart
index 0d752e9f..6611c779 100644
--- a/lib/pages/medical/balance/advance_payment_page.dart
+++ b/lib/pages/medical/balance/advance_payment_page.dart
@@ -94,7 +94,7 @@ class _AdvancePaymentPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -125,7 +125,7 @@ class _AdvancePaymentPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -168,7 +168,7 @@ class _AdvancePaymentPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -189,7 +189,7 @@ class _AdvancePaymentPageState extends State {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
diff --git a/lib/pages/medical/balance/my_balance_page.dart b/lib/pages/medical/balance/my_balance_page.dart
index 1edbcbf6..8f80eeeb 100644
--- a/lib/pages/medical/balance/my_balance_page.dart
+++ b/lib/pages/medical/balance/my_balance_page.dart
@@ -13,12 +13,15 @@ import 'package:hexcolor/hexcolor.dart';
import 'advance_payment_page.dart';
class MyBalancePage extends StatelessWidget {
-
List imagesInfo = List();
@override
Widget build(BuildContext context) {
- imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png'));
+ imagesInfo.add(ImagesInfo(
+ imageEn:
+ 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png',
+ imageAr:
+ 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png'));
return BaseView(
onModelReady: (model) => model.getPatientAdvanceBalanceAmount(),
builder: (_, model, w) => AppScaffold(
@@ -53,9 +56,9 @@ class MyBalancePage extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
-
Texts(
- '${model.totalAdvanceBalanceAmount ?? 0} '+ TranslationBase.of(context).sar,
+ '${model.totalAdvanceBalanceAmount ?? 0} ' +
+ TranslationBase.of(context).sar,
color: Colors.white,
bold: true,
),
@@ -76,16 +79,16 @@ class MyBalancePage extends StatelessWidget {
height: 65,
margin: EdgeInsets.only(top: 8),
decoration: BoxDecoration(
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
-
Texts(
- '${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} '+TranslationBase.of(context).sar,
+ '${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} ' +
+ TranslationBase.of(context).sar,
bold: true,
),
Texts(model.patientAdvanceBalanceAmountList[index]
@@ -94,7 +97,9 @@ class MyBalancePage extends StatelessWidget {
),
),
),
- SizedBox(height: MediaQuery.of(context).size.height * 0.13 ,)
+ SizedBox(
+ height: MediaQuery.of(context).size.height * 0.13,
+ )
],
),
),
diff --git a/lib/pages/medical/balance/new_text_Field.dart b/lib/pages/medical/balance/new_text_Field.dart
index ad9eb580..6d368a6a 100644
--- a/lib/pages/medical/balance/new_text_Field.dart
+++ b/lib/pages/medical/balance/new_text_Field.dart
@@ -42,38 +42,39 @@ final _mobileFormatter = NumberTextInputFormatter();
class NewTextFields extends StatefulWidget {
NewTextFields(
{Key key,
- this.type,
- this.hintText,
- this.suffixIcon,
- this.autoFocus,
- this.onChanged,
- this.initialValue,
- this.minLines,
- this.maxLines,
- this.inputFormatters,
- this.padding,
- this.focus = false,
- this.maxLengthEnforced = true,
- this.suffixIconColor,
- this.inputAction,
- this.onSubmit,
- this.keepPadding = true,
- this.textCapitalization = TextCapitalization.none,
- this.controller,
- this.keyboardType,
- this.validator,
- this.borderOnlyError = false,
- this.onSaved,
- this.onSuffixTap,
- this.readOnly: false,
- this.maxLength,
- this.prefixIcon,
- this.bare = false,
- this.onTap,
- this.fontSize = 16.0,
- this.fontWeight = FontWeight.w700,
- this.autoValidate = false,
- this.hintColor,this.isEnabled=true})
+ this.type,
+ this.hintText,
+ this.suffixIcon,
+ this.autoFocus,
+ this.onChanged,
+ this.initialValue,
+ this.minLines,
+ this.maxLines,
+ this.inputFormatters,
+ this.padding,
+ this.focus = false,
+ this.maxLengthEnforced = true,
+ this.suffixIconColor,
+ this.inputAction,
+ this.onSubmit,
+ this.keepPadding = true,
+ this.textCapitalization = TextCapitalization.none,
+ this.controller,
+ this.keyboardType,
+ this.validator,
+ this.borderOnlyError = false,
+ this.onSaved,
+ this.onSuffixTap,
+ this.readOnly: false,
+ this.maxLength,
+ this.prefixIcon,
+ this.bare = false,
+ this.onTap,
+ this.fontSize = 16.0,
+ this.fontWeight = FontWeight.w700,
+ this.autoValidate = false,
+ this.hintColor,
+ this.isEnabled = true})
: super(key: key);
final String hintText;
@@ -142,7 +143,6 @@ class _NewTextFieldsState extends State {
super.dispose();
}
-
bool _determineReadOnly() {
if (widget.readOnly != null && widget.readOnly) {
_focusNode.unfocus();
@@ -156,12 +156,11 @@ class _NewTextFieldsState extends State {
Widget build(BuildContext context) {
return AnimatedContainer(
duration: Duration(milliseconds: 300),
- decoration:BoxDecoration(
+ decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
- color: Colors.white),
+ color: Theme.of(context).primaryColor),
child: Container(
margin: EdgeInsets.only(top: 8),
-
child: TextFormField(
enabled: widget.isEnabled,
initialValue: widget.initialValue,
@@ -171,10 +170,10 @@ class _NewTextFieldsState extends State {
textCapitalization: widget.textCapitalization,
onFieldSubmitted: widget.inputAction == TextInputAction.next
? (widget.onSubmit != null
- ? widget.onSubmit
- : (val) {
- _focusNode.nextFocus();
- })
+ ? widget.onSubmit
+ : (val) {
+ _focusNode.nextFocus();
+ })
: widget.onSubmit,
textInputAction: widget.inputAction,
minLines: widget.minLines ?? 1,
@@ -190,45 +189,36 @@ class _NewTextFieldsState extends State {
autofocus: widget.autoFocus ?? false,
validator: widget.validator,
onSaved: widget.onSaved,
-
- style: Theme.of(context)
- .textTheme
- .body2
- .copyWith(fontSize: widget.fontSize, fontWeight: widget.fontWeight),
+ style: Theme.of(context).textTheme.body2.copyWith(
+ fontSize: widget.fontSize, fontWeight: widget.fontWeight),
inputFormatters: widget.keyboardType == TextInputType.phone
? [
- WhitelistingTextInputFormatter.digitsOnly,
- _mobileFormatter,
- ]
+ WhitelistingTextInputFormatter.digitsOnly,
+ _mobileFormatter,
+ ]
: widget.inputFormatters,
decoration: InputDecoration(
labelText: widget.hintText,
- labelStyle: TextStyle(color: Colors.black),
+ labelStyle:
+ TextStyle(color: Theme.of(context).textTheme.bodyText1.color),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
- color: Theme.of(context)
- .errorColor
- .withOpacity(0.5),
+ color: Theme.of(context).errorColor.withOpacity(0.5),
width: 1.0),
borderRadius: BorderRadius.circular(12.0)),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
- color: Theme.of(context)
- .errorColor
- .withOpacity(0.5),
+ color: Theme.of(context).errorColor.withOpacity(0.5),
width: 1.0),
borderRadius: BorderRadius.circular(8.0)),
focusedBorder: OutlineInputBorder(
- borderSide:
- BorderSide(color: Colors.white, width: 1.0),
+ borderSide: BorderSide(color: Colors.white, width: 1.0),
borderRadius: BorderRadius.circular(12)),
disabledBorder: OutlineInputBorder(
- borderSide:
- BorderSide(color: Colors.white, width: 1.0),
+ borderSide: BorderSide(color: Colors.white, width: 1.0),
borderRadius: BorderRadius.circular(12)),
enabledBorder: OutlineInputBorder(
- borderSide:
- BorderSide(color: Colors.white, width: 1.0),
+ borderSide: BorderSide(color: Colors.white, width: 1.0),
borderRadius: BorderRadius.circular(12),
),
),
diff --git a/lib/pages/pharmacies/compare.dart b/lib/pages/pharmacies/compare.dart
index d1872187..505533cb 100644
--- a/lib/pages/pharmacies/compare.dart
+++ b/lib/pages/pharmacies/compare.dart
@@ -196,7 +196,9 @@ class _slideDetailState extends State {
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
- text: widget.data[index].specifications[0].name,
+ text: widget.data[index].specifications != null ?
+ widget.data[index].specifications[0].name :
+ "No data",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black,
@@ -211,7 +213,9 @@ class _slideDetailState extends State {
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
- text: widget.data[index].specifications[1].name,
+ text: widget.data[index].specifications != null ?
+ widget.data[index].specifications[1].name :
+ "No data",
style: TextStyle(
color: Colors.black54,
fontSize: 15,
@@ -234,7 +238,9 @@ class _slideDetailState extends State {
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
- text: widget.data[index].specifications[2].name,
+ text:widget.data[index].specifications != null ?
+ widget.data[index].specifications[2].name :
+ "No data",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black,
@@ -249,7 +255,9 @@ class _slideDetailState extends State {
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
- text: widget.data[index].specifications[3].name,
+ text: widget.data[index].specifications != null ?
+ widget.data[index].specifications[3].name :
+ "No data",
style: TextStyle(
color: Colors.black54,
fontSize: 15,
@@ -272,7 +280,9 @@ class _slideDetailState extends State {
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
- text: widget.data[index].specifications[4].name,
+ text:widget.data[index].specifications != null ?
+ widget.data[index].specifications[4].name :
+ "No data",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black,
@@ -287,7 +297,9 @@ class _slideDetailState extends State {
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
- text: widget.data[index].specifications[5].name,
+ text:widget.data[index].specifications != null ?
+ widget.data[index].specifications[5].name :
+ "No data",
style: TextStyle(
color: Colors.black54,
fontSize: 15,
diff --git a/lib/pages/pharmacies/product-brands.dart b/lib/pages/pharmacies/product-brands.dart
index 6dbfde46..945fbda1 100644
--- a/lib/pages/pharmacies/product-brands.dart
+++ b/lib/pages/pharmacies/product-brands.dart
@@ -1,3 +1,6 @@
+import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/pages/final_products_page.dart';
+import 'package:diplomaticquarterapp/pages/login/register-info.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/brand_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
@@ -52,7 +55,7 @@ class _ProductBrandsPageState extends State {
height: 220,
width: double.infinity,
color: Colors.white,
- child: topBrand(),
+ child: topBrand(context),
),
SizedBox(
height: 10,
@@ -93,7 +96,7 @@ class _ProductBrandsPageState extends State {
height: 10,
),
Container(
- height: 230,
+ height: 290,
width: double.infinity,
color: Colors.white,
child: ListView.builder(
@@ -117,7 +120,14 @@ class _ProductBrandsPageState extends State {
),
),
onTap: () {
- print("ENAD");
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => FinalProductsPage(
+ id: model.brandsListList[index].id
+ .toString(),
+ )),
+ );
},
);
}),
@@ -130,7 +140,7 @@ class _ProductBrandsPageState extends State {
}
}
-topBrand() {
+topBrand(BuildContext context) {
return BaseView(
onModelReady: (model) => model.getTopBrandsData(),
builder: (_, model, wi) => GridView.count(
@@ -173,7 +183,13 @@ topBrand() {
),
),
onTap: () {
- print("ENAD");
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => FinalProductsPage(
+ id: model.topBrandsListList[index].id.toString(),
+ )),
+ );
},
),
],
diff --git a/lib/pages/pharmacies/product_detail.dart b/lib/pages/pharmacies/product_detail.dart
index 7df95d5b..c119f468 100644
--- a/lib/pages/pharmacies/product_detail.dart
+++ b/lib/pages/pharmacies/product_detail.dart
@@ -1,9 +1,13 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.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/login/welcome.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.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:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
@@ -19,8 +23,7 @@ int price = 0;
var languageID;
bool isOverQuantity = false;
bool isInWishlit = false;
-var itemID;
-var product;
+String itemID;
var customerId;
CompareList compareItems = new CompareList();
PharmacyProduct specificationData;
@@ -38,16 +41,48 @@ class __ProductDetailPageState extends State {
bool isReviews = false;
bool isAvailabilty = false;
dynamic wishlistItems;
+ var model;
+ // String ProductId="4561";
+ String productId = "";
+ checkWishlist() async {
+ GifLoaderDialogUtils.showMyDialog(context);
+ ProductDetailViewModel x = new ProductDetailViewModel();
+ await x.checkWishlistData();
+// isInWishlit = x.wishListItems.map((e) => e.id.toString()).toList().contains(itemID);
+
+ for (int i = 0; i < x.wishListItems.length; i++) {
+ if (itemID == x.wishListItems[i].product.id) {
+ isInWishlit = true;
+ break;
+ } else {
+ isInWishlit = false;
+ }
+ }
+ GifLoaderDialogUtils.hideDialog(context);
+ setState(() {});
+ }
void initState() {
price = 1;
specificationData = widget.product;
- setState(() {
- customerId = userInfo(widget.product.id, widget.product);
- });
+ userInfo();
super.initState();
}
+ void userInfo() async {
+ print(specificationData);
+ customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
+ if (customerId != null) {
+ itemID = widget.product.id;
+ checkWishlist();
+// getSpecificationData(itemID);
+ }
+ print("customerId:$customerId");
+
+ setState(() {});
+// getSpecificationData(itemID);
+ }
+
Widget build(BuildContext context) {
return customerId != null
? DetailPageScafold(
@@ -161,7 +196,7 @@ class __ProductDetailPageState extends State {
),
Container(
width: 500,
- margin: EdgeInsets.only(bottom: 100),
+ margin: EdgeInsets.only(bottom: 6),
// height: 350,
color: Colors.white,
child: Column(
@@ -266,60 +301,89 @@ class __ProductDetailPageState extends State {
? Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- child: Text(
- TranslationBase.of(context).description,
- style: TextStyle(
- fontSize: 17,
- color: Colors.grey,
- fontWeight: FontWeight.w600),
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Container(
+ child: Text(
+ TranslationBase.of(context)
+ .description,
+ style: TextStyle(
+ fontSize: 17,
+ color: Colors.grey,
+ fontWeight: FontWeight.w600),
+ ),
),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- child: Text(
- languageID == 'ar'
- ? widget.product.shortDescriptionn
- : widget.product.shortDescription ??
- "",
- style: TextStyle(
- fontSize: 16,
- fontFamily: 'WorkSans-Regular'),
+ SizedBox(
+ height: 10,
),
- ),
- 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: 15,
),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- child: Text(
- languageID == 'ar'
- ? widget.product.fullDescriptionn
- : widget.product.fullDescription,
- style: TextStyle(
- fontSize: 16,
- fontFamily: 'WorkSans-Regular'),
+ Container(
+ child: Text(
+ languageID == 'ar'
+ ? widget.product.fullDescriptionn
+ : widget.product
+ .fullDescription ??
+ "",
+ style: TextStyle(
+ fontSize: 16,
+ fontFamily: 'WorkSans-Regular'),
+ ),
),
- ),
- ],
- ),
+ SizedBox(
+ height: 20,
+ ),
+ ]),
)
+
+// 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,
+// ),
+// Divider(
+// height: 2,
+// color: Colors.grey),
+// SizedBox(
+// height: 10,
+// ),
+// Container(
+// child: Text(
+// languageID == 'ar'
+// ? widget.product.shortDescriptionn
+// : widget.product.shortDescription,
+// style: TextStyle(
+// fontSize: 16,
+// fontFamily: 'WorkSans-Regular'),
+// ),
+// ),
+ // ],
+ // ),
+ // )
: isReviews
? BaseView(
onModelReady: (model) =>
@@ -537,7 +601,248 @@ class __ProductDetailPageState extends State {
],
),
),
-// ListView(scrollDirection: Axis.vertical, shrinkWrap: true, children: [Text('ENAD')]),
+ Row(
+ children: [
+// Container(
+// width: 500,
+// height: 100,
+// margin: EdgeInsets.only(bottom: 100),
+// color: Colors.white,
+// child: Text("ENAD TEST"),
+// ),
+ Container(
+ width: 410,
+ height: 50,
+ // margin: EdgeInsets.only(bottom: 5),
+ color: Colors.white,
+ child: Texts(
+ TranslationBase.of(context).recommended,
+ bold: true,
+ ),
+ ),
+
+ ],
+ ),
+ SingleChildScrollView(
+ child: Container(
+ color: Colors.white,
+ child: Column(
+ // crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.start,
+// mainAxisSize: MainAxisSize.min,
+ children: [
+ Container(
+ color: Colors.white,
+ height: 210,
+ margin: EdgeInsets.only(bottom: 75),
+ padding: EdgeInsets.only(bottom: 5),
+ // margin: EdgeInsets.symmetric(horizontal: 6, vertical: 4),
+ child: BaseView(
+ onModelReady: (model) =>
+ model.getRecommendedProducts(widget.product.id.toString()),
+ builder: (_, model, wi) =>
+ Container(
+ child:
+// Text(model.recommendedProductList[0].id),
+ model.recommendedProductList.length != null
+ ? Expanded(
+ child: ListView.builder(
+ scrollDirection: Axis.horizontal,
+ shrinkWrap: true,
+ 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: 0,
+ ),
+ 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
+ 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: 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(
+ languageID == "ar"
+ ? model.recommendedProductList[index].namen
+ : 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,
+ ),
+ ),
+ ],
+ ),
+ ),
+ 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: 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(
+// child: Text("NO DATA"),
+ ),
+ )
+
+ ),
+ ),
+ ],
+ ),
+ ),
+ )
],
),
),
@@ -768,6 +1073,39 @@ class __ProductDetailPageState extends State {
fontWeight: FontWeight.w600),
),
),
+ SizedBox(
+ height: 6,
+ ),
+ Divider(height: 1, color: Colors.grey),
+ 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),
+ ),
+ ),
+ SizedBox(
+ height: 6,
+ ),
+ Divider(height: 2, color: Colors.grey),
SizedBox(
height: 10,
),
@@ -1394,7 +1732,9 @@ class _footerWidgetState extends State {
},
),
),
- !widget.isAvailble && price > 0 || price > widget.quantityLimit
+ !widget.isAvailble && price > 0 ||
+ price > widget.quantityLimit ||
+ widget.item.rxMessage != null
? Container(
width: 190,
height: 46,
@@ -1431,7 +1771,9 @@ class _footerWidgetState extends State {
SizedBox(
width: 5,
),
- !widget.isAvailble && price > 0 || price > widget.quantityLimit
+ !widget.isAvailble && price > 0 ||
+ price > widget.quantityLimit ||
+ widget.item.rxMessage != null
? Container(
width: 120,
height: 46,
@@ -1498,7 +1840,7 @@ class _productNameAndPriceState extends State {
child: Row(
children: [
Text(
- widget.item.price.toString(),
+ widget.item.price.toString() + " " + "SAR",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30),
),
SizedBox(
@@ -1543,27 +1885,24 @@ class _productNameAndPriceState extends State {
color: Colors.grey,
borderRadius: BorderRadius.circular(30),
),
- child: !isInWishlit
- ? IconButton(
- icon: Icon(Icons.favorite_border),
- color: Colors.white,
- onPressed: () {
- setState(() {
- addToWishlistFunction(widget.item.id);
- });
-// MyStatelessWidget();
- },
- )
- : IconButton(
- icon: Icon(Icons.favorite),
- color: Colors.red,
- onPressed: () {
- setState(() {
- deleteFromWishlistFunction(widget.item.id);
- });
-// MyStatelessWidget();
- },
- )),
+ child: IconButton(
+ icon: Icon(!isInWishlit
+ ? Icons.favorite_border
+ : Icons.favorite),
+ color: !isInWishlit ? Colors.white : Colors.red,
+ onPressed: () async {
+ if (customerId != null) {
+ if (!isInWishlit) {
+ await addToWishlistFunction(widget.item.id);
+ } else {
+ await deleteFromWishlistFunction(widget.item.id);
+ }
+ } else {
+ return;
+ }
+ setState(() {});
+ },
+ )),
],
),
),
@@ -1630,135 +1969,6 @@ class _productNameAndPriceState extends State {
}
}
-//productNameAndPrice(BuildContext context, item) {
-// return Column(
-// mainAxisAlignment: MainAxisAlignment.start,
-// children: [
-// Padding(
-// padding: const EdgeInsets.all(8.0),
-// child: Row(
-// children: [
-// Text(
-// item.price.toString(),
-// style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30),
-// ),
-// SizedBox(
-// width: 40,
-// ),
-// Text(
-// item.stockAvailability,
-// style: item.stockAvailability == 'Out of stock'
-// ? TextStyle(fontWeight: FontWeight.bold, color: Colors.red)
-// : TextStyle(fontWeight: FontWeight.bold, color: Colors.green),
-// ),
-// SizedBox(width: 20),
-// item.stockAvailability == 'Out of stock'
-// ? Text(
-// TranslationBase.of(context).notifyMe,
-// style: TextStyle(
-// color: Colors.blue,
-// decoration: TextDecoration.underline,
-// ),
-// )
-// : Container(),
-// item.stockAvailability == 'Out of stock'
-// ? Icon(
-// FontAwesomeIcons.bell,
-// color: Colors.blue,
-// size: 15.0,
-// )
-// : Container(),
-//
-// Container(
-// margin: languageID=='ar' ? EdgeInsets.only(right: 25) : EdgeInsets.only(left: 25),
-// width: 40,
-// height: 40,
-// decoration: BoxDecoration(
-// color: Colors.grey,
-// borderRadius: BorderRadius.circular(30),
-// ),
-// child: !isInWishlit ?IconButton(
-// icon: Icon(Icons.favorite_border),
-// color: Colors.white,
-// onPressed: () {
-// addToWishlistFunction(item.id);
-//// MyStatelessWidget();
-//
-// },
-// ):IconButton(
-// icon: Icon(Icons.favorite),
-// color: Colors.red,
-// onPressed: () {
-// deleteFromWishlistFunction(item.id);
-//// MyStatelessWidget();
-//
-// },
-// )
-// ),
-//
-// ],
-// ),
-// ),
-// Padding(
-// padding: const EdgeInsets.all(8.0),
-// child: Container(
-// margin: EdgeInsets.only(left: 5),
-// child: Align(
-// alignment:
-// languageID == 'ar' ? Alignment.topRight : Alignment.topLeft,
-// child: Text(
-// languageID == 'ar' ? item.fullDescriptionn : item.fullDescription,
-// style: TextStyle(fontWeight: FontWeight.bold, fontSize: 15),
-// ),
-// ),
-// ),
-// ),
-// Row(
-// children: [
-// Expanded(
-// flex: 2,
-// child: Container(
-// margin: EdgeInsets.only(right: 150),
-// child: Align(
-// alignment: Alignment.bottomLeft,
-// child: RatingBar.readOnly(
-// initialRating: 3,
-// size: 15.0,
-// filledColor: Colors.yellow[700],
-// emptyColor: Colors.grey[500],
-// isHalfAllowed: true,
-// halfFilledIcon: Icons.star_half,
-// filledIcon: Icons.star,
-// emptyIcon: Icons.star,
-// ),
-// ),
-// ),
-// ),
-// Expanded(
-// flex: 1,
-// child: Container(
-// child: item.rxMessage != null
-// ? Text(
-// languageID == 'ar'
-// ? item.rxMessagen.toString()
-// : item.rxMessage.toString(),
-// style: TextStyle(color: Colors.red, fontSize: 10),
-// )
-// : Container()),
-// ),
-// item.rxMessage != null
-// ? Icon(
-// FontAwesomeIcons.questionCircle,
-// color: Colors.red,
-// size: 15.0,
-// )
-// : Container(),
-// ],
-// ),
-// ],
-// );
-//}
-
slideDetail() {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
@@ -1823,22 +2033,21 @@ addToWishlistFunction(itemID) async {
deleteFromWishlistFunction(itemID) async {
ProductDetailViewModel x = new ProductDetailViewModel();
isInWishlit = false;
- await x.addToWishlistData(itemID);
+ await x.deletWishlistData(itemID);
}
checkWishlist() async {
ProductDetailViewModel x = new ProductDetailViewModel();
await x.checkWishlistData();
+
+// isInWishlit = x.wishListItems.map((e) => e.id.toString()).toList().contains(itemID);
+
for (int i = 0; i < x.wishListItems.length; i++) {
-// print(itemID);
-// print(x.wishListItems[i].product.id);
if (itemID == x.wishListItems[i].product.id) {
isInWishlit = true;
-// print('in wishlist');
break;
} else {
isInWishlit = false;
-// print('not in wishlist');
}
}
}
@@ -1858,8 +2067,8 @@ settingModalBottomSheet(context) {
child: new Wrap(
children: [
new ListTile(
- leading: new Icon(Icons.shopping_cart),
- title: new Text('Add to cart'),
+ leading: Icon(Icons.shopping_cart),
+ title: Text('Add to cart'),
onTap: () => {
if (price > 0)
{addToCartFunction(price, itemID)}
@@ -1869,14 +2078,14 @@ settingModalBottomSheet(context) {
message: "you should add quantity")
}
}),
- new ListTile(
- leading: new Icon(Icons.favorite_border),
- title: new Text('Add to wishlist'),
+ ListTile(
+ leading: Icon(Icons.favorite_border),
+ title: Text('Add to wishlist'),
onTap: () => {addToWishlistFunction(itemID)},
),
- new ListTile(
- leading: new Icon(Icons.compare),
- title: new Text('Compare'),
+ ListTile(
+ leading: Icon(Icons.compare),
+ title: Text('Compare'),
onTap: () => {
Provider.of(context, listen: false)
.addItem(specificationData),
@@ -1887,15 +2096,3 @@ settingModalBottomSheet(context) {
);
});
}
-
-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;
-// getSpecificationData(itemID);
-}
diff --git a/lib/pages/pharmacies/screens/pharmacy_module_page.dart b/lib/pages/pharmacies/screens/pharmacy_module_page.dart
index 394b516b..e4830583 100644
--- a/lib/pages/pharmacies/screens/pharmacy_module_page.dart
+++ b/lib/pages/pharmacies/screens/pharmacy_module_page.dart
@@ -1,31 +1,73 @@
+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';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/BannerPager.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductTileItem.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/manufacturerItem.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart';
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/borderedButton.dart';
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';
-
import '../../final_products_page.dart';
import 'lacum-activitaion-vida-page.dart';
-class PharmacyPage extends StatelessWidget {
+bool isInWishlist = false;
+int price = 0;
+var itemID;
+var product;
+var customerId;
+var item;
+dynamic languageID;
+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 = [];
+ List wishList = [];
+
+ var model;
+// String ProductId="4561";
+ //String id ="3608";
+ String productId = "";
+ String id = "";
@override
void initState() {
-// print("model prescription " + model.prescriptionsList.length);
-// cancelOrderDetail(order)
+ checkWishlist();
+ // userInfo(widget.product.id, widget.product);
+ userInfo(id, product);
+ print("-------------this--------------");
+ print(itemID);
}
@override
@@ -46,7 +88,7 @@ class PharmacyPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BannerPager(model),
- GridViewButtons(model),
+ // GridViewButtons(model),
Container(
margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
child: Row(
@@ -72,9 +114,12 @@ class PharmacyPage extends StatelessWidget {
),
),
Container(
+ height: model.prescriptionsList.length > 0
+ ? MediaQuery.of(context).size.height * 0.28
+ : 0,
padding:
- EdgeInsets.symmetric(horizontal: 16.0, vertical: 24.0),
- height: MediaQuery.of(context).size.height * 0.30,
+ EdgeInsets.symmetric(horizontal: 18.0, vertical: 14.0),
+// height: MediaQuery.of(context).size.height * 0.28,
// width: 200.0,
// height: MediaQuery.of(context).size.height / 4 + 20,
margin: EdgeInsets.only(left: 10),
@@ -88,15 +133,14 @@ class PharmacyPage extends StatelessWidget {
shrinkWrap: true,
physics: ScrollPhysics(),
// physics: NeverScrollableScrollPhysics(),
- // itemCount: 4,
itemCount: model.prescriptionsList.length,
itemBuilder: (context, index) {
return Container(
// width: 160.0,
height:
MediaQuery.of(context).size.height * 0.6,
- padding:
- EdgeInsets.only(bottom: 5.0, left: 5.0),
+ padding: EdgeInsets.only(
+ bottom: 5.0, left: 5.0, right: 8.0),
margin: EdgeInsets.only(right: 10.0),
decoration: BoxDecoration(
border: Border.all(
@@ -117,17 +161,41 @@ class PharmacyPage extends StatelessWidget {
padding: EdgeInsets.only(
top: 10.0,
left: 10.0,
- right: 3.0,
+ right: 10.0,
bottom: 15.0,
),
- child: Image.network(
- model.prescriptionsList[index]
- .doctorImageURL,
- width: 60,
- height: 60,
+ child: CircleAvatar(
+ radius: 30,
+ backgroundColor:
+ Colors.transparent,
+ child: Image.network(
+ model.prescriptionsList[index]
+ .doctorImageURL,
+ width: 60,
+ height: 60,
+ ),
),
),
]),
+// Column(
+// // crossAxisAlignment: CrossAxisAlignment.center,
+// children: [
+// Container(
+// margin: EdgeInsets.only(left: 1),
+// padding: EdgeInsets.only(
+// top: 10.0,
+// left: 10.0,
+// right: 3.0,
+// bottom: 15.0,
+// ),
+// child: Image.network(
+// model.prescriptionsList[index]
+// .doctorImageURL,
+// width: 60,
+// height: 60,
+// ),
+// ),
+// ]),
Column(
// crossAxisAlignment: CrossAxisAlignment.center,
children: [
@@ -148,11 +216,17 @@ class PharmacyPage extends StatelessWidget {
BorderRadius.circular(
30.0)),
child: Text(
- model
- .prescriptionsList[
- index]
- .isInOutPatientDescription
- .toString(),
+ languageID == "ar"
+ ? model
+ .prescriptionsList[
+ index]
+ .isInOutPatientDescriptionN
+ .toString()
+ : model
+ .prescriptionsList[
+ index]
+ .isInOutPatientDescription
+ .toString(),
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
@@ -166,9 +240,14 @@ class PharmacyPage extends StatelessWidget {
height: 30,
),
Text(
- model.prescriptionsList[index]
- .appointmentDate
- .toString(),
+ DateUtil.convertStringToDate(
+ model
+ .prescriptionsList[
+ index]
+ .appointmentDate
+ .toString())
+ .toString()
+ .substring(0, 10),
style: TextStyle(
color: Colors.black,
fontSize: 15.0,
@@ -239,6 +318,10 @@ class PharmacyPage extends StatelessWidget {
child: Align(
alignment: Alignment.topLeft,
child: RatingBar.readOnly(
+ initialRating: model
+ .prescriptionsList[index]
+ .actualDoctorRate
+ .toDouble(),
// initialRating: productRate,
size: 15.0,
filledColor:
@@ -259,36 +342,238 @@ class PharmacyPage extends StatelessWidget {
: Container(),
),
),
- Container(
- margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Texts(
- TranslationBase.of(context).recommended,
- bold: true,
- ),
- BorderedButton(
- TranslationBase.of(context).viewAll,
- hasBorder: true,
- borderColor: Colors.green,
- textColor: Colors.green,
- vPadding: 6,
- hPadding: 4,
- handler: () {},
- ),
- ],
- ),
- ),
- Container(
- height: MediaQuery.of(context).size.height / 4 + 20,
- child: ListView.builder(
- itemBuilder: (ctx, i) =>
- ProductTileItem(model.bestSellerProduct[i]),
- scrollDirection: Axis.horizontal,
- itemCount: model.bestSellerProduct.length,
- ),
- ),
+// Container(
+// margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
+// child: Row(
+// mainAxisAlignment: MainAxisAlignment.spaceBetween,
+// children: [
+// Texts(
+// TranslationBase.of(context).recommended,
+// bold: true,
+// ),
+// BorderedButton(
+// TranslationBase.of(context).viewAll,
+// hasBorder: true,
+// borderColor: Colors.green,
+// textColor: Colors.green,
+// vPadding: 6,
+// hPadding: 4,
+// handler: () {
+// Navigator.push(
+// context,
+// MaterialPageRoute(
+// builder: (context) =>
+// RecommendedProductPage(productId : "2316")));
+// },
+// ),
+// ],
+// ),
+// ),
+// Container(
+// height: model.recommendedProductList.length > 0
+// ? MediaQuery.of(context).size.height * 0.32
+// : 0,
+// 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(productId),
+// builder: (_, model, wi) => model
+// .recommendedProductList.length !=
+// null
+// ? ListView.builder(
+// scrollDirection: Axis.horizontal,
+// shrinkWrap: true,
+// 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: 0,
+// ),
+// 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
+// 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: 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(
+// languageID == "ar"
+// ? model.recommendedProductList[index].namen
+// : 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,
+// ),
+// ),
+// ],
+// ),
+// ),
+// 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: 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(
+//// child: Text("NO DATA"),
+// ),
+// ),
+// ),
Container(
margin: EdgeInsets.fromLTRB(10, 10, 10, 0),
child: Row(
@@ -411,6 +696,49 @@ 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 {
@@ -544,4 +872,41 @@ class GridViewCard extends StatelessWidget {
),
);
}
+
+ String getDate(String date) {
+ DateTime dateObj = DateUtil.convertStringToDate(date);
+ return DateUtil.getWeekDay(dateObj.weekday) +
+ ", " +
+ dateObj.day.toString() +
+ " " +
+ DateUtil.getMonth(dateObj.month) +
+ " " +
+ 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
new file mode 100644
index 00000000..28e3cce3
--- /dev/null
+++ b/lib/pages/pharmacies/screens/recommended-product-page.dart
@@ -0,0 +1,997 @@
+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;
+int price = 0;
+var itemID;
+var product;
+var customerId;
+
+class RecommendedProductPage extends StatefulWidget {
+ String productId ;
+ RecommendedProductPage({this.productId});
+
+ @override
+ _RecommendedProductPageState createState() => _RecommendedProductPageState(productId: productId);
+}
+
+class _RecommendedProductPageState extends State
+ with SingleTickerProviderStateMixin {
+ List recommendedProductList = [];
+ String productId;
+ _RecommendedProductPageState({this.productId});
+ String id = "";
+ 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);
+ }
+
+ // String productId = "4561";
+ // String productId = "";
+
+ @override
+ void initState() {
+ checkWishlist();
+ userInfo(id, product);
+ print("-------------this--------------");
+ print(itemID);
+ }
+
+ @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(productId),
+ builder: (_, model, wi) => AppScaffold(
+ appBarTitle: TranslationBase.of(context).recommended,
+ baseViewModel: model,
+ isShowAppBar: true,
+ isPharmacy: true,
+ backgroundColor: Colors.white,
+ body: SingleChildScrollView(
+ child: 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: 11,
+ ),
+ 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:
+ itemID.contains(e.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: 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(
+ languageID == "ar"
+ ? e.namen
+ : 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
+ .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,
+ ),
+ ),
+ ],
+ ),
+ ),
+ 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,
+// ),
+// ]),
+// ],
+// ),
+// );
+ }),
+ ),
+ ]),
+ ),
+ ),
+ );
+ }
+ 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;
+ }
+
+
+ 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/pharmacies/wishlist.dart b/lib/pages/pharmacies/wishlist.dart
index 822dfe89..000e8404 100644
--- a/lib/pages/pharmacies/wishlist.dart
+++ b/lib/pages/pharmacies/wishlist.dart
@@ -5,6 +5,8 @@ import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
class WishlistPage extends StatefulWidget {
+ bool showBar;
+ WishlistPage(this.showBar);
@override
_WishlistPageState createState() => _WishlistPageState();
}
@@ -17,9 +19,9 @@ class _WishlistPageState extends State {
onModelReady: (model) => model.getWishlistData(),
builder: (_, model, wi) => AppScaffold(
appBarTitle: 'Wishlist page',
- isShowAppBar: false,
+ isShowAppBar: widget.showBar,
isShowDecPage: false,
- isPharmacy: false,
+ isPharmacy: true,
baseViewModel: model,
body: model.wishListList.length == 0
? Container(
diff --git a/lib/pages/pharmacy/order/Order.dart b/lib/pages/pharmacy/order/Order.dart
index 6488b421..2ba92674 100644
--- a/lib/pages/pharmacy/order/Order.dart
+++ b/lib/pages/pharmacy/order/Order.dart
@@ -69,6 +69,7 @@ class _OrderPageState extends State
children: [
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 ea74ed23..2f113e50 100644
--- a/lib/pages/pharmacy/order/OrderDetails.dart
+++ b/lib/pages/pharmacy/order/OrderDetails.dart
@@ -47,7 +47,7 @@ class _OrderDetailsPageState extends State {
var model;
var isCancel = false;
var isRefund = false;
- var isActiveDelivery = true;
+ var isActiveDelivery = false;
var dataIsCancel;
var dataIsRefund;
BuildContext context;
@@ -69,7 +69,14 @@ class _OrderDetailsPageState extends State {
Widget build(BuildContext context) {
this.context = 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,
@@ -150,7 +157,7 @@ class _OrderDetailsPageState extends State {
Text(
model.orderListModel[0].shippingAddress.address1
.toString()
- .substring(9),
+ ,
style: TextStyle(
fontSize: 10.0,
fontWeight: FontWeight.bold,
@@ -167,7 +174,7 @@ class _OrderDetailsPageState extends State {
Text(
model.orderListModel[0].shippingAddress.address2
.toString()
- .substring(9) +
+ +
' ' +
model.orderListModel[0].shippingAddress
.country
@@ -332,43 +339,18 @@ class _OrderDetailsPageState extends State {
itemBuilder: (context, index) {
return Container(
child: productTile(
- productName: model.orderListModel[0]
- .orderItems[index].product.name
- .toString(),
- productPrice: model.orderListModel[0]
- .orderItems[index].product.price
- .toString(),
- productRate: model.orderListModel[0]
- .orderItems[index].product.approvedRatingSum
- .toDouble(),
- productReviews: model
- .orderListModel[0]
- .orderItems[index]
- .product
- .approvedTotalReviews,
- totalPrice:
- "${(model.orderListModel[0].orderItems[index].product.price * model.orderListModel[0].orderItems[index].quantity).toStringAsFixed(2)}",
- qyt: model.orderListModel[0].orderItems[index]
- .quantity
- .toString(),
+ productName: model.orderListModel[0].orderItems[index].product.name.toString(),
+ productPrice: model.orderListModel[0].orderItems[index].product.price.toString(),
+ productRate: model.orderListModel[0].orderItems[index].product.approvedRatingSum.toDouble(),
+ productReviews: model.orderListModel[0].orderItems[index].product.approvedTotalReviews,
+ totalPrice: "${(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
- ? model.orderListModel[0].orderItems[index]
- .product.images[0].src
- .toString()
- : null,
+ imgs: model.orderListModel[0].orderItems[index].product.images != null &&
+ model.orderListModel[0].orderItems[index].product.images.length != 0
+ ? model.orderListModel[0].orderItems[index].product.images[0].src.toString() : null,
status: model.orderListModel[0].orderStatusId,
- product: model.orderListModel[0]
- .orderItems[index].product,
+ product: model.orderListModel[0].orderItems[index].product,
),
);
}),
@@ -770,6 +752,10 @@ class _OrderDetailsPageState extends State {
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");
}
}
}
diff --git a/lib/pages/pharmacy/profile/profile.dart b/lib/pages/pharmacy/profile/profile.dart
index 9c32b23f..cd5c6ec7 100644
--- a/lib/pages/pharmacy/profile/profile.dart
+++ b/lib/pages/pharmacy/profile/profile.dart
@@ -115,22 +115,39 @@ class _ProfilePageState extends State {
bottom: 10.0,
),
child: LargeAvatar(
- name: "profile",
+ name: user.firstName.toString(),
url: '',
),
),
- Text(
- languageID == "ar"
- ? user.firstNameN.toString() +
- " " +
- user.lastNameN.toString()
- : user.firstName.toString() +
- " " +
- user.lastName.toString(),
- style: TextStyle(
- fontSize: 14.0,
- fontWeight: FontWeight.bold),
- ),
+ Column(children: [
+ Row(children: [
+ Text(
+ TranslationBase.of(context)
+ .welcome,
+ style: TextStyle(
+ fontSize: 14.0,
+ fontWeight: FontWeight.bold,
+ color: Colors.grey),
+ ),
+ ]),
+ SizedBox(
+ height: 10,
+ ),
+ Row(children: [
+ Text(
+ languageID == "ar"
+ ? user.firstNameN.toString() +
+ " " +
+ user.lastNameN.toString()
+ : user.firstName.toString() +
+ " " +
+ user.lastName.toString(),
+ style: TextStyle(
+ fontSize: 14.0,
+ fontWeight: FontWeight.bold),
+ ),
+ ]),
+ ]),
],
),
)
@@ -215,8 +232,11 @@ class _ProfilePageState extends State {
Expanded(
child: InkWell(
onTap: () {
- Navigator.push(context,
- FadePage(page: WishlistPage()));
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) =>
+ WishlistPage(true)));
},
child: Column(
children: [
diff --git a/lib/services/pharmacy_services/product_detail_service.dart b/lib/services/pharmacy_services/product_detail_service.dart
index e3e8403e..276151a7 100644
--- a/lib/services/pharmacy_services/product_detail_service.dart
+++ b/lib/services/pharmacy_services/product_detail_service.dart
@@ -88,7 +88,7 @@ class ProductDetailService extends BaseService {
"language_id": 1
}
};
- await baseAppClient.post(GET_SHOPPING_CART,
+ await baseAppClient.pharmacyPost(GET_SHOPPING_CART,
onSuccess: (dynamic response, int statusCode) {
_addToCartModel.clear();
response['shopping_carts'].forEach((item) {
@@ -121,7 +121,7 @@ class ProductDetailService extends BaseService {
request = {
"shopping_cart_item": {"quantity": 1, "shopping_cart_type": "Wishlist", "product_id": itemID, "customer_id": customerId, "language_id": 1}
};
- await baseAppClient.post(GET_SHOPPING_CART,
+ await baseAppClient.pharmacyPost(GET_SHOPPING_CART,
onSuccess: (dynamic response, int statusCode) {
_wishListProducts.clear();
response['shopping_carts'].forEach((item) {
@@ -172,6 +172,7 @@ class ProductDetailService extends BaseService {
_productSpecification.clear();
response['specification'].forEach((item) {
_productSpecification.add(SpecificationModel.fromJson(item));
+ print(_productSpecification);
});
}, onFailure: (String error, int statusCode) {
hasError = true;
diff --git a/lib/services/pharmacy_services/recommendedProduct_service.dart b/lib/services/pharmacy_services/recommendedProduct_service.dart
new file mode 100644
index 00000000..ad7222f8
--- /dev/null
+++ b/lib/services/pharmacy_services/recommendedProduct_service.dart
@@ -0,0 +1,40 @@
+import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
+import 'package:diplomaticquarterapp/core/model/pharmacies/recommendedProduct_model.dart';
+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';
+
+
+
+
+class RecommendedProductService extends BaseService{
+ AppSharedPreferences sharedPref = AppSharedPreferences();
+ AppGlobal appGlobal = new AppGlobal();
+ AuthenticatedUser authUser = new AuthenticatedUser();
+ AuthProvider authProvider = new AuthProvider();
+
+ List _recommendedProductList = List();
+ List get recommendedList => _recommendedProductList;
+ String url ="";
+
+ Future getRecommendedProducts(productId) async {
+ hasError = false;
+ 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);
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ });
+ }}
\ No newline at end of file
diff --git a/lib/theme/theme_value.dart b/lib/theme/theme_value.dart
index 9f26bb6f..129174ee 100644
--- a/lib/theme/theme_value.dart
+++ b/lib/theme/theme_value.dart
@@ -36,6 +36,7 @@ defaultTheme({fontName}) {
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Color(0xffffffff),
+ buttonColor: Colors.black,
toggleableActiveColor: secondaryColor,
indicatorColor: secondaryColor,
bottomSheetTheme:
@@ -86,6 +87,7 @@ invertThemes({fontName}) {
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Color(0xff515A5D),
+ buttonColor: Colors.black,
toggleableActiveColor: secondaryColor,
indicatorColor: secondaryColor,
bottomSheetTheme:
diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart
index 9b52b54d..e02453a6 100644
--- a/lib/uitl/translations_delegate_base.dart
+++ b/lib/uitl/translations_delegate_base.dart
@@ -1393,13 +1393,10 @@ class TranslationBase {
localizedValues["convertBloodSugarStatement"][locale.languageCode];
String get convertFrom => localizedValues["convertFrom"][locale.languageCode];
String get result => localizedValues["result"][locale.languageCode];
- String get bloodSugarConversion =>
- localizedValues["bloodSugarConversion"][locale.languageCode];
- String get convertCholesterolStatement =>
- localizedValues["convertCholesterolStatement"][locale.languageCode];
- String get triglyceridesConvertStatement =>
- localizedValues["triglyceridesConvertStatement"][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];
String get bloodDEnterDesc =>
localizedValues["bloodD-enter-desc"][locale.languageCode];
String get viewTermsConditions =>
@@ -1573,6 +1570,8 @@ class TranslationBase {
String get shippingAddresss =>
localizedValues["shipping-address"][locale.languageCode];
String get covidAlert => localizedValues["covid-alert"][locale.languageCode];
+ String get anicllaryOrders =>
+ localizedValues["ancillary-orders"][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate {
diff --git a/lib/widgets/bottom_navigation/bottom_navigation_item.dart b/lib/widgets/bottom_navigation/bottom_navigation_item.dart
index 391b6a3d..9a3bbafe 100644
--- a/lib/widgets/bottom_navigation/bottom_navigation_item.dart
+++ b/lib/widgets/bottom_navigation/bottom_navigation_item.dart
@@ -18,7 +18,8 @@ class BottomNavigationItem extends StatelessWidget {
final int currentIndex;
final String name;
- AuthenticatedUserObject authenticatedUserObject = locator();
+ AuthenticatedUserObject authenticatedUserObject =
+ locator();
BottomNavigationItem(
{this.icon,
@@ -52,7 +53,7 @@ class BottomNavigationItem extends StatelessWidget {
child: Icon(currentIndex == index ? activeIcon : icon,
color: currentIndex == index
? secondaryColor
- : Theme.of(context).dividerColor,
+ : Colors.grey,
size: 22.0),
),
SizedBox(
diff --git a/lib/widgets/buttons/secondary_button.dart b/lib/widgets/buttons/secondary_button.dart
index 8884039b..b5a4655a 100644
--- a/lib/widgets/buttons/secondary_button.dart
+++ b/lib/widgets/buttons/secondary_button.dart
@@ -22,7 +22,7 @@ class SecondaryButton extends StatefulWidget {
this.label = "",
this.icon,
this.iconOnly = false,
- this.color ,
+ this.color,
this.textColor = Colors.white,
this.onTap,
this.loading: false,
@@ -144,8 +144,10 @@ class _SecondaryButtonState extends State
onTapCancel: () {
_animationController.forward();
},
- onTap: () =>{ widget.disabled ? null : widget.onTap(), },
- // onTap: widget.disabled?null:Feedback.wrapForTap(widget.onTap, context),
+ onTap: () => {
+ widget.disabled ? null : widget.onTap(),
+ },
+ // onTap: widget.disabled?null:Feedback.wrapForTap(widget.onTap, context),
behavior: HitTestBehavior.opaque,
child: Transform.scale(
scale: _buttonSize,
@@ -177,8 +179,9 @@ class _SecondaryButtonState extends State
width: MediaQuery.of(context).size.width,
height: 100,
decoration: BoxDecoration(
- color: widget.disabled? Colors.grey: widget.color ?? Theme.of(context).primaryColor,
- ),
+ color: widget.disabled
+ ? Colors.grey
+ : widget.color ?? Theme.of(context).buttonColor),
),
),
Positioned(
@@ -191,7 +194,9 @@ class _SecondaryButtonState extends State
height: MediaQuery.of(context).size.width * 2.2,
decoration: BoxDecoration(
shape: BoxShape.circle,
- color: widget.disabled? Colors.grey: widget.color ?? Theme.of(context).primaryColor,
+ color: widget.disabled
+ ? Colors.grey
+ : widget.color ?? Theme.of(context).buttonColor,
),
),
),
@@ -237,8 +242,10 @@ class _SecondaryButtonState extends State
style: TextStyle(
color: widget.textColor,
fontSize: widget.small ? 12.0 : 15.0,
- // fontWeight: FontWeight.w800,
- fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'),
+ // fontWeight: FontWeight.w800,
+ fontFamily: projectViewModel.isArabic
+ ? 'Cairo'
+ : 'WorkSans'),
),
)
],
diff --git a/lib/widgets/data_display/services)contaniner.dart b/lib/widgets/data_display/services)contaniner.dart
index 91b0b59d..cb0b3774 100644
--- a/lib/widgets/data_display/services)contaniner.dart
+++ b/lib/widgets/data_display/services)contaniner.dart
@@ -15,7 +15,7 @@ class ServicesContainer extends StatelessWidget {
height: 60,
margin: EdgeInsets.all(8),
decoration: BoxDecoration(
- color: Colors.white,
+ color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7),
),
diff --git a/lib/widgets/data_display/text.dart b/lib/widgets/data_display/text.dart
index 9797defb..40aabfe3 100644
--- a/lib/widgets/data_display/text.dart
+++ b/lib/widgets/data_display/text.dart
@@ -203,7 +203,10 @@ class _TextsState extends State {
Stack(
children: [
Text(
- !hidden ? text : (text.substring(0,
+ !hidden
+ ? text
+ : (text.substring(
+ 0,
text.length > widget.maxLength
? widget.maxLength
: text.length)),
@@ -217,13 +220,16 @@ class _TextsState extends State {
style: widget.style != null
? _getFontStyle().copyWith(
fontStyle: widget.italic ? FontStyle.italic : null,
- color: widget.color != null ? widget.color : null,
+ color: widget.color != null
+ ? widget.color
+ : Theme.of(context).textTheme.bodyText1.color,
fontWeight: widget.fontWeight ?? _getFontWeight(),
)
: TextStyle(
decoration: widget.decoration,
fontStyle: widget.italic ? FontStyle.italic : null,
- color: widget.color ?? Colors.black,
+ color: widget.color ??
+ Theme.of(context).textTheme.bodyText1.color,
fontSize: widget.fontSize ?? _getFontSize(),
letterSpacing: widget.variant == "overline" ? 1 : null,
fontWeight: widget.fontWeight ?? _getFontWeight(),
diff --git a/lib/widgets/others/app_scaffold_pharmacy_widget.dart b/lib/widgets/others/app_scaffold_pharmacy_widget.dart
index c3bd8a47..001bc955 100644
--- a/lib/widgets/others/app_scaffold_pharmacy_widget.dart
+++ b/lib/widgets/others/app_scaffold_pharmacy_widget.dart
@@ -93,7 +93,7 @@ class PharmacyAppScaffold extends StatelessWidget {
)
: buildBodyWidget(),
bottomSheet: bottomSheet,
- floatingActionButton: floatingActionButton ?? floatingActionButton,
+ // floatingActionButton: floatingActionButton ?? floatingActionButton,
// bottomNavigationBar:
// this.isBottomBar == true ? BottomBarSearch() : SizedBox()
// floatingActionButton: FloatingSearchButton(),
@@ -105,7 +105,7 @@ class PharmacyAppScaffold extends StatelessWidget {
}
buildBodyWidget() {
- // return body; //Stack(children: [body, buildAppLoaderWidget(isLoading)]);
- return Stack(children: [body, FloatingSearchButton()]);
+ return body; //Stack(children: [body, buildAppLoaderWidget(isLoading)]);
+ //return Stack(children: [body, FloatingSearchButton()]);
}
}
diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart
index bcd74ed1..6619de79 100644
--- a/lib/widgets/others/app_scaffold_widget.dart
+++ b/lib/widgets/others/app_scaffold_widget.dart
@@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
+import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-page.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@@ -172,7 +173,10 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget {
icon: Icon(Icons.shopping_cart),
color: Theme.of(context).textTheme.headline1.color,
onPressed: () {
- Navigator.of(context).popUntil(ModalRoute.withName('/'));
+ Navigator.push(
+ context,
+ MaterialPageRoute(builder: (context) => CartOrderPage()),
+ );
})
: Container(),
IconButton(
diff --git a/lib/widgets/pharmacy/bottom_nav_pharmacy_item.dart b/lib/widgets/pharmacy/bottom_nav_pharmacy_item.dart
index 9d46e2eb..47ff1b23 100644
--- a/lib/widgets/pharmacy/bottom_nav_pharmacy_item.dart
+++ b/lib/widgets/pharmacy/bottom_nav_pharmacy_item.dart
@@ -1,3 +1,4 @@
+import 'package:diplomaticquarterapp/Constants.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/material.dart';
@@ -48,9 +49,8 @@ class BottomNavPharmacyItem extends StatelessWidget {
),
Container(
child: Icon(currentIndex == index ? activeIcon : icon,
- color: currentIndex == index
- ? Theme.of(context).primaryColor
- : Theme.of(context).primaryColor,
+ color:
+ currentIndex == index ? secondaryColor : Colors.grey,
size: 22.0),
),
SizedBox(
@@ -61,9 +61,7 @@ class BottomNavPharmacyItem extends StatelessWidget {
Texts(
title,
textAlign: TextAlign.center,
- color: currentIndex == index
- ? Theme.of(context).primaryColor
- : Theme.of(context).primaryColor,
+ color: currentIndex == index ? secondaryColor : Colors.grey,
fontSize: 11,
),
],
diff --git a/lib/widgets/pharmacy/product_tile.dart b/lib/widgets/pharmacy/product_tile.dart
index 23eb0f0e..ee6c1d81 100644
--- a/lib/widgets/pharmacy/product_tile.dart
+++ b/lib/widgets/pharmacy/product_tile.dart
@@ -66,8 +66,8 @@ class productTile extends StatelessWidget {
)
: Container(
margin: EdgeInsets.only(left: 10),
- child: Image.asset(
- "assets/images/no_image.png",
+ child: Image.network(
+ productImage,
width: 80,
height: 80,
)
diff --git a/pubspec.yaml b/pubspec.yaml
index 4bdf1476..d84fb953 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -28,7 +28,7 @@ dependencies:
#Dependency Injection
get_it: ^4.0.2
-
+
#chart
fl_chart: ^0.12.1
@@ -166,10 +166,11 @@ dependencies:
after_layout: ^1.0.7
twilio_programmable_video: ^0.5.0+3
cached_network_image: ^2.4.1
- flutter_tts:
+ flutter_tts:
path: flutter_tts-voice_enhancement
# flutter_tts: ^1.2.6
sms_otp_auto_verify: ^1.2.2
+
wifi: ^0.1.5
vibration: ^1.7.3