예제 #1
0
        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 }
            }));
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
        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
                }
            }));
        }
예제 #5
0
        // PUT: api/Restaurant/5
        public async Task <IHttpActionResult> Put(ApiId restaurantId, [FromBody] RestaurantBindingModel restaurant)
        {
            var created = await _restaurants.Update(restaurantId, restaurant);

            return(Ok(created));
        }
예제 #6
0
        // 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));
        }