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(); } }
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; } }