예제 #1
0
        public void RateMeal(Guid userId, Guid mealId, double value)
        {
            using (var tr = new TransactionScope())
            {
                var rating = Session.MealRatings.SingleOrDefault(r => r.RatedById == userId && r.RatedMealId == mealId);

                if (rating == null)
                {
                    rating = new MealRating()
                    {
                        Id          = Guid.NewGuid(),
                        RatedById   = userId,
                        RatedMealId = mealId
                    };
                    Session.MealRatings.Add(rating);
                }
                rating.Rating = value;
                Session.SaveChanges();

                var meal = Get(mealId);
                meal.AverageRating = Session.MealRatings.Where(r => r.RatedMealId == mealId).Average(r => r.Rating);
                Session.SaveChanges();
                tr.Complete();
            }
        }
예제 #2
0
        private async void FetchMealRatingByUser()
        {
            try
            {
                MealRating mealRating = await service.GetMealRatingByUser(UserCache.user.Id, MealId);

                if (mealRating != null && mealRating.RatingId > 0)
                {
                    //This user has already submitted a rating or a grade.
                    MyMealsDetailGradeUserSubmittedValue.Text      = PhraseHelper.GetGradePhrase(Convert.ToInt32(mealRating.Grade));
                    MyMealsDetailsSubmittedGradeSection.Visibility = ViewStates.Visible;
                    MyMealsDetailsGradingSection.Visibility        = ViewStates.Gone;
                }
                else
                {
                    MyMealsDetailsSubmittedGradeSection.Visibility = ViewStates.Gone;
                    MyMealsDetailsGradingSection.Visibility        = ViewStates.Visible;
                }
            }
            catch (Exception ex)
            {
                string err = ex.Message;
            }
        }