private void CartItemlistDataBind(object sender, EventArgs e) { var lc = (Literal)sender; var container = (IDataItemContainer)lc.NamingContainer; try { var strOut = ""; lc.Visible = visibleStatus.DefaultIfEmpty(true).First(); if (lc.Visible) { var id = Convert.ToString(DataBinder.Eval(container.DataItem, "ItemId")); var lang = Convert.ToString(DataBinder.Eval(container.DataItem, "lang")); if (lang == "") lang = Utils.GetCurrentCulture(); var groupresults = false; if (lc.Text.EndsWith(":GROUPBY")) { groupresults = true; lc.Text = lc.Text.Replace(":GROUPBY", ""); } var templName = lc.Text; if (Utils.IsNumeric(id) && (templName != "")) { var buyCtrl = new NBrightBuyController(); var rpTempl = buyCtrl.GetTemplateData(-1, templName, lang, _settings, StoreSettings.Current.DebugMode); //remove templName from template, so we don't get a loop. if (rpTempl.Contains(templName)) rpTempl = rpTempl.Replace(templName, ""); //build models list var objInfo = (NBrightInfo)container.DataItem; var cartData = new CartData(objInfo.PortalId); // render repeater try { var itemTemplate = NBrightBuyUtils.GetGenXmlTemplate(rpTempl, _settings, PortalSettings.Current.HomeDirectory, visibleStatus); strOut = GenXmlFunctions.RenderRepeater(cartData.GetCartItemList(groupresults), itemTemplate); } catch (Exception exc) { strOut = "ERROR: NOTE: sub rendered templates CANNOT contain postback controls.<br/>" + exc; } } } lc.Text = strOut; } catch (Exception) { lc.Text = ""; } }
public override TestOfData TestOfDataBinding(object sender, EventArgs e) { var rtnData = new TestOfData(); rtnData.DataValue = null; rtnData.TestValue = null; var lc = (Literal)sender; var container = (IDataItemContainer)lc.NamingContainer; try { NBrightInfo info; ProductData prodData; CatProdXref xrefData; var xmlDoc = new XmlDocument(); CartData currentcart; xmlDoc.LoadXml("<root>" + lc.Text + "</root>"); var xmlNod = xmlDoc.SelectSingleNode("root/tag"); if (container.DataItem != null && xmlNod != null && (xmlNod.Attributes != null && xmlNod.Attributes["function"] != null)) { rtnData.DataValue = "FALSE"; XmlNode nod; var testValue = ""; if ((xmlNod.Attributes["testvalue"] != null)) testValue = xmlNod.Attributes["testvalue"].Value; // check for setting key var settingkey = ""; if ((xmlNod.Attributes["key"] != null)) settingkey = xmlNod.Attributes["key"].Value; var role = ""; if ((xmlNod.Attributes["role"] != null)) role = xmlNod.Attributes["role"].Value; var index = ""; if ((xmlNod.Attributes["index"] != null)) index = xmlNod.Attributes["index"].Value; var modulekey = ""; if ((xmlNod.Attributes["modulekey"] != null)) modulekey = xmlNod.Attributes["modulekey"].Value; var targetmodulekey = ""; if ((xmlNod.Attributes["targetmodulekey"] != null)) targetmodulekey = xmlNod.Attributes["targetmodulekey"].Value; // do special tests for named fucntions switch (xmlNod.Attributes["function"].Value.ToLower()) { case "searchactive": var navdata2 = new NavigationData(PortalSettings.Current.PortalId, targetmodulekey); if (navdata2.Criteria == "") rtnData.DataValue = "FALSE"; else rtnData.DataValue = "TRUE"; break; case "productcount": var navdata = new NavigationData(PortalSettings.Current.PortalId, modulekey); rtnData.DataValue = navdata.RecordCount; break; case "price": rtnData.DataValue = GetFromPrice((NBrightInfo) container.DataItem); break; case "dealerprice": rtnData.DataValue = GetDealerPrice((NBrightInfo) container.DataItem); break; case "saleprice": rtnData.DataValue = GetSalePrice((NBrightInfo) container.DataItem); break; case "imgexists": rtnData.DataValue = testValue; nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/imgs/genxml[" + rtnData.DataValue + "]"); if (nod == null) rtnData.DataValue = "FALSE"; break; case "modelexists": rtnData.DataValue = testValue; nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/models/genxml[" + rtnData.DataValue + "]"); if (nod == null) rtnData.DataValue = "FALSE"; break; case "optionexists": rtnData.DataValue = testValue; nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/options/genxml[" + rtnData.DataValue + "]"); if (nod == null) rtnData.DataValue = "FALSE"; break; case "isinstock": if (IsInStock((NBrightInfo) container.DataItem)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "ismodelinstock": if (IsModelInStock((NBrightInfo) container.DataItem)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "inwishlist": var productid = DataBinder.Eval(container.DataItem, "ItemId").ToString(); if (Utils.IsNumeric(productid)) { var listname = "ItemList"; if ((xmlNod.Attributes["listname"] != null)) listname = xmlNod.Attributes["listname"].Value; var wl = new ItemListData(listname); if (wl.IsInList(productid)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } } break; case "isonsale": var saleprice = GetSalePriceDouble((NBrightInfo) container.DataItem); if (saleprice > 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasrelateditems": info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.GetRelatedProducts().Count > 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasdocuments": info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.Docs.Count > 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "haspurchasedocuments": info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.Docs.Select(i => i.GetXmlProperty("genxml/checkbox/chkpurchase") == "True").Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasproperty": info = (NBrightInfo) container.DataItem; xrefData = new CatProdXref(); if (xrefData.IsProductInCategory(info.ItemID,testValue)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isincategory": info = (NBrightInfo) container.DataItem; xrefData = new CatProdXref(); if (xrefData.IsProductInCategory(info.ItemID,testValue)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isdocpurchasable": nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/docs/genxml[" + index + "]/hidden/docid"); if (nod != null) { info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.Docs.Select(i => i.GetXmlProperty("genxml/checkbox/chkpurchase") == "True" && i.GetXmlProperty("genxml/hidden/docid") == nod.InnerText).Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } } break; case "isdocpurchased": nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/docs/genxml[" + index + "]/hidden/docid"); if (nod != null && Utils.IsNumeric(nod.InnerText)) { var uInfo = UserController.GetCurrentUserInfo(); //[TODO: work out method of finding if user purchased document.] //if (NBrightBuyV2Utils.DocHasBeenPurchasedByDocId(uInfo.UserID, Convert.ToInt32(nod.InnerText))) //{ // rtnData.DataValue = "TRUE"; // rtnData.TestValue = "TRUE"; //} } break; case "hasmodelsoroptions": nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/models/genxml[2]/hidden/modelid"); if (nod != null && nod.InnerText != "") { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } if (rtnData.DataValue == "FALSE") { nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/options/genxml[1]/hidden/optionid"); if (nod != null && nod.InnerText != "") { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } } break; case "isproductincart": var cartData = new CartData(PortalSettings.Current.PortalId); info = (NBrightInfo) container.DataItem; if (cartData.GetCartItemList().Select(i => i.GetXmlProperty("genxml/productid") == info.ItemID.ToString("")).Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "settings": if (_settings != null && _settings.ContainsKey(settingkey) && _settings[settingkey] == testValue) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "debugmode": if (StoreSettings.Current.DebugMode) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isinrole": if (CmsProviderManager.Default.IsInRole(role)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "issuperuser": if (UserController.GetCurrentUserInfo().IsSuperUser) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isuser": if (UserController.GetCurrentUserInfo().UserID >= 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isclientordermode": currentcart = new CartData(PortalSettings.Current.PortalId); if (currentcart.IsClientOrderMode()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "carteditmode": currentcart = new CartData(PortalSettings.Current.PortalId); var editmode = currentcart.GetInfo().GetXmlProperty("genxml/carteditmode"); if (editmode == testValue) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "iscartempty": currentcart = new CartData(PortalSettings.Current.PortalId); var l = currentcart.GetCartItemList(); if (!l.Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasshippingproviders": var pluginData = new PluginData(PortalSettings.Current.PortalId); var provList = pluginData.GetShippingProviders(); if (provList.Count > 1) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "profile": var userInfo = UserController.GetCurrentUserInfo(); if (userInfo.UserID >= 0) rtnData.DataValue = userInfo.Profile.GetPropertyValue(settingkey); break; case "static": break; default: rtnData.DataValue = null; break; } } } catch (Exception) { lc.Text = ""; } return rtnData; }
public override NBrightInfo CalculatePromotion(int portalId, NBrightInfo cartInfo) { // loop through cart items var rtncartInfo = (NBrightInfo)cartInfo.Clone(); try { var cartData = new CartData(cartInfo.PortalId); var cartList = cartData.GetCartItemList(); foreach (var cartItemInfo in cartList) { cartInfo.SetXmlPropertyDouble("genxml/items/genxml[./itemcode = '" + cartItemInfo.GetXmlProperty("genxml/itemcode") + "']/promodiscount", 0); // remove any existing discount if (cartItemInfo.GetXmlProperty("genxml/productxml/genxml/hidden/promotype") == "PROMOMULTIBUY") { var promoid = cartItemInfo.GetXmlPropertyInt("genxml/productxml/genxml/hidden/promoid"); var objCtrl = new NBrightBuyController(); var promoData = objCtrl.GetData(promoid); if (promoData != null) { //NOTE: WE nedd to process disabld promotions so they can be removed from cart var buyqty = promoData.GetXmlPropertyInt("genxml/textbox/buyqty"); var validfrom = promoData.GetXmlProperty("genxml/textbox/validfrom"); var validuntil = promoData.GetXmlProperty("genxml/textbox/validuntil"); var propbuygroupid = promoData.GetXmlProperty("genxml/dropdownlist/propbuy"); var propapplygroupid = promoData.GetXmlProperty("genxml/dropdownlist/propapply"); var amounttype = promoData.GetXmlProperty("genxml/radiobuttonlist/amounttype"); var amount = promoData.GetXmlPropertyDouble("genxml/textbox/amount"); // Applied discount to this single cart item if (!promoData.GetXmlPropertyBool("genxml/checkbox/disabled") && cartItemInfo.GetXmlPropertyInt("genxml/qty") >= buyqty && Utils.IsDate(validfrom) && Utils.IsDate(validuntil)) // check we have correct qty to activate promo { var dteF = Convert.ToDateTime(validfrom).Date; var dteU = Convert.ToDateTime(validuntil).Date; if (DateTime.Now.Date >= dteF && DateTime.Now.Date <= dteU) { // calc discount amount var cartqty = cartItemInfo.GetXmlPropertyDouble("genxml/qty"); var qtycount = cartqty; var unitcost = cartItemInfo.GetXmlPropertyDouble("genxml/basecost"); double discountamt = 0; while (qtycount > buyqty) { if (amounttype == "1") { discountamt += (unitcost - amount); } else { discountamt += ((unitcost/100)*amount); } if (discountamt < 0) discountamt = 0; qtycount = (qtycount - (buyqty + 1)); // +1 so we allow for discount 1 in basket. } cartInfo.SetXmlPropertyDouble("genxml/items/genxml[./itemcode = '" + cartItemInfo.GetXmlProperty("genxml/itemcode") + "']/promodiscount", discountamt); } } } } } return cartInfo; } catch (Exception ex) { var x = ex.ToString(); return rtncartInfo; } }
protected override void OnInit(EventArgs e) { base.OnInit(e); // get setting via control params if (DisplayHeader != null && DisplayHeader == "") DisplayHeader = "minicartheader.html"; if (DisplayBody != null && DisplayHeader == "") DisplayBody = "minicartbody.html"; if (DisplayFooter != null && DisplayHeader == "") DisplayFooter = "minicartfooter.html"; if (!String.IsNullOrEmpty(DisplayHeader) && !ModSettings.Settings().ContainsKey("txtdisplayheader")) ModSettings.Settings().Add("txtdisplayheader", DisplayHeader); if (!String.IsNullOrEmpty(DisplayBody) && !ModSettings.Settings().ContainsKey("txtdisplaybody")) ModSettings.Settings().Add("txtdisplaybody", DisplayBody); if (!String.IsNullOrEmpty(DisplayFooter) && !ModSettings.Settings().ContainsKey("txtdisplayfooter")) ModSettings.Settings().Add("txtdisplayfooter", DisplayFooter); if (!String.IsNullOrEmpty(PaymentTab) && !ModSettings.Settings().ContainsKey("PaymentTab")) ModSettings.Settings().Add("PaymentTab",PaymentTab ); if (!String.IsNullOrEmpty(Themefolder) && !ModSettings.Settings().ContainsKey("themefolder")) ModSettings.Settings().Add("themefolder", Themefolder); _cartInfo = new CartData(PortalId); _addressData = new AddressData(_cartInfo.UserId.ToString("")); if (ModSettings.Get("themefolder") == "") // if we don't have module setting jump out { rpDataH.ItemTemplate = new GenXmlTemplate("NO MODULE SETTINGS"); return; } try { _templH = ModSettings.Get("txtdisplayheader"); _templD = ModSettings.Get("txtdisplaybody"); _templDfoot = ModSettings.Get("txtdisplaybodyfoot"); _templF = ModSettings.Get("txtdisplayfooter"); const string templAB = "cartbillingaddress.html"; const string templAS = "cartshippingaddress.html"; const string templS = "cartshipment.html"; const string templE = "cartextra.html"; const string templD = "cartdetails.html"; carttype = ModSettings.Get("ddlcarttype"); // This is left for backward compatiblity with NBS_Cart module (now removed from install). if (carttype == "") { // cart type is not a setting, so use the controlanme if (ModuleConfiguration.DesktopModule.ModuleName == "NBS_MiniCart") carttype = "1"; if (ModuleConfiguration.DesktopModule.ModuleName == "NBS_FullCart") carttype = "3"; if (ModuleConfiguration.DesktopModule.ModuleName == "NBS_Checkout") carttype = "2"; } if (carttype == "3" || carttype == "2") // check if we need to add cookie items { _cartInfo.AddCookieToCart(); _cartInfo.Save(); } if (!_cartInfo.GetCartItemList().Any() && (carttype == "3" || carttype == "2")) _templH = "cartempty.html"; // check for empty cart else { // Get Display Body var rpDataTempl = ModCtrl.GetTemplateData(ModSettings, _templD, Utils.GetCurrentCulture(), DebugMode); rpData.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(rpDataTempl, ModSettings.Settings(), PortalSettings.HomeDirectory); // Get Display Footer var rpDataFTempl = ModCtrl.GetTemplateData(ModSettings, _templF, Utils.GetCurrentCulture(), DebugMode); rpDataF.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(rpDataFTempl, ModSettings.Settings(), PortalSettings.HomeDirectory); // Get CartLayout var layouttemplate = "checkoutlayout.html"; if (carttype == "3") layouttemplate = "fullcartlayout.html"; var checkoutlayoutTempl = ModCtrl.GetTemplateData(ModSettings, layouttemplate, Utils.GetCurrentCulture(), DebugMode); checkoutlayout.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(checkoutlayoutTempl, ModSettings.Settings(), PortalSettings.HomeDirectory); _templateHeader = (GenXmlTemplate)checkoutlayout.ItemTemplate; } // Get Display Header var rpDataHTempl = ModCtrl.GetTemplateData(ModSettings, _templH, Utils.GetCurrentCulture(), DebugMode); rpDataH.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(rpDataHTempl, ModSettings.Settings(), PortalSettings.HomeDirectory); // insert page header text NBrightBuyUtils.IncludePageHeaders(ModCtrl, ModuleId, Page, _templateHeader, ModSettings.Settings(), null, DebugMode); if (carttype == "2") { // add any shiiping provider templates to the cart layout, so we can process any data required by them rpShip.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(ModCtrl.GetTemplateData(ModSettings, templS, Utils.GetCurrentCulture(), DebugMode), ModSettings.Settings(), PortalSettings.HomeDirectory); rpAddrB.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(ModCtrl.GetTemplateData(ModSettings, templAB, Utils.GetCurrentCulture(), DebugMode), ModSettings.Settings(), PortalSettings.HomeDirectory); rpAddrS.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(ModCtrl.GetTemplateData(ModSettings, templAS, Utils.GetCurrentCulture(), DebugMode), ModSettings.Settings(), PortalSettings.HomeDirectory); var checkoutextraTempl = ModCtrl.GetTemplateData(ModSettings, templE, Utils.GetCurrentCulture(), DebugMode); checkoutextraTempl += GetShippingProviderTemplates(); rpExtra.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(checkoutextraTempl, ModSettings.Settings(), PortalSettings.HomeDirectory); } } catch (Exception exc) { rpDataF.ItemTemplate = new GenXmlTemplate(exc.Message, ModSettings.Settings()); // catch any error and allow processing to continue, output error as footer template. } }
private string RedirectToPayment(HttpContext context) { try { RecalculateSummary(context); var currentcart = new CartData(PortalSettings.Current.PortalId); if (currentcart.GetCartItemList().Count > 0) { currentcart.SetValidated(true); if (currentcart.EditMode == "E") currentcart.ConvertToOrder(); } else { currentcart.SetValidated(true); } currentcart.Save(); var rtnurl = Globals.NavigateURL(StoreSettings.Current.PaymentTabId); if (currentcart.EditMode == "E") { // is order being edited, so return to order status after edit. // ONLY if the cartsummry is being displayed to the manager. currentcart.ConvertToOrder(); // redirect to back office var param = new string[2]; param[0] = "ctrl=orders"; param[1] = "eid=" + currentcart.PurchaseInfo.ItemID.ToString(""); var strbackofficeTabId = StoreSettings.Current.Get("backofficetabid"); var backofficeTabId = PortalSettings.Current.ActiveTab.TabID; if (Utils.IsNumeric(strbackofficeTabId)) backofficeTabId = Convert.ToInt32(strbackofficeTabId); rtnurl = Globals.NavigateURL(backofficeTabId, "", param); } return rtnurl; } catch (Exception ex) { Exceptions.LogException(ex); return "ERROR"; } }