Exemple #1
0
        //
        // GET: /ShoppingCart/AddToCart/5

        public async Task <IActionResult> AddToCart(int id)
        {
            // Retrieve the product from the database
            var addedProduct = _db.Products
                               .Single(product => product.ProductId == id);

            // Start timer for save process telemetry
            var startTime = System.DateTime.Now;

            // Add it to the shopping cart
            var cart = ShoppingCart.GetCart(_db, HttpContext);

            cart.AddToCart(addedProduct);

            await _db.SaveChangesAsync(HttpContext.RequestAborted);

            // Trace add process
            var measurements = new Dictionary <string, double>()
            {
                { "ElapsedMilliseconds", System.DateTime.Now.Subtract(startTime).TotalMilliseconds }
            };

            _telemetry.TrackEvent("Cart/Server/Add", null, measurements);

            // Go back to the main store page for more shopping
            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> AddressAndPayment(Order order)
        {
            var formCollection = await HttpContext.Request.ReadFormAsync();

            try
            {
                if (string.Equals(formCollection["PromoCode"].FirstOrDefault(), PromoCode,
                                  StringComparison.OrdinalIgnoreCase) == false)
                {
                    return(View(order));
                }
                else
                {
                    order.Username  = HttpContext.User.Identity.Name;
                    order.OrderDate = DateTime.Now;

                    //Add the Order
                    _db.Orders.Add(order);
                    await _db.SaveChangesAsync(HttpContext.RequestAborted);

                    //Process the order
                    var cart = ShoppingCart.GetCart(_db, HttpContext);
                    cart.CreateOrder(order);

                    // Save all changes
                    await _db.SaveChangesAsync(HttpContext.RequestAborted);

                    try
                    {
                        string      connectionString = Configuration[ConfigurationPath.Combine("ConnectionStrings", "StorageConnectionString")];
                        QueueClient queueClient      = new QueueClient(connectionString, "orders");
                        queueClient.CreateIfNotExists();
                        if (queueClient.Exists())
                        {
                            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(order.OrderId.ToString());
                            queueClient.SendMessage(System.Convert.ToBase64String(plainTextBytes));
                        }
                    }
                    catch (Exception ex)
                    {
                        return(View("Error"));
                    }

                    return(RedirectToAction("Complete",
                                            new { id = order.OrderId }));
                }
            }
            catch (Exception ex)
            {
                return(View("Error"));
            }
        }
Exemple #3
0
        public async Task <ActionResult> Create([Bind(Include = "RaincheckId,Name,ProductId,Quantity,SalePrice,StoreId")]
                                                RainCheck rainCheck)
        {
            if (ModelState.IsValid)
            {
                _db.RainChecks.Add(rainCheck);
                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewBag.StoreId   = new SelectList(_db.Stores, "StoreId", "Name", rainCheck.StoreId);
            ViewBag.ProductId = new SelectList(_db.Products, "ProductId", "SkuNumber", rainCheck.ProductId);
            return(View(rainCheck));
        }
Exemple #4
0
        public async Task <ActionResult> Create(
            [Bind(Include =
                      "ProductId,SkuNumber,RecommendationId,CategoryId,Title,Price,SalePrice,ProductArtUrl,Created,Description,ProductDetails,Inventory,LeadTime")]
            Product product)
        {
            if (ModelState.IsValid)
            {
                _db.Products.Add(product);
                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewBag.CategoryId = new SelectList(_db.Categories, "CategoryId", "Name", product.CategoryId);
            return(View(product));
        }
Exemple #5
0
        public async static Task UpdateProductProcessTaskAsync([QueueTrigger("product")] ProductMessage message)
        {
            var builder = new ConfigurationBuilder();

            builder.Add(new JsonConfigurationSource("config.json"));
            var config           = builder.Build();
            var connectionString = config["Data:DefaultConnection:ConnectionString"];

            using (var context = new PartsUnlimitedContext(connectionString))
            {
                var dbProductList = await context.Products.ToListAsync();

                foreach (var queueProduct in message.ProductList)
                {
                    var dbProduct = dbProductList.SingleOrDefault(x => x.SkuNumber == queueProduct.SkuNumber);

                    if (dbProduct != null)
                    {
                        dbProduct.Inventory = queueProduct.Inventory;
                        dbProduct.LeadTime  = queueProduct.LeadTime;
                    }
                }
                await context.SaveChangesAsync(CancellationToken.None);
            }
        }
        public async Task <int> AddAsync(Raincheck raincheck)
        {
            var addedRaincheck = _context.RainChecks.Add(raincheck);

            await _context.SaveChangesAsync(CancellationToken.None);

            return(addedRaincheck.Entity.RaincheckId);
        }
Exemple #7
0
        public async static Task UpdateProductProcessTaskAsync([QueueTrigger("product")] ProductMessage message)
        {
            using (var context = new PartsUnlimitedContext())
            {
                var dbProductList = await context.Products.ToListAsync();
                foreach (var queueProduct in message.ProductList)
                {
                    var dbProduct = dbProductList.SingleOrDefault(x => x.SkuNumber == queueProduct.SkuNumber);

                    if (dbProduct != null)
                    {
                        dbProduct.Inventory = queueProduct.Inventory;
                        dbProduct.LeadTime = queueProduct.LeadTime;
                    }
                }
                await context.SaveChangesAsync(CancellationToken.None);
            }
        }
Exemple #8
0
        public async static Task UpdateProductProcessTaskAsync([QueueTrigger("product")] ProductMessage message)
        {
            using (var context = new PartsUnlimitedContext())
            {
                var dbProductList = await context.Products.ToListAsync();

                foreach (var queueProduct in message.ProductList)
                {
                    var dbProduct = dbProductList.SingleOrDefault(x => x.SkuNumber == queueProduct.SkuNumber);

                    if (dbProduct != null)
                    {
                        dbProduct.Inventory = queueProduct.Inventory;
                        dbProduct.LeadTime  = queueProduct.LeadTime;
                    }
                }
                await context.SaveChangesAsync(CancellationToken.None);
            }
        }
Exemple #9
0
        public async Task <IActionResult> Create(Product product)
        {
            if (ModelState.IsValid)
            {
                _db.Products.Add(product);
                await _db.SaveChangesAsync(HttpContext.RequestAborted);

                _cache.Remove("announcementProduct");
                return(RedirectToAction("Index"));
            }

            ViewBag.Categories = new SelectList(_db.Categories, "CategoryId", "Name", product.CategoryId);
            return(View(product));
        }
Exemple #10
0
        public async static Task UpdateProductProcessTaskAsync([QueueTrigger("product")] ProductMessage message)
        {
            var config = new Configuration().AddJsonFile("config.json");
            var connectionString = config.Get("Data:DefaultConnection:ConnectionString");

            using (var context = new PartsUnlimitedContext(connectionString))
            {
                var dbProductList = await context.Products.ToListAsync();
                foreach (var queueProduct in message.ProductList)
                {
                    var dbProduct = dbProductList.SingleOrDefault(x => x.SkuNumber == queueProduct.SkuNumber);

                    if (dbProduct != null)
                    {
                        dbProduct.Inventory = queueProduct.Inventory;
                        dbProduct.LeadTime = queueProduct.LeadTime;
                    }
                }
                await context.SaveChangesAsync(CancellationToken.None);
            }
        }