Example #1
0
        // 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"));
            }
        }