public IHttpActionResult CreateRestaurants(RestaurantsBindingModel m) { if (!ModelState.IsValid) return this.BadRequest(); var restaurant = new Restaurant { Name = m.Name, TownId = m.TownId, OwnerId = User.Identity.GetUserId() }; var townName = this.Data.Towns.FirstOrDefault(t => t.Id == m.TownId).Name; this.Data.Restaurants.Add(restaurant); this.Data.SaveChanges(); //Hardcoded location because CreatedAtRoute kept throwing some kind of stupid exception. //My code is bad and I should feel bad... But Hey, it works! return this.Created("http://localhost:1337/api/restaurants/" + restaurant.Id, new { id = restaurant.Id, name = restaurant.Name, rating = (Rating)null, town = new { id = restaurant.TownId, name = townName } }); }
public IHttpActionResult CreateNewRestaurant([FromBody]RestaurantBindingModel model) { if (model == null) { return BadRequest("Missing restraunt data."); } if (!ModelState.IsValid) { return BadRequest(ModelState); } var currentUserId = User.Identity.GetUserId(); var currentUser = db.Users.Find(currentUserId); var restrauntToPost = new Restaurant() { Name = model.Name, TownId = int.Parse(model.TownId), OwnerId = currentUserId }; db.Restaurants.Add(restrauntToPost); db.SaveChanges(); return this.CreatedAtRoute( "DefaultApi", new { controller = "restaurants", id = restrauntToPost.Id }, new { restrauntToPost.Id, restrauntToPost.Name }); }
public IHttpActionResult PostRestaurant(RestaurantBindingModel restaurant) { if (!ModelState.IsValid || restaurant == null) { return BadRequest(ModelState); } var userId = this.User.Identity.GetUserId(); var restaurantToAdd = new Restaurant() { Name = restaurant.Name, TownId = restaurant.TownId, OwnerId = userId }; db.Restaurants.Add(restaurantToAdd); db.SaveChanges(); var rvm = new RestaurantViewModel() { Id = restaurantToAdd.Id, Name = restaurantToAdd.Name, Rating = null, Town = new TownViewModel() { Id = restaurantToAdd.TownId, Name = db.Towns.FirstOrDefault(t => t.Id == restaurantToAdd.TownId).Name } }; return CreatedAtRoute("DefaultApi", new { id = rvm.Id }, rvm); }
public void EditMeal_NonExistingMeal_ShouldNotReturnMealForEditing() { using (var dbContext = new RestaurantsContext()) { var httpTestServer = TestServer.Create(appBuilder => { var config = new HttpConfiguration(); WebApiConfig.Register(config); appBuilder.UseWebApi(config); }); // Arrange // Clean Database CleanDatabase(); // Create restaurant var restaurant = new Restaurant() { Id = 1, Name = "Gurlata", TownId = 1 }; // Create meal var meal = new Meal() { Id = 1, Name = "Shish kebab", Price = 18.2m, TypeId = 3, RestaurantId = 1 }; // Act -> add restaurant and meal to database dbContext.Restaurants.Add(restaurant); dbContext.Meals.Add(meal); dbContext.SaveChanges(); var mealWithNonExistingId = dbContext.Meals .Where(m => m.Id == meal.Id + 1); // Assert -> check if non existing meal returns not found var fakeMealId = meal.Id + 1; var fakeMeal = dbContext.Meals.Find(fakeMealId); Assert.IsNull(fakeMeal); CleanDatabase(); } }
private static int CalculateSumOfRatings(Restaurant currentRestaurant) { var ratings = currentRestaurant.Ratings .Select(r => r.Stars) .ToList(); int sum = 0; foreach (var rating in ratings) { sum += rating; } return sum; }
public static RestaurantViewModel CreateSingle(Restaurant restaurant) { return new RestaurantViewModel { Id = restaurant.Id, Name = restaurant.Name, Rating = null, Town = new TownViewModel { Id = restaurant.TownId, Name = restaurant.Town.Name } }; }
public IHttpActionResult CreateRestaurant(RestaurantBindingModel restaurantModel) { var loggedUserId = this.UserIdProvider.GetUserId(); if (loggedUserId == null) { return this.Unauthorized(); } var loggedUser = this.Data.ApplicationUsers.All() .FirstOrDefault(u => u.Id == loggedUserId); if (restaurantModel == null) { return this.BadRequest(); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var existingTown = this.Data.Towns.All() .FirstOrDefault(t => t.Id == restaurantModel.TownId); if (existingTown == null) { return this.NotFound(); } var newRestaurant = new Restaurant { Name = restaurantModel.Name, TownId = restaurantModel.TownId, Town = existingTown, OwnerId = loggedUserId, Owner = loggedUser }; this.Data.Restaurants.Add(newRestaurant); existingTown.Restaurants.Add(newRestaurant); this.Data.SaveChanges(); return this.CreatedAtRoute( "DefaultApi", new { Id = newRestaurant.Id, Controller = "restaurants" }, RestaurantViewModel.CreateSingle(newRestaurant)); }
public IHttpActionResult CreateNewRestaurant(RestourantBindingModel restourantModel) { if (restourantModel == null) { return this.BadRequest("Invalid restaurant data."); } if (!ModelState.IsValid) { return BadRequest(ModelState); } var currentUserId = User.Identity.GetUserId(); if (currentUserId == null) { return this.Unauthorized(); } var town = db.Towns.FirstOrDefault(t => t.Id == restourantModel.TownId); var restaurant = new Restaurant() { Name = restourantModel.Name, Town = town, OwnerId = currentUserId }; db.Restaurants.Add(restaurant); db.SaveChanges(); return CreatedAtRoute( "DefaultApi", new { id = restaurant.Id }, new RestourantOutputModel() { Id = restaurant.Id, Name = restaurant.Name, Rating = null, Town = new TownOutputModel() { Id = restaurant.TownId, Name = restaurant.Town.Name} }); }
public IHttpActionResult CreateRestaurant([FromBody]RestaurantBindingModel model) { if (model == null) { return this.BadRequest("Model cannot be null (no data in request)"); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var loggedUserId = this.User.Identity.GetUserId(); var user = this.Data.Users.Find(loggedUserId); if (user == null) { return this.Unauthorized(); } var town = this.Data.Towns.Find(model.TownId); var restaurant = new Restaurant() { Name = model.Name, Owner = user, OwnerId = loggedUserId, TownId = model.TownId, Town = town }; this.Data.Restaurants.Add(restaurant); this.Data.SaveChanges(); return this.CreatedAtRoute( "DefaultApi", new {controller = "restaurans", id = restaurant.Id}, new { id = restaurant.Id, name = restaurant.Name, rating = (restaurant.Ratings.Any()) ?restaurant.Ratings.Average(r => r.Stars) : null, town = new {id = restaurant.TownId, name = restaurant.Town.Name} }); }
public IHttpActionResult AddRestaurant(AddRestaurantBindingModel model) { if (model == null) { return this.BadRequest("No data was sent."); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var town = this.Data.Towns.Find(model.TownId); if (town == null) { return this.BadRequest("Invalid town id: " + model.TownId); } var loggedUserId = this.User.Identity.GetUserId(); var restaurant = new Restaurant { Name = model.Name, TownId = town.Id, OwnerId = loggedUserId }; this.Data.Restaurants.Add(restaurant); this.Data.SaveChanges(); var restaurantData = this.Data.Restaurants.All() .Where(r => r.Id == restaurant.Id) .Select(RestaurantViewModel.Create) .FirstOrDefault(); return this.CreatedAtRoute( "DefaultApi", new { controller = "restaurants", id = restaurant.Id }, restaurantData); }
public IHttpActionResult PutRestaurant(int id, Restaurant restaurant) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var currentUser = User.Identity.IsAuthenticated; if(!currentUser) { return this.Unauthorized(); } if (id != restaurant.Id) { return BadRequest(); } db.Entry(restaurant).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!RestaurantExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public IHttpActionResult CreateRestaurant(RestaurantBindingModel restaurantBindingModel) { var ownerId = this.User.Identity.GetUserId(); if (restaurantBindingModel == null) { return this.BadRequest("Data is missing"); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var newRestaurant = new Restaurant { Name = restaurantBindingModel.Name, TownId = restaurantBindingModel.TownId, OwnerId = ownerId }; this.Data.Restaurants.Add(newRestaurant); this.Data.SaveChanges(); var restaurantView = this.Data.Restaurants.GetAll() .Where(r => r.Id == newRestaurant.Id) .Select(RestaurantViewModel.Create()) .FirstOrDefault(); var uriLocation = new { controller = "restaurants", id = newRestaurant.Id }; return this.CreatedAtRoute("DefaultApi", uriLocation, restaurantView); }
public IHttpActionResult CreateRestaurant(CreateRestaurantBindingModel model) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } if (model == null) { return this.BadRequest("Model cannot be null."); } var town = this.Data.Towns.All() .FirstOrDefault(t => t.Id == model.TownId); if (town == null) { return this.NotFound(); } var restaurant = new Restaurant { Name = model.Name, TownId = model.TownId, OwnerId = this.User.Identity.GetUserId() }; this.Data.Restaurants.Add(restaurant); this.Data.SaveChanges(); var restaurantViewModel = this.Data.Restaurants.All() .Where(r => r.Id == restaurant.Id) .Select(RestaurantViewModel.Create) .FirstOrDefault(); return this.Created($"api/Restaurants/{restaurant.Id}", restaurantViewModel); }
public IHttpActionResult PostNewRestaurant(RestaurantInputModel restaurantData) { var currentUserId = User.Identity.GetUserId(); if (!ModelState.IsValid) { return this.BadRequest(); } if (currentUserId == null) { return this.Unauthorized(); } var newRestaurant = new Restaurant() { Name = restaurantData.Name, TownId = restaurantData.TownId, OwnerId = currentUserId }; this.Data.Restaurants.Add(newRestaurant); this.Data.SaveChanges(); return this.CreatedAtRoute( "DefaultApi", new { id = newRestaurant.Id}, new { id = newRestaurant.Id, name = newRestaurant.Name, rating = (double?)null, town = this.Data.Towns.Where(t => t.Id == restaurantData.TownId).Select(t => new { id = t.Id, name = t.Name }) }); }
public void EditMeal_WithEmptyMealName_ShouldNotAllowMealEdition() { using (var dbContext = new RestaurantsContext()) { var httpTestServer = TestServer.Create(appBuilder => { var config = new HttpConfiguration(); WebApiConfig.Register(config); appBuilder.UseWebApi(config); }); // Arrange // Clean Database CleanDatabase(); // Create restaurant var restaurant = new Restaurant() { Id = 1, Name = "Gurlata", TownId = 1 }; // Create meal var meal = new Meal() { Id = 1, Name = "Gozba", Price = 18.2m, TypeId = 3, RestaurantId = 1 }; // Act -> add restaurant and meal to database dbContext.Restaurants.Add(restaurant); dbContext.Meals.Add(meal); dbContext.SaveChanges(); var mealFromDb = dbContext.Meals.Find(meal.Id); mealFromDb.Name = ""; dbContext.SaveChanges(); CleanDatabase(); } }
public IHttpActionResult PostRestaurant(RestaurantBindingModel restaurantData) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var townName = db.Towns .Where(t => t.Id == restaurantData.TownId) .Select(t => t.Name).FirstOrDefault(); if(townName == null || string.IsNullOrEmpty(restaurantData.Name)) { this.BadRequest(); } var currentUser = User.Identity.IsAuthenticated; var userName = User.Identity.Name; if (!currentUser) { return this.Unauthorized(); } var userId = db.Users .Where(u => u.UserName == userName) .Select(u => u.Id).FirstOrDefault(); var restaurant = new Restaurant() { Name = restaurantData.Name, TownId = restaurantData.TownId, OwnerId = userId }; db.Restaurants.Add(restaurant); db.SaveChanges(); Rating ratingRestaurant = null; return this.CreatedAtRoute( "DefaultApi", new { id = restaurant.Id }, new { id = restaurant.Id, name = restaurant.Name, rating = ratingRestaurant, town = new { id = restaurantData.TownId, name = townName } }); }
public IHttpActionResult CreateRestaurant(RestaurantBindingModel model) { if (model == null) { return this.BadRequest(); } if (!ModelState.IsValid) { return BadRequest(ModelState); } var currUserId = User.Identity.GetUserId(); var currUser = db.Users.Find(currUserId); var town = db.Towns.All().FirstOrDefault(t => t.Id == model.TownId); var restaurant = new Restaurant() { Name = model.Name, Town = town, Owner = currUser }; var restaurantViewModel = new RestaurantViewModel() { Id = restaurant.Id, Name = restaurant.Name, Rating = (restaurant.Ratings.Any()) ? restaurant.Ratings.Average(r => r.Stars) : (double?) null, Town = new TownViewModel() { Id = town.Id, Name = town.Name } }; db.Restaurants.Add(restaurant); db.SaveChanges(); return this.Created("http://localhost:1337/api/restaurants/" + restaurant.Id, restaurantViewModel); }
public IHttpActionResult CreateRestaurant( [FromBody] CreateRestaurantBindingModel model) { if (model == null) { return this.BadRequest("Model cannot be null (no data in request)"); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } string loggedUserId = this.User.Identity.GetUserId(); var restaurant = new Restaurant() { Name = model.Name, TownId = model.TownId, OwnerId = loggedUserId }; this.Data.Restaurants.Add(restaurant); this.Data.SaveChanges(); var data = this.Data.Restaurants.All() .Where(r => r.Id == restaurant.Id) .Select(RestaurantViewModel.Create) .FirstOrDefault(); return this.CreatedAtRoute( "DefaultApi", new { controller = "restaurants", id = restaurant.Id }, data); }
public IHttpActionResult PostRestaurant(RestaurantBindingModel restaurant) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (!User.Identity.IsAuthenticated) { return Unauthorized(); } var currentUserId = User.Identity.GetUserId(); var currentUser = db.Users.Find(currentUserId); Restaurant newRestaurant = new Restaurant() { Name = restaurant.Name, Town = db.Towns.Find(int.Parse(restaurant.TownId)), TownId = int.Parse(restaurant.TownId), Owner = currentUser, OwnerId = currentUserId }; db.Restaurants.Add(newRestaurant); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { controller = "restaurants", id = newRestaurant.Id }, new RestaurantViewModel() { Id = newRestaurant.Id, Name = newRestaurant.Name, Rating = null, Town = new TownViewModel() { Id = newRestaurant.Town.Id, Name = newRestaurant.Town.Name } }); }