예제 #1
0
        public async Task <IActionResult> Edit(string id, [Bind("Id")] Cart cart)
        {
            if (id != cart.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(cart);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CartExists(cart.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(cart));
        }
예제 #2
0
        public async Task <IActionResult> PutCartItems(int id, CartItems cartItems)
        {
            if (id != cartItems.Id)
            {
                return(BadRequest());
            }

            _context.Entry(cartItems).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CartItemsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutCarts([FromRoute] int id, [FromBody] Carts carts)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != carts.Id)
            {
                return(BadRequest());
            }

            _context.Entry(carts).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CartsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #4
0
        public async Task <ActionResult <CartItem> > PostCartItem(CartItem item)
        {//201(Created)
            _context.CartItems.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetCartItem), new { id = item.id }, item));
        }
예제 #5
0
        public async Task <IActionResult> Create([Bind("Id,Name,Code,PercentOff,StartDate,EndDate")] Promotion promotion)
        {
            if (ModelState.IsValid)
            {
                _context.Add(promotion);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(promotion));
        }
        public async Task <IActionResult> AddItemsToCart(int userId, [FromBody] int[] productIds)
        {
            if (userId <= 0)
            {
                return(BadRequest());
            }

            var shoppingCart = await _cartContext.ShoppingCarts
                               .Include(b => b.Items)
                               .SingleOrDefaultAsync(ci => ci.UserId == userId);

            if (shoppingCart == null)
            {
                shoppingCart = new Models.ShoppingCart()
                {
                    UserId = userId
                };

                _cartContext.ShoppingCarts.Add(shoppingCart);

                var createCartResult = await _cartContext.SaveChangesAsync();

                if (createCartResult > 0)
                {
                    _eventStore.Raise("Создана корзина", shoppingCart);
                }
            }

            var shoppingCartItems = await _productCatalogueClient.GetShoppingCartItems(productIds).ConfigureAwait(false);


            if (shoppingCartItems.Count() > 0)
            {
                foreach (var item in shoppingCartItems)
                {
                    var cartItem = _cartContext.ShoppingCartItems.FirstOrDefault(i => i.Id == item.Id);

                    if (cartItem == null)
                    {
                        item.ShoppingCartId = shoppingCart.Id;
                        _cartContext.ShoppingCartItems.Add(item);
                    }
                }
            }

            var addItemResult = await _cartContext.SaveChangesAsync();

            if (addItemResult > 0)
            {
                _eventStore.Raise("Добавлен товар", shoppingCart);
            }

            return(Ok(shoppingCart));
        }
예제 #7
0
        public async Task <IActionResult> Create([Bind("Id,EntryItemId,UserId,Quantity")] CartEntry cartEntry)
        {
            if (ModelState.IsValid)
            {
                _context.Add(cartEntry);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(cartEntry));
        }
예제 #8
0
        public async Task <IActionResult> Create([Bind("Id,Name")] Category category)
        {
            if (ModelState.IsValid)
            {
                _context.Add(category);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(category));
        }
        public async Task <IActionResult> Create([Bind("Id,Name,Description,Price,SalePrice,ImageLOC,InStore")] Item item)
        {
            if (ModelState.IsValid)
            {
                _context.Add(item);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(item));
        }
예제 #10
0
        public async Task <bool> DeleteCartAsync(string id)
        {
            var cart = await _context.Carts.SingleOrDefaultAsync(c => c.BuyerId == id);

            if (cart == null)
            {
                _logger.LogInformation($"Cart with id {id} doesn't exists.");
                return(false);
            }

            _context.Remove(cart);
            int result = await _context.SaveChangesAsync();

            return(result > 0);
        }
 public Task HandleMessage(ProductPriceChangedMessageEvent productPriceChanged)
 {
     return(Task.Run(async() =>
     {
         var cartItemsAffected = CartContext.CartItems.Where(item => item.ProductId == productPriceChanged.ProductId);
         foreach (var cartItem in cartItemsAffected)
         {
             var oldPrice = cartItem.Price;
             if (productPriceChanged.Price != oldPrice)
             {
                 cartItem.Price = productPriceChanged.Price;
                 var cartParent = await CartContext.Carts.FirstOrDefaultAsync(cart => cart.Id == cartItem.CartId);
                 // No user information, don't send email
                 if (cartParent == null)
                 {
                     return;
                 }
                 //Send email about price change
                 EventBus.Publish(new CartPriceChangedMessageEvent()
                 {
                     CartItemName = cartItem.ProductName, NewPrice = cartItem.Price, OldPrice = oldPrice, UserId = cartParent.UserId, CartId = cartParent.Id
                 });
             }
         }
         await CartContext.SaveChangesAsync();
     }));
 }
 public async Task AddItem(ShoppingCart shoppingCart, ShoppingCartItem newItem)
 {
     if (shoppingCart.Items.Any(i => i.ExternalId == newItem.ExternalId))
     {
         var item = shoppingCart.Items.Single(i => i.ExternalId == newItem.ExternalId);
         item.ExternalSource        = newItem.ExternalSource;
         item.Contents              = newItem.Contents;
         item.UnitPrice             = newItem.UnitPrice;
         item.Quantity             += newItem.Quantity;
         _context.Entry(item).State = EntityState.Modified;
         await _context.SaveChangesAsync();
     }
     else
     {
         shoppingCart.Items.Add(newItem);
         await _context.SaveChangesAsync();
     }
 }
예제 #13
0
        private async Task PersistData()
        {
            var result = await _context.SaveChangesAsync();

            if (result <= 0)
            {
                AddProcessingError("Não foi possível persistir os dados!");
            }
        }
        public IActionResult UpdateAccount(int userid, string password, string billingAddress)
        {
            User user = _context.Users.SingleOrDefault(u => u.Id == userid);

            if (password != null)
            {
                byte[] data = System.Text.Encoding.ASCII.GetBytes(password);
                data          = new System.Security.Cryptography.SHA256Managed().ComputeHash(data);
                user.Password = System.Text.Encoding.ASCII.GetString(data);
            }
            if (password != null)
            {
                user.BillingAddress = billingAddress;
            }
            _context.Update(user);
            _context.SaveChangesAsync();

            return(View("EditSuccess"));
        }
예제 #15
0
        public async Task Consume(ConsumeContext <OrderPlacedEvent> context)
        {
            var cart = _cartContext.Carts.FirstOrDefault(x => x.Id == context.Message.SourceCartId);

            if (cart == null)
            {
                throw new Exception($"Could not find cart with id {context.Message.SourceCartId}");
            }

            _cartContext.Carts.Remove(cart);
            await _cartContext.SaveChangesAsync();
        }
예제 #16
0
        // POST: Carts/Create
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see http://go.microsoft.com/fwlink/?LinkId=317598.

        public async Task <IActionResult> Create(string GoodId)
        {
            var user = await userManager.GetUserAsync(User);

            // var gd = _Goodcontext.Goods.Where(u => u.Good.Id.Equals(GoodId));
            Item good = _itemcontext.Item.Find(GoodId);

            List <Cart> allcarts = _context.Cart.ToList();

            foreach (var t in allcarts)
            {
                if (t.ItemId == GoodId && t.UserId == user.Id)
                {
                    return(NotFound("An item is already in your cart !!!"));
                }
            }


            Console.WriteLine(good);
            Cart cart = new Cart();
            //var user =  userManager.GetUserAsync(User).Result;
            var varUser = _context7.Users.Where(u => u.Email.Equals(User.Identity.Name));

            //var user = varUser.FirstOrDefault();

            //var user = User.Identity.;
            // var good = _goodsRepository.AllGoods.FirstOrDefault(p => p.Id == id);
            if (ModelState.IsValid)
            {
                //    cart.Good = good;
                cart.Id     = good.Id + "CART" + user.Id;
                cart.ItemId = good.Id;
                cart.UserId = user.Id;
                _context.Add(cart);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(RedirectToAction("Index", cart));
        }
예제 #17
0
            public async Task <Unit> Handle(Execute request, CancellationToken cancellationToken)
            {
                var _cart = new Models.CartSession()
                {
                    CreatedAt = request.CreatedAt.Value
                };

                _cartContext.CartSession.Add(_cart);

                int txId = await _cartContext.SaveChangesAsync();

                if (txId == 0)
                {
                    throw new Exception("Error al crear Cart");
                }

                int cartId = _cart.CartSessionId;

                foreach (var item in request.ProductList)
                {
                    var detalle = new Models.CartDetail()
                    {
                        CartSessionId = cartId,
                        CreatedAt     = DateTime.Now,
                        ProductId     = item
                    };

                    _cartContext.CartDetail.Add(detalle);
                }

                int transId = await _cartContext.SaveChangesAsync();

                if (transId == 0)
                {
                    throw new Exception("Error guardando detalles");
                }

                return(Unit.Value);
            }
예제 #18
0
            public async Task <Unit> Handle(Execute request, CancellationToken cancellationToken)
            {
                var sesionCart = new SessionCart
                {
                    CreationDate = request.CreationDate,
                };

                _context.SessionCart.Add(sesionCart);
                var value = await _context.SaveChangesAsync();

                if (value == 0)
                {
                    throw new Exception("la sesion del carrito no se pudo insertar");
                }

                int id = sesionCart.SesionCartId;

                foreach (var obj  in request.ListProduct)
                {
                    var detailSesion = new SessionCartDetail
                    {
                        CreationDate    = DateTime.Now,
                        SesionCartId    = id,
                        SelectedProduct = obj,
                    };

                    _context.SessionCartDetail.Add(detailSesion);
                }
                value = await _context.SaveChangesAsync();

                if (value > 0)
                {
                    return(Unit.Value);
                }
                throw new Exception("No se pudo insetar el detalle del carrito compras");
            }
예제 #19
0
        public async Task Consume(ConsumeContext <ProductUpdatedEvent> context)
        {
            var product = _cartContext.Products.FirstOrDefault(x => x.Id == context.Message.ProductDetails.Id);

            if (product == null) // no product to update
            {
                return;
            }

            if (context.Message.ProductDetails.IsActive && !context.Message.ProductDetails.IsDeleted)
            {
                product.Name  = context.Message.ProductDetails.Name;
                product.Price = context.Message.ProductDetails.Price;
            }
            else
            {
                _cartContext.Products.Remove(product);
            }


            await _cartContext.SaveChangesAsync();
        }
예제 #20
0
 public Task Save()
 {
     return(_appDbContext.SaveChangesAsync());
 }