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 async Task <RestaurantViewModel> Update(long id, RestaurantBindingModel restaurant) { using (var ctx = new CMMIContext()) { var entity = await ctx.Restaurants.FindAsync(id); if (entity == null) { throw new NotFoundException("Restaurant not found."); } entity.Name = restaurant.Name; entity.City = restaurant.City; await ctx.SaveChangesAsync(); return(new RestaurantViewModel(entity)); } }
public async Task <RestaurantViewModel> Create(RestaurantBindingModel restaurant) { using (var ctx = new CMMIContext()) { var entity = ctx.Restaurants.Create(); entity.Name = restaurant.Name; entity.City = restaurant.City; entity.UserGuid = CurrentUserGuid; entity.Rating = 0; entity.ReviewCount = 0; entity.CreateDate = DateTime.Now; ctx.Restaurants.Add(entity); await ctx.SaveChangesAsync(); return(new RestaurantViewModel(entity)); } }
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 } })); }
// PUT: api/Restaurant/5 public async Task <IHttpActionResult> Put(ApiId restaurantId, [FromBody] RestaurantBindingModel restaurant) { var created = await _restaurants.Update(restaurantId, restaurant); return(Ok(created)); }
// POST: api/Restaurant public async Task <IHttpActionResult> Post([FromBody] RestaurantBindingModel restaurant) { var created = await _restaurants.Create(restaurant); return(Created("api/restaurants/" + created.Id, created)); }
public IHttpActionResult CreateNewRestaurant( [FromBody] RestaurantBindingModel restaurantModel) { if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } var town = this.Data.Towns.Find(restaurantModel.TownId); if (town == null) { return(this.BadRequest("Invalid town id")); } var userId = this.User.Identity.GetUserId(); ApplicationUser user = null; if (userId != null) { user = this.Data.Users.Find(userId); } if (user == null) { return(this.Unauthorized()); } var restaurant = new Restaurant() { Name = restaurantModel.Name, TownId = restaurantModel.TownId, Town = town, OwnerId = userId, Owner = user }; this.Data.Restaurants.Add(restaurant); this.Data.SaveChanges(); var townView = new TownViewModel() { Id = town.Id, Name = town.Name }; var restaurantView = new RestaurantViewModel() { Id = restaurant.Id, Name = restaurant.Name, Rating = null, Town = townView }; //var result = new System.Web.Mvc.ContentResult //{ // ContentType = "text/plain", // Content = JsonConvert.SerializeObject(restaurantView, new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() }), // ContentEncoding = Encoding.UTF8 //}; return(this.CreatedAtRoute( "DefaultApi", new { id = restaurant.Id, controller = "restaurants" }, restaurantView)); }