public HttpResponseMessage Cancel(int id, [FromBody] Options options) { try { var foundRide = jsonParser.ReadRides().Where(r => r.ID == id).First(); var foundUser = jsonParser.ReadUsers().Where(u => u.Username.Equals(foundRide.RideCustomer.Username)).First(); foundRide.StatusOfRide = RideStatuses.CANCELED.ToString(); foundRide.RideComment = new Comment(); foundRide.RideComment.CommentRide = new Ride(); foundRide.RideComment.CommentRide = foundRide; foundRide.RideComment.DateAndTime = DateTime.Now; foundRide.RideComment.Description = options.Comment; switch (options.RideMark) { case 1: foundRide.RideComment.RideMark = RideMarks.ONE; break; case 2: foundRide.RideComment.RideMark = RideMarks.TWO; break; case 3: foundRide.RideComment.RideMark = RideMarks.THREE; break; case 4: foundRide.RideComment.RideMark = RideMarks.FOUR; break; case 5: foundRide.RideComment.RideMark = RideMarks.FIVE; break; default: foundRide.RideComment.RideMark = RideMarks.ZERO; break; } foundRide.RideComment.CommentUser = foundUser; jsonParser.EditRide(id, foundRide); jsonParser.DeleteRideFromUser(foundUser, foundRide); return(Request.CreateResponse(HttpStatusCode.OK, $"Ride {id} is cancelled.")); } catch (Exception) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $"Ride {id} was not cancelled.")); } }