Beispiel #1
0
        /// <summary>
        /// Display the page for information on a single video, regardless of format
        /// </summary>
        /// <param name="inventoryId">the inventoryId of the video to display</param>
        /// <returns></returns>
        public ActionResult SingleVideo(int inventoryId)
        {
            //TODO make this page* not*format - agnostic, so items can also be populated to list here
            VideoWrapperModel item = new VideoWrapperModel();

            Inventory inventoryItem = _db.Inventory
                                      .Include(inv => inv.VideoReview)
                                      .ThenInclude(review => review.Customer)
                                      .Include(inv => inv.FormatToVideo)
                                      .ThenInclude(ftov => ftov.Video)
                                      .ThenInclude(video => video.ProducerToVideo)
                                      .ThenInclude(ptov => ptov.Producer)
                                      .Include(inv => inv.FormatToVideo)
                                      .ThenInclude(ftov => ftov.Video)
                                      .ThenInclude(video => video.ActorToVideo)
                                      .ThenInclude(atov => atov.Actor)
                                      .Include(inv => inv.FormatToVideo)
                                      .ThenInclude(ftov => ftov.Video)
                                      .ThenInclude(video => video.TagToVideo)
                                      .ThenInclude(ttov => ttov.Tag)
                                      .Include(inv => inv.FormatToVideo)
                                      .ThenInclude(ftov => ftov.Format)
                                      .First(x => x.InventoryId == inventoryId);

            item.video       = inventoryItem.FormatToVideo.FirstOrDefault(m => m.InventoryId == inventoryId).Video;
            item.image       = inventoryItem.Image;
            item.inventoryId = inventoryId;
            item.price       = inventoryItem.Price;

            item.Reviews = _db.VideoReview.Where(m => m.InventoryId == inventoryId).ToList();

            var customer = _db.Customer.FirstOrDefault(m => m.Email == User.Identity.Name);

            if (customer != null)
            {
                // select the review made by the current user, if any
                VideoReview userReview = item.Reviews.FirstOrDefault(m => m.CustomerId == customer.CustomerId);
                // if not, then create a new one to modify
                if (userReview != null)
                {
                    item.userReview = userReview;
                }
                else
                {
                    item.userReview            = new VideoReview();
                    item.userReview.CustomerId = customer.CustomerId;
                }
            }
            else
            {
                item.userReview = new VideoReview();
            }

            return(View(item));
        }
Beispiel #2
0
        public ActionResult SubmitReview(VideoReview model)
        {
            // either update or add new review entry to model, depending on whether it exists already.
            // a user can only have one review for a video.
            if (model.ReviewId == 0)
            {
                _db.VideoReview.Add(model);
            }
            else
            {
                _db.VideoReview.Attach(model);
                var entry = _db.Entry(model);
                entry.Property(i => i.Review).IsModified = true;
                entry.Property(i => i.Rating).IsModified = true;
            }

            _db.SaveChanges();
            return(RedirectToAction("SingleVideo", "Home", new { inventoryId = model.InventoryId }));
        }