public IHttpActionResult PostMeal(MealBindingModel model) { if (model == null) { return BadRequest(); } if (!ModelState.IsValid) { return BadRequest(ModelState); } var currRestaurant = this.db.Restaurants.All().FirstOrDefault(r => r.Id == model.RestaurantId); var currMealType = this.db.MealTypes.All().FirstOrDefault(m => m.Id == model.TypeId); var meal = new Meal() { Name = model.Name, Price = model.Price, Restaurant = currRestaurant, Type = currMealType }; db.Meals.Add(meal); db.SaveChanges(); var mealViewModel = new MealViewModel() { Id = meal.Id, Name = meal.Name, Price = meal.Price, Type = meal.Type.Name }; return this.Created("http://localhost:1337/api/meals/" + meal.Id, mealViewModel); }
public IHttpActionResult CreateNewMeal(MealBindingModel mealModel) { if (mealModel == null) { return this.BadRequest("Meal data cannot be null."); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var existingRestaurant = this.Data.Restaurants.All() .FirstOrDefault(r => r.Id == mealModel.RestaurantId); if (existingRestaurant == null) { return this.NotFound(); } var loggedUserId = this.UserIdProvider.GetUserId(); if (loggedUserId == null) { return this.Unauthorized(); } if (existingRestaurant.OwnerId != loggedUserId) { return this.BadRequest("Cannot create a meal in foreign restaurant."); } var existingMealType = this.Data.MealTypes.All() .FirstOrDefault(mt => mt.Id == mealModel.TypeId); if (existingMealType == null) { return this.NotFound(); } var newMeal = new Meal { Name = mealModel.Name, Price = mealModel.Price, RestaurantId = mealModel.RestaurantId, Restaurant = existingRestaurant, TypeId = mealModel.TypeId, Type = existingMealType, }; this.Data.Meals.Add(newMeal); existingRestaurant.Meals.Add(newMeal); this.Data.SaveChanges(); return this.CreatedAtRoute( "DefaultApi", new { Id = newMeal.Id, Controller = "meals" }, MealViewModel.CreateSingle(newMeal)); }