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