public ActionResult DeleteConfirmed(int id)
        {
            ActivityReview activityReview = db.ActivityReviews.Find(id);

            db.ActivityReviews.Remove(activityReview);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "Id,ActivityRating,ActivityDate,ActivityPro,ActivityCon,ActivityReviewDetails,ActivityId")] ActivityReview activityReview)
 {
     if (ModelState.IsValid)
     {
         db.Entry(activityReview).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ActivityId = new SelectList(db.Activities, "Id", "ActivityName", activityReview.ActivityId);
     return(View(activityReview));
 }
        public ActionResult Create([Bind(Include = "Id,ActivityRating,ActivityDate,ActivityPro,ActivityCon,ActivityReviewDetails,ActivityId")] ActivityReview activityReview, int activityId)
        {
            if (ModelState.IsValid)
            {
                db.ActivityReviews.Add(activityReview);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            //ViewBag.ActivityId = new SelectList(db.Activities, "Id", "ActivityName", activityReview.ActivityId);
            return(View(activityReview));
        }
        // GET: ActivityReview/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ActivityReview activityReview = db.ActivityReviews.Find(id);

            if (activityReview == null)
            {
                return(HttpNotFound());
            }
            return(View(activityReview));
        }
        // GET: ActivityReview/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ActivityReview activityReview = db.ActivityReviews.Find(id);

            if (activityReview == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ActivityId = new SelectList(db.Activities, "Id", "ActivityName", activityReview.ActivityId);
            return(View(activityReview));
        }
        public async Task Review(int activityId, string username, ActivityReviewInputModel activityReviewInputModel)
        {
            var user = await this.usersRepository.All().Where(u => u.UserName == username).FirstOrDefaultAsync();

            if (user == null)
            {
                throw new NullReferenceException(string.Format(ServicesDataConstants.NullReferenceUsername, username));
            }

            var activity = await this.activitiesRepository.All().FirstOrDefaultAsync(a => a.Id == activityId);

            if (activity == null)
            {
                throw new NullReferenceException(string.Format(ServicesDataConstants.NullReferenceActivityId, activityId));
            }

            if (this.activityReviewsRepository.All().Any(r => r.ActivityId == activityId && r.Review.User == user))
            {
                throw new ArgumentException(string.Format(ServicesDataConstants.ActivityReviewAlreadyAdded, user.UserName, activity.Id, activity.Name));
            }

            var review = new Review
            {
                User    = user,
                Rating  = activityReviewInputModel.Rating,
                Content = activityReviewInputModel.Content,
            };

            this.reviewsRepository.Add(review);
            await this.reviewsRepository.SaveChangesAsync();

            var activityReview = new ActivityReview
            {
                Activity = activity,
                Review   = review,
            };

            this.activityReviewsRepository.Add(activityReview);
            await this.activityReviewsRepository.SaveChangesAsync();

            await this.UpdateActivityAverageRating(activity);
        }