예제 #1
0
        public ActionResult Add(int id, RatingBindingModel ratingModel)
        {
            var motorcycle = this.Data.Motorcycles.Find(id);

            if (motorcycle == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound, "The requested motorcycle was not found in the system."));
            }

            var currentUser = this.Data.Users.Find(this.User.Identity.GetUserId());

            var existingRating = this.Data.Ratings.All().FirstOrDefault(r => r.Motorcycle.Id == motorcycle.Id && r.Author.Id == currentUser.Id);

            if (existingRating != null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "You have already rated this motorcycle"));
            }

            var rating = new Rating()
            {
                Value = ratingModel.Value, Motorcycle = motorcycle, Author = currentUser
            };

            motorcycle.Ratings.Add(rating);
            this.Data.SaveChanges();

            var model = this.service.GetRatingViewModel(rating);

            if (model == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
            }

            return(this.PartialView("_Rating", model));
        }
        public ActionResult Add(int id, RatingBindingModel ratingModel)
        {
            var game = this.Data.Games.Find(id);

            if (game == null)
            {
                return(this.HttpNotFound("The requested game was not found in the system."));
            }

            var currentUser    = this.Data.Users.Find(this.User.Identity.GetUserId());
            var existingRating = this.Data.Ratings.All().FirstOrDefault(r => r.Game.Id == game.Id && r.Author.Id == currentUser.Id);

            if (existingRating != null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "You have already rated this game"));
            }

            var rating = new Rating()
            {
                Value = ratingModel.Value, Game = game, Author = currentUser
            };

            game.Ratings.Add(rating);
            this.Data.SaveChanges();

            var model = Mapper.Map <RatingViewModel>(rating);

            return(this.PartialView("_Rating", model));
        }
예제 #3
0
        public IHttpActionResult PostRateExistingRestaurant([FromUri] int id, [FromBody] RatingBindingModel model)
        {
            if (model == null)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var restaurant = this.Data.Restaurants.GetById(id);

            if (restaurant == null)
            {
                return(this.NotFound());
            }

            var userId = this.UserIdProvider.GetUserId();

            if (restaurant.OwnerId == userId)
            {
                return(this.BadRequest("Cannot rate your own restaurant!"));
            }

            if (restaurant.Ratings.Any(r => r.UserId == userId))
            {
                var currentRating = restaurant.Ratings.First(r => r.UserId == userId);
                currentRating.Stars = model.Stars;
                this.Data.SaveChanges();
                return(this.Ok());
            }

            var user   = this.Data.ApplicationUsers.GetById(userId);
            var rating = new Rating()
            {
                Stars = model.Stars,
                User  = user
            };

            restaurant.Ratings.Add(rating);
            this.Data.SaveChanges();
            return(this.Ok());
        }
예제 #4
0
        public IHttpActionResult RateRestaurants(int id, RatingBindingModel m)
        {
            if (!this.Data.Restaurants.Any(r => r.Id == id))
            {
                return(this.NotFound());
            }

            if (this.Data.Restaurants.FirstOrDefault(r => r.Id == id).OwnerId == User.Identity.GetUserId())
            {
                return(this.BadRequest("You can't rate your own resturant."));
            }

            if (m.Stars > 10 || m.Stars <= 0)
            {
                return(this.BadRequest("Invalid value for stars."));
            }

            var uId = User.Identity.GetUserId();

            if (this.Data.Ratings.Any(r => r.UserId == uId && r.RestaurantId == id))
            {
                var restaurant =
                    this.Data.Ratings.FirstOrDefault(
                        r => r.UserId == uId && r.RestaurantId == id);

                restaurant.Stars = m.Stars;

                this.Data.SaveChanges();

                return(this.Ok());
            }

            var rating = new Rating
            {
                RestaurantId = id,
                UserId       = uId,
                Stars        = m.Stars
            };

            this.Data.Ratings.Add(rating);

            this.Data.SaveChanges();

            return(this.Ok());
        }
예제 #5
0
        public async Task <ActionResult <Rating> > PostRating(RatingBindingModel rating)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Rating new_rating = new Rating()
            {
                DishId    = rating.DishId,
                UserName  = rating.UserName,
                UserEmail = rating.UserEmail,
                Rate      = rating.Rate,
                Review    = rating.Review
            };

            _context.Ratings.Add(new_rating);
            await _context.SaveChangesAsync();

            return(Ok(new_rating));
        }
예제 #6
0
        public ActionResult Rate(RatingBindingModel rating)
        {
            var game = this.Data.Games.Find(rating.GameId);

            if (game == null)
            {
                return(this.HttpNotFound("Game does not exist"));
            }

            var newRating = new Rating()
            {
                AuthorId = this.UserProfile.Id,
                GameId   = rating.GameId,
                Value    = rating.Value
            };

            this.Data.Ratings.Add(newRating);
            this.Data.SaveChanges();

            game = this.Data.Games.Find(rating.GameId);
            double result = (game.Ratings.Sum(x => x.Value) * 1.0) / game.Ratings.Count;

            return(this.Content(String.Format("{0:0.00}", result)));
        }
        public ActionResult Rate(RatingBindingModel model)
        {
            if (model == null || !this.ModelState.IsValid)
            {
                return this.View("Error");
            }

            var game = this.Data.Games.Find(model.GameId);
            var loggedUsedId = this.User.Identity.GetUserId();

            if (game.Ratings.Any(r => r.AuthorId == loggedUsedId))
            {
                return this.View("Error");
            }

            var rating = new Rating
            {
                GameId = model.GameId,
                AuthorId = loggedUsedId,
                Value = model.RateValue
            };

            this.Data.Ratings.Add(rating);
            game.Ratings.Add(rating);
            this.Data.SaveChanges();

            return RedirectToAction("Details", "Games", new { gameTitle = game.Title });
        }
        public IHttpActionResult RateARestaurant(
            [FromUri] int id,
            [FromBody] RatingBindingModel ratingModel)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var restaurant = this.Data.Restaurants.Find(id);

            if (restaurant == null)
            {
                return(this.NotFound());
            }

            var             userId = this.User.Identity.GetUserId();
            ApplicationUser user   = null;

            if (userId != null)
            {
                user = this.Data.Users.Find(userId);
            }

            if (user == null)
            {
                return(this.Unauthorized());
            }

            if (userId == restaurant.OwnerId)
            {
                return(this.BadRequest("User can't rate his own restaurant"));
            }

            var rating = this.Data.Ratings.All()
                         .Where(rt => rt.RestaurantId == restaurant.Id && rt.UserId == userId)
                         .FirstOrDefault();

            if (rating == null)
            {
                rating = new Rating()
                {
                    Stars        = ratingModel.Stars,
                    User         = user,
                    UserId       = userId,
                    Restaurant   = restaurant,
                    RestaurantId = restaurant.Id
                };

                this.Data.Ratings.Add(rating);
            }
            else
            {
                rating.Stars = ratingModel.Stars;
                this.Data.Ratings.Update(rating);
            }

            this.Data.SaveChanges();

            return(this.Ok());
        }