public void UpdateProduct(Models.Product product)
        {
            using (var context = new SketchyProductsEntities())
            {
                var productDb = context.Products.SingleOrDefault(p => p.ProductId == product.Id);
                if (productDb != null)
                {
                    productDb.Cost     = product.Cost;
                    productDb.ImageUrl = product.ImageUrl;
                    productDb.Name     = product.Name;
                    productDb.Summary  = product.Summary;
                    context.SaveChanges();
                    foreach (var detail in productDb.ProductDetails.ToList())
                    {
                        context.ProductDetails.Remove(detail);
                    }
                    context.SaveChanges();
                }
            }

            foreach (var detail in product.Details)
            {
                AddProductToModel(product.Id, detail);
            }
        }
        private Cart GetNewestCartForUser(SketchyProductsEntities context, string userId)
        {
            var cartHistory = context.CartHistories.Where(c => c.UserId == userId).Select(c => c.CartId).ToList();
            var currentCart = context.Carts.FirstOrDefault(c => !cartHistory.Contains(c.Id) && c.UserId == userId);

            return(currentCart);
        }
 public void DeleteProduct(Models.Product product)
 {
     using (var context = new SketchyProductsEntities())
     {
         var productToDelete = context.Products.Single(s => s.ProductId == product.Id);
         context.Products.Remove(productToDelete);
         context.SaveChanges();
     }
 }
 public Models.Product GetProductById(int id)
 {
     using (var context = new SketchyProductsEntities())
     {
         var productDb = context.Products.SingleOrDefault(p => p.ProductId == id);
         var product   = Mapper.Map <Models.Product>(productDb);
         foreach (var detail in productDb.ProductDetails)
         {
             product.Details.Add(detail.DetailText);
         }
         return(product);
     }
 }
 private void AddProductToModel(int id, string detail)
 {
     using (var context = new SketchyProductsEntities())
     {
         var productDetail = new ProductDetail
         {
             ProductId  = id,
             DetailText = detail
         };
         context.ProductDetails.Add(productDetail);
         context.SaveChanges();
     }
 }
 public IEnumerable <Models.Product> GetAllProducts()
 {
     using (var context = new SketchyProductsEntities())
     {
         foreach (var items in context.Products.ToList())
         {
             var product = Mapper.Map <Models.Product>(items);
             foreach (var detail in items.ProductDetails)
             {
                 product.Details.Add(detail.DetailText);
             }
             yield return(product);
         }
     }
 }
        public Models.Product CreateProduct(Models.Product product)
        {
            var newestProduct = product;

            using (var context = new SketchyProductsEntities())
            {
                var productToAdd = Mapper.Map <Product>(product);
                var productAdded = context.Products.Add(productToAdd);
                context.SaveChanges();
                newestProduct = Mapper.Map <Models.Product>(productAdded);
            }

            foreach (var detail in product.Details)
            {
                AddProductToModel(newestProduct.Id, detail);
            }
            return(newestProduct);
        }
        private int GetCartIdFromCurrentCart(SketchyProductsEntities context, string userId, Cart currentCart)
        {
            var cartId = 0;

            if (currentCart is null)
            {
                var cart = new Cart()
                {
                    UserId = userId
                };
                cart = context.Carts.Add(cart);
                context.SaveChanges();
                cartId = cart.Id;
            }
            else
            {
                cartId = currentCart.Id;
            }
            return(cartId);
        }