public ActionResult GetEstimateShipping(EstimateShippingModel shippingModel, FormCollection form) { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); //parse and save checkout attributes ParseAndSaveCheckoutAttributes(cart, form); var model = new ShoppingCartModel(); model.EstimateShipping.CountryId = shippingModel.CountryId; model.EstimateShipping.StateProvinceId = shippingModel.StateProvinceId; model.EstimateShipping.ZipPostalCode = shippingModel.ZipPostalCode; PrepareShoppingCartModel(model, cart, setEstimateShippingDefaultAddress: false); if (cart.RequiresShipping()) { var address = new Address() { CountryId = shippingModel.CountryId, Country = shippingModel.CountryId.HasValue ? _countryService.GetCountryById(shippingModel.CountryId.Value) : null, StateProvinceId = shippingModel.StateProvinceId, StateProvince = shippingModel.StateProvinceId.HasValue ? _stateProvinceService.GetStateProvinceById(shippingModel.StateProvinceId.Value) : null, ZipPostalCode = shippingModel.ZipPostalCode, }; GetShippingOptionResponse getShippingOptionResponse = _shippingService .GetShippingOptions(cart, address, "", _storeContext.CurrentStore.Id); if (!getShippingOptionResponse.Success) { foreach (var error in getShippingOptionResponse.Errors) model.EstimateShipping.Warnings.Add(error); } else { if (getShippingOptionResponse.ShippingOptions.Count > 0) { var shippingMethods = _shippingService.GetAllShippingMethods(); foreach (var shippingOption in getShippingOptionResponse.ShippingOptions) { var soModel = new EstimateShippingModel.ShippingOptionModel() { ShippingMethodId = shippingOption.ShippingMethodId, Name = shippingOption.Name, Description = shippingOption.Description, }; //calculate discounted and taxed rate Discount appliedDiscount = null; decimal shippingTotal = _orderTotalCalculationService.AdjustShippingRate( shippingOption.Rate, cart, shippingOption.Name, shippingMethods, out appliedDiscount); decimal rateBase = _taxService.GetShippingPrice(shippingTotal, _workContext.CurrentCustomer); decimal rate = _currencyService.ConvertFromPrimaryStoreCurrency(rateBase, _workContext.WorkingCurrency); soModel.Price = _priceFormatter.FormatShippingPrice(rate, false /*true*/); model.EstimateShipping.ShippingOptions.Add(soModel); } } else { model.EstimateShipping.Warnings.Add(_localizationService.GetResource("Checkout.ShippingIsNotAllowed")); } } } return View(model); }
public ActionResult OrderSummary(bool? prepareAndDisplayOrderReviewData) { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart, isEditable: false, prepareEstimateShippingIfEnabled: false, prepareAndDisplayOrderReviewData: prepareAndDisplayOrderReviewData.HasValue ? prepareAndDisplayOrderReviewData.Value : false); return PartialView(model); }
public ActionResult ApplyGiftCard(string giftcardcouponcode, FormCollection form) { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); //parse and save checkout attributes ParseAndSaveCheckoutAttributes(cart, form); var model = new ShoppingCartModel(); if (!cart.IsRecurring()) { if (!String.IsNullOrWhiteSpace(giftcardcouponcode)) { var giftCard = _giftCardService.GetAllGiftCards(null, null, null, null, giftcardcouponcode).FirstOrDefault(); bool isGiftCardValid = giftCard != null && giftCard.IsGiftCardValid(); if (isGiftCardValid) { _workContext.CurrentCustomer.ApplyGiftCardCouponCode(giftcardcouponcode); _customerService.UpdateCustomer(_workContext.CurrentCustomer); model.GiftCardBox.Message = _localizationService.GetResource("ShoppingCart.GiftCardCouponCode.Applied"); } else model.GiftCardBox.Message = _localizationService.GetResource("ShoppingCart.GiftCardCouponCode.WrongGiftCard"); } else model.GiftCardBox.Message = _localizationService.GetResource("ShoppingCart.GiftCardCouponCode.WrongGiftCard"); } else model.GiftCardBox.Message = _localizationService.GetResource("ShoppingCart.GiftCardCouponCode.DontWorkWithAutoshipProducts"); PrepareShoppingCartModel(model, cart); return View(model); }
public ActionResult Cart() { if (!_permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart)) return RedirectToRoute("HomePage"); var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart); _httpContext.Session.SafeSet(CheckoutState.CheckoutStateSessionKey, new CheckoutState()); return View(model); }
protected void PrepareShoppingCartModel(ShoppingCartModel model, IList<OrganizedShoppingCartItem> cart, bool isEditable = true, bool validateCheckoutAttributes = false, bool prepareEstimateShippingIfEnabled = true, bool setEstimateShippingDefaultAddress = true, bool prepareAndDisplayOrderReviewData = false) { if (cart == null) throw new ArgumentNullException("cart"); if (model == null) throw new ArgumentNullException("model"); if (cart.Count == 0) return; #region Simple properties model.MediaDimensions = _mediaSettings.CartThumbPictureSize; model.BundleThumbSize = _mediaSettings.CartThumbBundleItemPictureSize; model.DisplayDeliveryTime = _shoppingCartSettings.ShowDeliveryTimes; model.DisplayShortDesc = _shoppingCartSettings.ShowShortDesc; model.DisplayBasePrice = _shoppingCartSettings.ShowBasePrice; model.DisplayWeight = _shoppingCartSettings.ShowWeight; model.IsEditable = isEditable; model.ShowProductImages = _shoppingCartSettings.ShowProductImagesOnShoppingCart; model.ShowProductBundleImages = _shoppingCartSettings.ShowProductBundleImagesOnShoppingCart; model.ShowSku = _catalogSettings.ShowProductSku; var checkoutAttributesXml = _workContext.CurrentCustomer.GetAttribute<string>(SystemCustomerAttributeNames.CheckoutAttributes, _genericAttributeService); model.CheckoutAttributeInfo = HtmlUtils.ConvertPlainTextToTable(HtmlUtils.ConvertHtmlToPlainText( _checkoutAttributeFormatter.FormatAttributes(checkoutAttributesXml, _workContext.CurrentCustomer) )); //model.CheckoutAttributeInfo = _checkoutAttributeFormatter.FormatAttributes(_workContext.CurrentCustomer.CheckoutAttributes, _workContext.CurrentCustomer); //model.CheckoutAttributeInfo = _checkoutAttributeFormatter.FormatAttributes(_workContext.CurrentCustomer.CheckoutAttributes, _workContext.CurrentCustomer, "", false); bool minOrderSubtotalAmountOk = _orderProcessingService.ValidateMinOrderSubtotalAmount(cart); if (!minOrderSubtotalAmountOk) { decimal minOrderSubtotalAmount = _currencyService.ConvertFromPrimaryStoreCurrency(_orderSettings.MinOrderSubtotalAmount, _workContext.WorkingCurrency); model.MinOrderSubtotalWarning = string.Format(_localizationService.GetResource("Checkout.MinOrderSubtotalAmount"), _priceFormatter.FormatPrice(minOrderSubtotalAmount, true, false)); } model.TermsOfServiceEnabled = _orderSettings.TermsOfServiceEnabled; //gift card and gift card boxes model.DiscountBox.Display = _shoppingCartSettings.ShowDiscountBox; var discountCouponCode = _workContext.CurrentCustomer.GetAttribute<string>(SystemCustomerAttributeNames.DiscountCouponCode); var discount = _discountService.GetDiscountByCouponCode(discountCouponCode); if (discount != null && discount.RequiresCouponCode && _discountService.IsDiscountValid(discount, _workContext.CurrentCustomer)) model.DiscountBox.CurrentCode = discount.CouponCode; model.GiftCardBox.Display = _shoppingCartSettings.ShowGiftCardBox; model.DisplayCommentBox = _shoppingCartSettings.ShowCommentBox; //cart warnings var cartWarnings = _shoppingCartService.GetShoppingCartWarnings(cart, checkoutAttributesXml, validateCheckoutAttributes); foreach (var warning in cartWarnings) model.Warnings.Add(warning); #endregion #region Checkout attributes var checkoutAttributes = _checkoutAttributeService.GetAllCheckoutAttributes(); if (!cart.RequiresShipping()) { //remove attributes which require shippable products checkoutAttributes = checkoutAttributes.RemoveShippableAttributes(); } foreach (var attribute in checkoutAttributes) { var caModel = new ShoppingCartModel.CheckoutAttributeModel() { Id = attribute.Id, Name = attribute.GetLocalized(x => x.Name), TextPrompt = attribute.GetLocalized(x => x.TextPrompt), IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType }; if (attribute.ShouldHaveValues()) { //values var caValues = _checkoutAttributeService.GetCheckoutAttributeValues(attribute.Id); foreach (var caValue in caValues) { var pvaValueModel = new ShoppingCartModel.CheckoutAttributeValueModel() { Id = caValue.Id, Name = caValue.GetLocalized(x => x.Name), IsPreSelected = caValue.IsPreSelected }; caModel.Values.Add(pvaValueModel); //display price if allowed if (_permissionService.Authorize(StandardPermissionProvider.DisplayPrices)) { decimal priceAdjustmentBase = _taxService.GetCheckoutAttributePrice(caValue); decimal priceAdjustment = _currencyService.ConvertFromPrimaryStoreCurrency(priceAdjustmentBase, _workContext.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) pvaValueModel.PriceAdjustment = "+" + _priceFormatter.FormatPrice(priceAdjustment); else if (priceAdjustmentBase < decimal.Zero) pvaValueModel.PriceAdjustment = "-" + _priceFormatter.FormatPrice(-priceAdjustment); } } } //set already selected attributes string selectedCheckoutAttributes = _workContext.CurrentCustomer.GetAttribute<string>(SystemCustomerAttributeNames.CheckoutAttributes, _genericAttributeService); switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.ColorSquares: case AttributeControlType.Checkboxes: { if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { //clear default selection foreach (var item in caModel.Values) item.IsPreSelected = false; //select new values var selectedCaValues = _checkoutAttributeParser.ParseCheckoutAttributeValues(selectedCheckoutAttributes); foreach (var caValue in selectedCaValues) foreach (var item in caModel.Values) if (caValue.Id == item.Id) item.IsPreSelected = true; } } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { var enteredText = _checkoutAttributeParser.ParseValues(selectedCheckoutAttributes, attribute.Id); if (enteredText.Count > 0) caModel.DefaultValue = enteredText[0]; } } break; case AttributeControlType.Datepicker: { //keep in mind my that the code below works only in the current culture var selectedDateStr = _checkoutAttributeParser.ParseValues(selectedCheckoutAttributes, attribute.Id); if (selectedDateStr.Count > 0) { DateTime selectedDate; if (DateTime.TryParseExact(selectedDateStr[0], "D", CultureInfo.CurrentCulture, DateTimeStyles.None, out selectedDate)) { //successfully parsed caModel.SelectedDay = selectedDate.Day; caModel.SelectedMonth = selectedDate.Month; caModel.SelectedYear = selectedDate.Year; } } } break; default: break; } model.CheckoutAttributes.Add(caModel); } #endregion #region Estimate shipping if (prepareEstimateShippingIfEnabled) { model.EstimateShipping.Enabled = cart.Count > 0 && cart.RequiresShipping() && _shippingSettings.EstimateShippingEnabled; if (model.EstimateShipping.Enabled) { //countries int? defaultEstimateCountryId = (setEstimateShippingDefaultAddress && _workContext.CurrentCustomer.ShippingAddress != null) ? _workContext.CurrentCustomer.ShippingAddress.CountryId : model.EstimateShipping.CountryId; //model.EstimateShipping.AvailableCountries.Add(new SelectListItem() { Text = _localizationService.GetResource("Address.SelectCountry"), Value = "0" }); foreach (var c in _countryService.GetAllCountriesForShipping()) model.EstimateShipping.AvailableCountries.Add(new SelectListItem() { Text = c.GetLocalized(x => x.Name), Value = c.Id.ToString(), Selected = c.Id == defaultEstimateCountryId }); //states int? defaultEstimateStateId = (setEstimateShippingDefaultAddress && _workContext.CurrentCustomer.ShippingAddress != null) ? _workContext.CurrentCustomer.ShippingAddress.StateProvinceId : model.EstimateShipping.StateProvinceId; var states = defaultEstimateCountryId.HasValue ? _stateProvinceService.GetStateProvincesByCountryId(defaultEstimateCountryId.Value).ToList() : new List<StateProvince>(); if (states.Count > 0) foreach (var s in states) model.EstimateShipping.AvailableStates.Add(new SelectListItem() { Text = s.GetLocalized(x => x.Name), Value = s.Id.ToString(), Selected = s.Id == defaultEstimateStateId }); else model.EstimateShipping.AvailableStates.Add(new SelectListItem() { Text = _localizationService.GetResource("Address.OtherNonUS"), Value = "0" }); if (setEstimateShippingDefaultAddress && _workContext.CurrentCustomer.ShippingAddress != null) model.EstimateShipping.ZipPostalCode = _workContext.CurrentCustomer.ShippingAddress.ZipPostalCode; } } #endregion #region Cart items foreach (var sci in cart) { var shoppingCartItemModel = PrepareShoppingCartItemModel(sci); model.Items.Add(shoppingCartItemModel); } #endregion #region Order review data if (prepareAndDisplayOrderReviewData) { model.OrderReviewData.Display = true; //billing info var billingAddress = _workContext.CurrentCustomer.BillingAddress; if (billingAddress != null) model.OrderReviewData.BillingAddress.PrepareModel(billingAddress, false, _addressSettings); //shipping info if (cart.RequiresShipping()) { model.OrderReviewData.IsShippable = true; var shippingAddress = _workContext.CurrentCustomer.ShippingAddress; if (shippingAddress != null) model.OrderReviewData.ShippingAddress.PrepareModel(shippingAddress, false, _addressSettings); //selected shipping method var shippingOption = _workContext.CurrentCustomer.GetAttribute<ShippingOption>(SystemCustomerAttributeNames.SelectedShippingOption, _storeContext.CurrentStore.Id); if (shippingOption != null) model.OrderReviewData.ShippingMethod = shippingOption.Name; } //payment info var selectedPaymentMethodSystemName = _workContext.CurrentCustomer.GetAttribute<string>( SystemCustomerAttributeNames.SelectedPaymentMethod, _storeContext.CurrentStore.Id); var checkoutState = _httpContext.GetCheckoutState(); var paymentMethod = _paymentService.LoadPaymentMethodBySystemName(selectedPaymentMethodSystemName); model.OrderReviewData.PaymentMethod = paymentMethod != null ? _pluginMediator.GetLocalizedFriendlyName(paymentMethod.Metadata) : ""; model.OrderReviewData.PaymentSummary = checkoutState.PaymentSummary; model.OrderReviewData.IsPaymentSelectionSkipped = checkoutState.IsPaymentSelectionSkipped; } #endregion PrepareButtonPaymentMethodModel(model.ButtonPaymentMethods, cart); }
public ActionResult ApplyDiscountCoupon(string discountcouponcode, FormCollection form) { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); //parse and save checkout attributes ParseAndSaveCheckoutAttributes(cart, form); var model = new ShoppingCartModel(); if (!String.IsNullOrWhiteSpace(discountcouponcode)) { var discount = _discountService.GetDiscountByCouponCode(discountcouponcode); bool isDiscountValid = discount != null && discount.RequiresCouponCode && _discountService.IsDiscountValid(discount, _workContext.CurrentCustomer, discountcouponcode); if (isDiscountValid) { _genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.DiscountCouponCode, discountcouponcode); model.DiscountBox.Message = _localizationService.GetResource("ShoppingCart.DiscountCouponCode.Applied"); } else { model.DiscountBox.Message = _localizationService.GetResource("ShoppingCart.DiscountCouponCode.WrongDiscount"); } } else model.DiscountBox.Message = _localizationService.GetResource("ShoppingCart.DiscountCouponCode.WrongDiscount"); PrepareShoppingCartModel(model, cart); return View(model); }
public ActionResult UpdateCartAll(FormCollection form) { if (!_permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart)) return RedirectToRoute("HomePage"); var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var allIdsToRemove = form["removefromcart"] != null ? form["removefromcart"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x => int.Parse(x)).ToList() : new List<int>(); //current warnings <cart item identifier, warnings> var innerWarnings = new Dictionary<int, IList<string>>(); foreach (var sci in cart) { bool remove = allIdsToRemove.Contains(sci.Item.Id); if (remove) { _shoppingCartService.DeleteShoppingCartItem(sci.Item, ensureOnlyActiveCheckoutAttributes: true); } else { foreach (string formKey in form.AllKeys) { if (formKey.Equals(string.Format("itemquantity{0}", sci.Item.Id), StringComparison.InvariantCultureIgnoreCase)) { int newQuantity = sci.Item.Quantity; if (int.TryParse(form[formKey], out newQuantity)) { var currSciWarnings = _shoppingCartService.UpdateShoppingCartItem(_workContext.CurrentCustomer, sci.Item.Id, newQuantity, true); innerWarnings.Add(sci.Item.Id, currSciWarnings); } break; } } } } //updated cart cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart); //update current warnings foreach (var kvp in innerWarnings) { //kvp = <cart item identifier, warnings> var sciId = kvp.Key; var warnings = kvp.Value; //find model var sciModel = model.Items.FirstOrDefault(x => x.Id == sciId); if (sciModel != null) { foreach (var w in warnings) { if (!sciModel.Warnings.Contains(w)) sciModel.Warnings.Add(w); } } } return View(model); }
public ActionResult UpdateCartItem(FormCollection form) { if (!_permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart)) return RedirectToRoute("HomePage"); //get shopping cart item identifier int sciId = 0; foreach (var formValue in form.AllKeys) { if (formValue.StartsWith("updatecartitem-", StringComparison.InvariantCultureIgnoreCase)) sciId = Convert.ToInt32(formValue.Substring("updatecartitem-".Length)); } //get shopping cart item var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var sci = cart.FirstOrDefault(x => x.Item.Id == sciId); if (sci == null) { return RedirectToRoute("ShoppingCart"); } //update the cart item var warnings = new List<string>(); foreach (string formKey in form.AllKeys) { if (formKey.Equals(string.Format("itemquantity{0}", sci.Item.Id), StringComparison.InvariantCultureIgnoreCase)) { int newQuantity = sci.Item.Quantity; if (int.TryParse(form[formKey], out newQuantity)) { warnings.AddRange(_shoppingCartService.UpdateShoppingCartItem(_workContext.CurrentCustomer, sci.Item.Id, newQuantity, true)); } break; } } //updated cart cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart); //update current warnings... find model var sciModel = model.Items.FirstOrDefault(x => x.Id == sciId); if (sciModel != null) { foreach (var w in warnings) { if (!sciModel.Warnings.Contains(w)) sciModel.Warnings.Add(w); } } return View(model); }
public ActionResult StartCheckout(FormCollection form) { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); //parse and save checkout attributes ParseAndSaveCheckoutAttributes(cart, form); //validate attributes string checkoutAttributes = _workContext.CurrentCustomer.GetAttribute<string>(SystemCustomerAttributeNames.CheckoutAttributes, _genericAttributeService); var checkoutAttributeWarnings = _shoppingCartService.GetShoppingCartWarnings(cart, checkoutAttributes, true); if (checkoutAttributeWarnings.Count > 0) { //something wrong, redisplay the page with warnings var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart, validateCheckoutAttributes: true); return View(model); } //everything is OK if (_workContext.CurrentCustomer.IsGuest()) { if (_orderSettings.AnonymousCheckoutAllowed) { return RedirectToAction("Login", "Customer", new { checkoutAsGuest = true, returnUrl = Url.RouteUrl("ShoppingCart") }); } else { return new HttpUnauthorizedResult(); } } else { return RedirectToRoute("Checkout"); } }
public ActionResult RemoveGiftardCode(int giftCardId) { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); var gc = _giftCardService.GetGiftCardById(giftCardId); if (gc != null) { _workContext.CurrentCustomer.RemoveGiftCardCouponCode(gc.GiftCardCouponCode); _customerService.UpdateCustomer(_workContext.CurrentCustomer); } PrepareShoppingCartModel(model, cart); return View(model); }
public ActionResult RemoveDiscountCoupon() { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); _genericAttributeService.SaveAttribute<string>(_workContext.CurrentCustomer, SystemCustomerAttributeNames.DiscountCouponCode, null); PrepareShoppingCartModel(model, cart); return View(model); }
public ActionResult RemoveCartItem(FormCollection form) { if (!_permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart)) return RedirectToRoute("HomePage"); //get shopping cart item identifier int sciId = 0; foreach (var formValue in form.AllKeys) { if (formValue.StartsWith("removefromcart-", StringComparison.InvariantCultureIgnoreCase)) sciId = Convert.ToInt32(formValue.Substring("removefromcart-".Length)); } //get shopping cart item var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var sci = cart.FirstOrDefault(x => x.Item.Id == sciId); if (sci == null) { return RedirectToRoute("ShoppingCart"); } //remove the cart item _shoppingCartService.DeleteShoppingCartItem(sci.Item, ensureOnlyActiveCheckoutAttributes: true); //updated cart cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart); return View(model); }
public JsonResult GetCartSummary() { var cart = _workContext.CurrentCustomer.GetCartItems(ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id); var model = new ShoppingCartModel(); PrepareShoppingCartModel(model, cart, isEditable: false, prepareEstimateShippingIfEnabled: true, prepareAndDisplayOrderReviewData: true); Session["cart"] = JsonConvert.SerializeObject(model); return Json(model, JsonRequestBehavior.AllowGet); }