// POST api/cartitem public HttpResponseMessage Post([FromBody] CartItemModel cartItem) { try { // token correct if (cartItem != null && cartItem.Token != null && Common.Token.Equals(cartItem.Token)) { if (ModelState.IsValid) { DBItem db = new DBItem(cartItem.Token); HttpStatusCode status; // Add cart item in DB bool success = db.AddCartItem(cartItem, out status); if (success) { // HTTP 200 - Saved Successfully return(Request.CreateErrorResponse(HttpStatusCode.OK, "Item added successfully to your cart")); } else { if (status == HttpStatusCode.Gone) { // HTTP 410 - Not enough quantity in stock return(Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Not enough quantity in stock. Please check if you already have this item in the cart")); } else { // HTTP 500 - Internal Error return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Internal Error")); } } } else { //validation errors string message = string.Join(", ", ModelState.Values .SelectMany(x => x.Errors) .Select(x => x.ErrorMessage)); return(Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, message)); } } else { new Logging().LogProgress(cartItem.Token, Common.CallerIP, new Exception("Invalid token passed")); // HTTP 400 - Bad Request (token incorrect) return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Invalid token passed")); } } catch (Exception ex) { new Logging().LogProgress(cartItem.Token, Common.CallerIP, ex); // HTTP 500 - Internal Error return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Internal Error")); } }