public AddItemToCartResponse AddItemToCart(AddItemToCartRequest addItemToCartRequest) { AddItemToCartResponse response = new AddItemToCartResponse(); var cart = GetCart(); if (cart != null) { var existingCartItem = _cartItemRepository.FindCartItemsByCartId(cart.Id) .FirstOrDefault(c => c.ProductId == addItemToCartRequest.ProductId); if (existingCartItem != null) { existingCartItem.Quantity++; _cartItemRepository.UpdateCartItem(existingCartItem); response.CartItem = _messageMapper.MapToCartItemDto(existingCartItem); } else { var product = _productRepository.FindProductById(addItemToCartRequest.ProductId); if (product != null) { var cartItem = new CartItem { CartId = cart.Id, Cart = cart, ProductId = addItemToCartRequest.ProductId, Product = product, Quantity = 1 }; _cartItemRepository.SaveCartItem(cartItem); response.CartItem = _messageMapper.MapToCartItemDto(cartItem); } } } else { var product = _productRepository.FindProductById(addItemToCartRequest.ProductId); if (product != null) { var newCart = new Cart { UniqueCartId = UniqueCartId(), CartStatus = CartStatus.Open }; _cartRepository.SaveCart(newCart); var cartItem = new CartItem { CartId = newCart.Id, Cart = newCart, ProductId = addItemToCartRequest.ProductId, Product = product, Quantity = 1 }; _cartItemRepository.SaveCartItem(cartItem); response.CartItem = _messageMapper.MapToCartItemDto(cartItem); } } return(response); }