public IResponseBase ParseCart(IResultResponse response, IRequestParameter parameters) { Response <CartResponse> result = new Response <CartResponse>(); try { // Check If Cart Is Empty var emptyCartCheck = _xDoc.Descendants(_ns + "div") .WhereAttributeEquals("class", "cart-empty") .Any(); if (!emptyCartCheck) { var mainContainer = _xDoc.Descendants(_ns + "form") .WhereAttributeEquals("id", "cart-items-form") .FirstOrNewXElement(); // Get Cart Items var itemsContainer = mainContainer.Descendants(_ns + "tr") .WhereAttributeEquals("class", "cart-row"); var items = ParseCartItems(itemsContainer); //cperez:SPAY-43: MasterID is the LOT + Size. This is the equivalent to SKU if (items != null && items.Any()) { foreach (var cartItem in items) { cartItem.MasterProductId = cartItem.Sku; } } // Get Price Summary var summaryContainer = mainContainer.Descendants(_ns + "table") .WhereAttributeEquals("class", "order-totals-table") .FirstOrNewXElement(); var summary = ParseCartSummary(summaryContainer); // Get Coupons var couponsContainer = mainContainer.Descendants(_ns + "tr") .WhereAttributeEquals("class", "rowcoupons"); var coupons = ParseCartCoupons(couponsContainer); // Get Promo Message var promoMessage = mainContainer.Descendants(_ns + "div") .WhereAttributeEquals("class", "cart-promo") .FirstOrNewXElement() .ElementValue(); // Get DWQuery var action = mainContainer.AttributeValue("action"); var begin = action.IndexOf("?dwcont="); var dwQuery = string.Empty; if (begin > -1) { dwQuery = action.Substring(begin, action.Length - begin); } var csrfToken = ParsingHelper.GetPasswordReset_CsrfToken(_xDoc); if (!string.IsNullOrEmpty(csrfToken)) { var strCsrfToken = csrfToken.Split('=').GetValue(1).ToString(); if (_session == null) { _session = new PaylessSession(_core); } var checkout = _session.GetCheckout(); checkout.CsrfToken = strCsrfToken; _session.SetCheckout(checkout); } // Get Login Parameter Name var dwLoginParam = _xDoc.Descendants(_ns + "form") .WhereAttributeEquals("id", "dwfrm_login") .Descendants(_ns + "input") .WhereAttributeContains("id", "dwfrm_login_username_") .FirstOrNewXElement() .AttributeValue("id"); // Get Errors _errors.AddRange(ParseCartErrors(mainContainer)); // Allow to Checkout var allowToCheckout = !_xDoc.Descendants(_ns + "button") .WhereAttributeEquals("name", "dwfrm_cart_checkoutCart") .WhereAttributeEquals("disabled", "disabled") .Any(); // Total Cart Item Count var itemCount = 0; items.ForEach(x => itemCount += x.Quantity); // Populate Result result.resultset.Cart.CartItems = items; result.resultset.Cart.Summary = summary; result.resultset.Cart.Coupons = coupons; result.resultset.Cart.PromoMessage = promoMessage; result.resultset.Cart.DWQuery = dwQuery; result.resultset.Cart.DWLoginParam = dwLoginParam; result.resultset.Cart.AllowToCheckout = allowToCheckout; result.resultset.Cart.CartItemCount = itemCount; result.resultset.Cart.GoogleWalletInfo = ParsingHelper.GetCartGoogleWalletInfoFrom(response, result.resultset.Cart); } // Criteo Customer Id var criteoCustomerId = ParsingHelper.GetCriteoCustomerId(response); result.resultset.Cart.CriteoCustomerId = criteoCustomerId; // Get Promo Header var promoHeaderContainer = _xDoc.Descendants(_ns + "div") .WhereAttributeEquals("class", "header-banner") .FirstOrNewXElement(); promoHeaderContainer.Descendants(_ns + "script") .Remove(); var promoHeader = string.Empty; if (Config.CartServicesParams.IsVisiblePromoHeader) { promoHeader = promoHeaderContainer.ElementValue(); } result.resultset.Cart.PromoHeader = promoHeader; result.resultset.TealiumDataBase = ParsingHelper.GetTealiumDataBase(_xDoc); result.resultset.TealiumDataExtended = ParsingHelper.GetTealiumDataExtended(_xDoc); } catch (Exception ex) { _errors.Add(ex.Handle( "MadServ.CartService.ParseCart", ErrorSeverity.FollowUp, ErrorType.Parsing )); } return(result); }