public static ResponseEntity AddProductToCart(Product product) { ResponseEntity res = new ResponseEntity(); //Saber si es nulo if (HttpContext.Current.Session["OrderView"] == null) { CreateOrderViewInSession(); } //Recupero el listado de la Orden en sesion, debo castearlo. List <ModelNotMapped.OrderView.OrderView> ListOrderView = HttpContext.Current.Session["OrderView"] as List <ModelNotMapped.OrderView.OrderView>; //Consulto si existe el producto ID ya en la lista. if (ListOrderView.Any(x => x.ProductID == product.ProductID)) { var GetProduct = ListOrderView.Where(x => x.ProductID == product.ProductID).First(); int Quantity = GetProduct.Quantity + 1; //Sumo una nueva cantidad. //Consulto si la cantidad nueva excede al stock del producto. if (!RepositoryProduct.IsThereStockToProcess(GetProduct.ProductID, Quantity)) { return(res = new ResponseEntity() { status = false, message = "No hay suficiente stock para realizar tal operacion" }); } GetProduct.Quantity += 1; //Sumo una nueva cantidad. } else { var orderView = new ModelNotMapped.OrderView.OrderView() { ProductID = product.ProductID, ProductName = product.Name, Price = product.Price, Quantity = 1, }; if (!RepositoryProduct.IsThereStockToProcess(orderView.ProductID, orderView.Quantity)) { return(res = new ResponseEntity() { status = false, message = "No hay suficiente stock para realizar tal operacion" }); } ListOrderView.Add(orderView); } HttpContext.Current.Session["OrderView"] = ListOrderView; return(res = new ResponseEntity() { status = true, message = "" }); }