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")); }
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); }
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(); } }
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); }
public override void AddProduct(AddToShoppingCartModel model) { base.AddProduct(model); }
public virtual string CheckAddingRules(AddToShoppingCartModel model) { return(shoppingCart.CheckAddingRules(model)); }
public virtual void AddProduct(AddToShoppingCartModel model) { shoppingCart.AddProduct(model); }