Exemplo n.º 1
0
        async Task CreateLocalCartFromP4MCart(P4MCart p4mCart)
        {
            var localCart = ShoppingCart.GetCart(HttpContext);

            localCart.Shipping = (decimal)p4mCart.ShippingAmt;
            localCart.Tax      = (decimal)p4mCart.Tax;
            if (p4mCart.Discounts != null)
            {
                foreach (var discount in p4mCart.Discounts)
                {
                    localCart.Discounts.Add(new CartDiscount
                    {
                        DiscountCode = discount.Code,
                        Description  = discount.Description,
                        Amount       = (decimal)discount.Amount
                    });
                }
            }
            if (p4mCart.Items != null)
            {
                foreach (var item in p4mCart.Items)
                {
                    var localItem = storeDB.Items.Find(Convert.ToInt32(item.Sku));
                    if (localItem != null)
                    {
                        localCart.AddToCart(localItem, (int)Math.Round(item.Qty));
                    }
                }
            }
            await storeDB.SaveChangesAsync();
        }
Exemplo n.º 2
0
        public async Task <JsonResult> RestoreLastCart(P4MCart cart)
        {
            var result = new P4MBaseMessage();

            try
            {
                await CreateLocalCartFromP4MCart(cart);
            }
            catch (Exception e)
            {
                result.Error = e.Message;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        P4MCart GetMostRecentCart(string localUsername)
        {
            var order = storeDB.Orders.Where(o => o.Username == localUsername).OrderByDescending(o => o.OrderDate).FirstOrDefault();

            if (order == null)
            {
                return(null);
            }
            var p4mCart = new P4MCart
            {
                OrderId     = order.OrderId.ToString(),
                SessionId   = "Register",
                Date        = order.OrderDate,
                PaymentType = "DB",
                Currency    = "GBP",
                ShippingAmt = (double)order.Shipping,
                Tax         = (double)order.Tax,
                Items       = new List <P4MCartItem>()
            };
            var items = storeDB.OrderDetails.Where(i => i.OrderId == order.OrderId);

            foreach (var cartItem in items)
            {
                var item = cartItem.Item;// storeDB.Items.Single(i => i.ID == cartItem.ItemId);
                p4mCart.Items.Add(new P4MCartItem
                {
                    Make        = item.Name,
                    Sku         = item.ID.ToString(),
                    Desc        = item.Name,
                    Qty         = cartItem.Quantity,
                    Price       = (double)item.Price,
                    LinkToImage = item.ItemPictureUrl,
                });
            }
            var discounts = storeDB.OrderDiscounts.Where(d => d.OrderId == order.OrderId);

            foreach (var disc in discounts)
            {
                if (p4mCart.Discounts == null)
                {
                    p4mCart.Discounts = new List <P4MDiscount>();
                }
                p4mCart.Discounts.Add(new P4MDiscount {
                    Code = disc.DiscountCode.ToString(), Description = disc.Description, Amount = (double)disc.Amount
                });
            }
            return(p4mCart);
        }
Exemplo n.º 4
0
        //async Task AddItemsToP4MCartAsync()
        //{
        //    // update P4M with the current cart details
        //    var client = new HttpClient();
        //    var token = Request.Cookies["p4mToken"].Value;
        //    client.SetBearerToken(token);
        //    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        //    var cart = GetP4MCartFromLocalCart();
        //    var cartMessage = new PostCartMessage { Cart = cart, ClearItems = true, Currency = "GBP", PaymentType = "DB", SessionId = cart.SessionId };
        //    var content = new System.Net.Http.ObjectContent<PostCartMessage>(cartMessage, new JsonMediaTypeFormatter());
        //    var result = await client.PostAsync(_urls.BaseApiAddress + "cart", content);
        //    var messageString = await result.Content.ReadAsStringAsync();
        //    var message = JsonConvert.DeserializeObject<PostCartMessage>(messageString);
        //    if (!message.Success) {
        //        throw new Exception(message.Error);
        //    }
        //}

        P4MCart GetP4MCartFromLocalCart()
        {
            var localCart = ShoppingCart.GetCart(this.HttpContext);

            this.Response.Cookies[ShoppingCart.CartSessionKey].Value = localCart.ShoppingCartId;
            var p4mCart = new P4MCart
            {
                SessionId   = P4MConsts.SessionId, //localCart.ShoppingCartId,
                Date        = DateTime.UtcNow,
                PaymentType = "PA",
                Currency    = "GBP",
                ShippingAmt = (double)localCart.Shipping,
                Tax         = (double)localCart.Tax,
                Items       = new List <P4MCartItem>()
            };

            foreach (var cartItem in localCart.Items)
            {
                var item   = storeDB.Items.Single(i => i.ID == cartItem.ItemId);
                var picUrl = item.ItemPictureUrl;
                if (!picUrl.StartsWith("http") && !picUrl.StartsWith("/"))
                {
                    picUrl = "http://localhost:3000/" + picUrl;
                }
                p4mCart.Items.Add(new P4MCartItem
                {
                    Make        = item.Name,
                    Sku         = item.ID.ToString(),
                    Desc        = item.Name,
                    Qty         = cartItem.Count,
                    Price       = (double)item.Price,
                    LinkToImage = item.ItemPictureUrl,
                });
            }
            if (localCart.Discounts != null && localCart.Discounts.Count > 0)
            {
                foreach (var disc in localCart.Discounts)
                {
                    p4mCart.Discounts = new List <P4MDiscount> {
                        new P4MDiscount {
                            Code = disc.DiscountCode, Description = disc.Description, Amount = (double)disc.Amount
                        }
                    }
                }
                ;
            }
            return(p4mCart);
        }