public IHttpActionResult PostReview([FromBody] CreateRestaurantReviewApiModel createRestaurantReviewApiModel) { var restaurantReviewsV1Manager = new RestaurantReviewsV1Manager(); int newRestaurantReviewApiId; ResponseBllModel responseBllModel = restaurantReviewsV1Manager.PostRestaurantReview(createRestaurantReviewApiModel, out newRestaurantReviewApiId); if (responseBllModel.Result == ResultEnum.Success) { return(Ok(newRestaurantReviewApiId)); } else { return(GetResponseApiActionResult(responseBllModel)); } }
public ResponseBllModel PostRestaurantReview(CreateRestaurantReviewApiModel createRestaurantReviewApiModel, out int newRestaurantReviewApiId) { newRestaurantReviewApiId = 0; try { //Validation checks: string parameterName; if (createRestaurantReviewApiModel == null) { parameterName = "createRestaurantReviewApiModel"; return(new ResponseBllModel { Result = ResultEnum.MissingParameter, ParameterName = parameterName, ErrorMessage = MessageHelper.GetMissingParameterErrorMessage(parameterName) }); } if (createRestaurantReviewApiModel.RestaurantApiId < 1) { parameterName = "createRestaurantReviewApiModel.RestaurantApiId"; return(new ResponseBllModel { Result = ResultEnum.MissingParameter, ParameterName = parameterName, ErrorMessage = MessageHelper.GetMissingParameterErrorMessage(parameterName) }); } if (string.IsNullOrWhiteSpace(createRestaurantReviewApiModel.ReviewerEmail)) { parameterName = "createRestaurantReviewApiModel.ReviewerEmail"; return(new ResponseBllModel { Result = ResultEnum.MissingParameter, ParameterName = parameterName, ErrorMessage = MessageHelper.GetMissingParameterErrorMessage(parameterName) }); } if (createRestaurantReviewApiModel.NumberOfStars < 1 || createRestaurantReviewApiModel.NumberOfStars > 5) { parameterName = "createRestaurantReviewApiModel.NumberOfStars"; return(new ResponseBllModel { Result = ResultEnum.InvalidParameter, ParameterName = parameterName, ErrorMessage = MessageHelper.GetInvalidParameterErrorMessage(parameterName, "Its valid values can only be 1 through 5.") }); } //The Text field is optional. using (var dbContext = new RestaurantReviewsDbEntities()) { //Validation check for the RestaurantApiId. var foundRestaurant = (from r in dbContext.Restaurants where r.SystemId == createRestaurantReviewApiModel.RestaurantApiId select new { r.SystemId }).FirstOrDefault(); if (foundRestaurant == null) { parameterName = "createRestaurantReviewApiModel.RestaurantApiId"; return(new ResponseBllModel { Result = ResultEnum.InvalidParameter, ParameterName = parameterName, ErrorMessage = MessageHelper.GetInvalidParameterErrorMessage(parameterName, string.Concat("The invalid value is: ", createRestaurantReviewApiModel.RestaurantApiId)) }); } Reviewer reviewer = (from rv in dbContext.Reviewers where rv.Email == createRestaurantReviewApiModel.ReviewerEmail select rv).FirstOrDefault(); DateTime utcNow = DateTime.UtcNow; if (reviewer == null) { reviewer = new Reviewer { Email = createRestaurantReviewApiModel.ReviewerEmail, CreatedDate = utcNow, ModifiedDate = utcNow }; dbContext.Reviewers.Add(reviewer); } var restaurantReview = new RestaurantReview { RestaurantSystemId = createRestaurantReviewApiModel.RestaurantApiId, ReviewerSystemId = reviewer.SystemId, ReviewDate = utcNow, NumberOfStars = createRestaurantReviewApiModel.NumberOfStars, Text = createRestaurantReviewApiModel.Text, CreatedDate = utcNow, ModifiedDate = utcNow }; dbContext.RestaurantReviews.Add(restaurantReview); dbContext.SaveChanges(); newRestaurantReviewApiId = restaurantReview.SystemId; } return(new ResponseBllModel { Result = ResultEnum.Success }); } catch (Exception ex) { return(GetUnexpectedErrorResponseBllModel(ex)); } }