Exemplo n.º 1
0
        public IActionResult AddProduct(AddToShoppingCartModel model)
        {
            //EF Core inmemory veritabanını entegre etmek için yazıldı
            _context.Database.EnsureCreated();

            var cartType = _context.UserShoppingCarts.AsNoTracking()
                           .Where(x => x.UserShoppingCartsId == model.UserShoppingCartId)
                           .Select(x => x.ProductType)
                           .Single();

            IShoppingCart shoppingCart = cartType.CreateShoppingCart();

            //veritabanı kaydından önce kontroller çalıştırılıyor.
            string error = shoppingCart.CheckAddingRules(model);

            if (!string.IsNullOrEmpty(error))
            {
                return(BadRequest(error));
            }

            //sepete ekleme işlemi gerçekleştiriliyor.
            shoppingCart.AddProduct(model);

            //işlemler sonucunda veritabanındaki değişiklikleri görmek isterseniz
            //aşağıdaki kod bloğunu aktif hale getirip 55. satıra break point yerleştirdikten sonra listeleri inceleyebilirsiniz

            /*
             * var productList = _context.Products.AsNoTracking().ToList();
             * var userList = _context.Users.AsNoTracking().ToList();
             * var userShoppingCartList = _context.UserShoppingCarts.AsNoTracking().ToList();
             * var productsInShoppingCartsList = _context.ProductsInShoppingCarts.AsNoTracking().ToList();
             */

            return(Ok("İşleminiz başarıyla gerçekleşti"));
        }
Exemplo n.º 2
0
        public string CheckAddingRules(AddToShoppingCartModel model)
        {
            const int maxCountInCart = 10;

            using (var ctx = new DataContext())
            {
                var productCountInInventory = ctx.Products.AsNoTracking()
                                              .Where(x => x.ProductId == model.ProductId)
                                              .SingleOrDefault();

                if (productCountInInventory == null)
                {
                    return("Envanterimizde böyle bir ürün bulunmamaktadır.");
                }
                else
                {
                    if (productCountInInventory.CountInInventory - model.Count < 0)
                    {
                        return($"Envanterimizde yeterli sayıda {model.ProductName} ürünü bulunmamaktadır.");
                    }
                }


                int totalProductCountInCart = ctx.ProductsInShoppingCarts.AsNoTracking()
                                              .Where(x => x.UserShoppingCartsId == model.UserShoppingCartId && x.ProductId == model.ProductId)
                                              .Sum(x => (int?)x.ProductsCount) ?? 0;

                if (model.Count + totalProductCountInCart > maxCountInCart)
                {
                    return($"Sepetinize en fazla {maxCountInCart} adet ürün ekleyebilirsiniz");
                }
            }
            return(string.Empty);
        }
Exemplo n.º 3
0
        public void AddProduct(AddToShoppingCartModel model)
        {
            using (var ctx = new DataContext())
            {
                //stoktan düşme işlemi
                var product = ctx.Products.Find(model.ProductId);
                product.CountInInventory -= (int)model.Count;

                //sepete ekleme işlemleri
                var productsInShoppingCarts = ctx.ProductsInShoppingCarts.Where(x => x.UserShoppingCartsId == model.UserShoppingCartId && x.ProductId == model.ProductId)
                                              .SingleOrDefault();

                if (productsInShoppingCarts == null)
                {
                    ProductsInShoppingCarts newProductInShoppingCarts = new ProductsInShoppingCarts
                    {
                        ProductId           = (int)model.ProductId,
                        UserShoppingCartsId = (int)model.UserShoppingCartId,
                        ProductsCount       = (int)model.Count
                    };

                    ctx.ProductsInShoppingCarts.Add(newProductInShoppingCarts);
                }
                else
                {
                    productsInShoppingCarts.ProductsCount += (int)model.Count;
                }

                ctx.SaveChanges();
            }
        }
Exemplo n.º 4
0
        public override string CheckAddingRules(AddToShoppingCartModel model)
        {
            string checkFromBase = base.CheckAddingRules(model);

            if (!string.IsNullOrEmpty(checkFromBase))
            {
                return(checkFromBase);
            }

            using (var ctx = new DataContext())
            {
                bool isMusicType = ctx.Products.AsNoTracking()
                                   .Where(x => x.ProductId == model.ProductId)
                                   .Select(x => x.ProductType)
                                   .Single() == ProductTypes.Music;
                if (!isMusicType)
                {
                    return("Ürün türü müzik olan bir sepete sadece müzik kategorisinde bir ürün eklenebilir.");
                }
            }
            return(string.Empty);
        }
Exemplo n.º 5
0
 public override void AddProduct(AddToShoppingCartModel model)
 {
     base.AddProduct(model);
 }
Exemplo n.º 6
0
 public virtual string CheckAddingRules(AddToShoppingCartModel model)
 {
     return(shoppingCart.CheckAddingRules(model));
 }
Exemplo n.º 7
0
 public virtual void AddProduct(AddToShoppingCartModel model)
 {
     shoppingCart.AddProduct(model);
 }