public IHttpActionResult GetUserId()
        {
            ReviewVm returnObject = new ReviewVm();

            returnObject.OwnerId = User.Identity.GetUserId();
            return(Ok(returnObject));
        }
示例#2
0
        public async Task <IViewComponentResult> InvokeAsync(long entityId, string entityTypeId)
        {
            var model = new ReviewVm
            {
                EntityId     = entityId,
                EntityTypeId = entityTypeId
            };

            model.Items = await _reviewRepository
                          .Query()
                          .Where(x => (x.EntityId == entityId) && (x.EntityTypeId == entityTypeId) && (x.Status == ReviewStatus.Approved))
                          .OrderByDescending(x => x.CreatedOn)
                          .Select(x => new ReviewItem
            {
                Id           = x.Id,
                Title        = x.Title,
                Rating       = x.Rating,
                Comment      = x.Comment,
                ReviewerName = x.ReviewerName,
                CreatedOn    = x.CreatedOn
            }).ToListAsync();

            model.ReviewsCount = model.Items.Count;
            model.Rating1Count = model.Items.Count(x => x.Rating == 1);
            model.Rating2Count = model.Items.Count(x => x.Rating == 2);
            model.Rating3Count = model.Items.Count(x => x.Rating == 3);
            model.Rating4Count = model.Items.Count(x => x.Rating == 4);
            model.Rating5Count = model.Items.Count(x => x.Rating == 5);

            return(View("/Modules/SimplCommerce.Module.Reviews/Views/Components/Review.cshtml", model));
        }
示例#3
0
        public ActionResult ReviewList(int restaurantId, int pageNumber = 0)
        {
            var model       = new ReviewListVm();
            var reviewCount = service.Uow.Reviews.GetCountByRestaurantId(restaurantId);
            var reviews     = service.Uow.Reviews.GetByRestaurantIdIncludeUserTakeX(restaurantId, pageNumber, PageUtil.ReviewListShownCount);

            model.Reviews = new List <ReviewVm>();
            foreach (var review in reviews)
            {
                var reviewVm = new ReviewVm();
                reviewVm.Id              = review.Id;
                reviewVm.Username        = review.AppUser.UserName;
                reviewVm.Score           = review.Score;
                reviewVm.UserReviewCount = service.Uow.Reviews.GetCountByUserId(review.UserId);
                reviewVm.Content         = review.Content;
                reviewVm.ReviewDate      = review.AddedDate;
                reviewVm.ProfilePicPath  = review.AppUser.ProfilePicPath;
                model.Reviews.Add(reviewVm);
            }
            model.RestaurantId = restaurantId;
            var maxPage = Math.Ceiling(reviewCount / Convert.ToDouble(PageUtil.ReviewListShownCount));

            model.ReviewCount = reviewCount;
            model.PageNumber  = pageNumber;
            model.MaxPage     = maxPage;
            return(PartialView(model));
        }
示例#4
0
        public JsonResult Post([FromBody] ReviewVm model)
        {
            if (ModelState.IsValid)
            {
                var userId = model.UserId.ToString();
                var needs  = _dataCtx.UserProfileAccessibilityNeeds.Where(n => n.UserProfile.Id == userId);
                model.AccessibilityReviews = needs.Select(n => new AccessibilityReviewVm
                {
                    AccessibilityNeedId = n.AccessibilityNeed.Id,
                    Rating = model.Rating
                }).ToList();

                var entity = _dataCtx.Reviews.FirstOrDefault(p => p.Id == model.Id) ?? new Review();
                model.ToEntity(entity);
                if (entity.Id == 0)
                {
                    _dataCtx.Reviews.Add(entity);
                }
                _dataCtx.SaveChanges();
                return(Json(entity.ToVm()));
            }
            else
            {
                Response.StatusCode = 422;
                return(Json(ModelState.ToErrorsDictionary()));
            }
        }
示例#5
0
        // GET: Reviews/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Review review = db.Reviews.Include(p => p.Restaurant).FirstOrDefault(p => p.Id == id);

            if (review == null)
            {
                return(HttpNotFound());
            }


            ReviewVm vm = new ReviewVm();

            vm = Mapper.Map <Review, ReviewVm>(review); //mapping

            //vm.Rating = review.Rating;
            //vm.Body = review.Body;
            //vm.ReviewerName = review.ReviewerName;
            //vm.RestaurantName = review.Restaurant.Name;

            return(View(vm));
        }
        public async Task <IViewComponentResult> InvokeAsync(long entityId, string entityTypeId)
        {
            var model = new ReviewVm
            {
                EntityId     = entityId,
                EntityTypeId = entityTypeId
            };

            model.Items.Data = await _reviewRepository
                               .Query()
                               .Where(x => (x.EntityId == entityId) && (x.EntityTypeId == entityTypeId) && (x.Status == ReviewStatus.Approved))
                               .OrderByDescending(x => x.CreatedOn)
                               .Select(x => new ReviewItem
            {
                Id           = x.Id,
                Title        = x.Title,
                Rating       = x.Rating,
                Comment      = x.Comment,
                ReviewerName = x.ReviewerName,
                CreatedOn    = x.CreatedOn,
                Replies      = x.Replies
                               .Where(r => r.Status == ReplyStatus.Approved)
                               .OrderByDescending(r => r.CreatedOn)
                               .Select(r => new ViewModels.Reply
                {
                    Comment     = r.Comment,
                    ReplierName = r.ReplierName,
                    CreatedOn   = r.CreatedOn
                })
                               .ToList()
            }).ToListAsync();

            model.ReviewsCount = model.Items.Data.Count;
            model.Rating1Count = model.Items.Data.Count(x => x.Rating == 1);
            model.Rating2Count = model.Items.Data.Count(x => x.Rating == 2);
            model.Rating3Count = model.Items.Data.Count(x => x.Rating == 3);
            model.Rating4Count = model.Items.Data.Count(x => x.Rating == 4);
            model.Rating5Count = model.Items.Data.Count(x => x.Rating == 5);

            if (User.Identity.IsAuthenticated)
            {
                var user = await _workContext.GetCurrentUser();

                model.LoggedUserName = user.FullName;
                var currentUserOrder = _orderRepository
                                       .Query()
                                       .Where(x => x.CreatedById == user.Id);

                var userOrderedProduct = currentUserOrder
                                         .Where(x => x.OrderItems.Where(y => y.ProductId == entityId).Count() > 0);
                model.HasBoughtProduct = userOrderedProduct.Any() ? true : false;
            }
            else
            {
                model.LoggedUserName   = string.Empty;
                model.HasBoughtProduct = false;
            }

            return(View(this.GetViewPath(), model));
        }
示例#7
0
        /// <summary>
        /// Event callback.
        /// Triggered when reviews are over.
        /// Disposes of the review ViewModel.
        /// </summary>
        private void OnReviewFinished(object sender, EventArgs e)
        {
            ReviewVm.ReviewFinished -= OnReviewFinished;
            ReviewVm.Dispose();
            ReviewVm = null;

            SrsBusiness.Instance.UpdateReviewInfoAsync();
        }
示例#8
0
        // GET: Reviews/Create
        public ActionResult Create(int Id)
        {
            var r = db.Restaurants.Find(Id);

            var review = new ReviewVm();

            review.RestaurantId   = r.Id;
            review.RestaurantName = r.Name;
            return(View(review));
        }
 public ActionResult Edit(ReviewVm model)
 {
     if (ModelState.IsValid)
     {
         RestuarantReview entity = db.RestuarantReview.Find(model.Id);
         entity.Body       = model.Body;
         entity.Rating     = model.Rating;
         entity.ReviewDate = DateTime.Now;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(model));
 }
示例#10
0
        /// <summary>
        /// Disposes the resources used by this object.
        /// </summary>
        public override void Dispose()
        {
            if (ReviewVm != null)
            {
                try
                {
                    ReviewVm.ReviewFinished -= OnReviewFinished;
                    ReviewVm.Dispose();
                }
                catch { }
            }

            ListVm.Dispose();

            FilterVm.FilterChanged -= OnFilterChanged;
            FilterVm.Dispose();

            base.Dispose();
        }
示例#11
0
        public async Task <IViewComponentResult> InvokeAsync(long entityId, string entityTypeId)
        {
            var model = new ReviewVm
            {
                EntityId     = entityId,
                EntityTypeId = entityTypeId
            };

            model.Items.Data = await _reviewRepository
                               .Query()
                               .Where(x => (x.EntityId == entityId) && (x.EntityTypeId == entityTypeId) && (x.Status == ReviewStatus.Approved))
                               .OrderByDescending(x => x.CreatedOn)
                               .Select(x => new ReviewItem
            {
                Id           = x.Id,
                Title        = x.Title,
                Rating       = x.Rating,
                Comment      = x.Comment,
                ReviewerName = x.ReviewerName,
                CreatedOn    = x.CreatedOn,
                Replies      = x.Replies
                               .Where(r => r.Status == ReplyStatus.Approved)
                               .OrderByDescending(r => r.CreatedOn)
                               .Select(r => new ViewModels.Reply
                {
                    Comment     = r.Comment,
                    ReplierName = r.ReplierName,
                    CreatedOn   = r.CreatedOn
                })
                               .ToList()
            }).ToListAsync();

            model.ReviewsCount = model.Items.Data.Count;
            model.Rating1Count = model.Items.Data.Count(x => x.Rating == 1);
            model.Rating2Count = model.Items.Data.Count(x => x.Rating == 2);
            model.Rating3Count = model.Items.Data.Count(x => x.Rating == 3);
            model.Rating4Count = model.Items.Data.Count(x => x.Rating == 4);
            model.Rating5Count = model.Items.Data.Count(x => x.Rating == 5);

            return(View(this.GetViewPath(), model));
        }
示例#12
0
        // GET: Reviews/Edit/5
        public ActionResult Manage(int?id, int?restaurantId)
        {
            var review = new ReviewVm();

            if (restaurantId.HasValue)
            {
                var r = db.Restaurants.Find(restaurantId);
                review.RestaurantId   = r.Id;
                review.RestaurantName = r.Name;
            }
            else
            {
                var entity = db.Reviews.Include(p => p.Restaurant).Where(p => p.Id == id).FirstOrDefault();
                review.RestaurantId   = entity.Restaurant.Id;
                review.RestaurantName = entity.Restaurant.Name;
                review.Id             = entity.Id;
                review.Body           = entity.Body;
                review.Rating         = entity.Rating;
                review.ReviewerName   = entity.ReviewerName;
            }
            return(View(review));
        }
 public IHttpActionResult Post(ReviewVm review)
 {
     return(Ok(repo.AddReview(review)));
 }
示例#14
0
        public async Task <IActionResult> List(long entityId, string entityTypeId, int?pageNumber, int?pageSize)
        {
            var entity = _reviewRepository
                         .List()
                         .FirstOrDefault();

            if (entity == null)
            {
                return(Redirect("~/Error/FindNotFound"));
            }

            var itemsPerPage   = pageSize.HasValue ? pageSize.Value : DefaultPageSize;
            var currentPageNum = pageNumber.HasValue ? pageNumber.Value : 1;
            var offset         = (itemsPerPage * currentPageNum) - itemsPerPage;

            var model = new ReviewVm();

            model.EntityName = entity.EntityName;
            model.EntitySlug = entity.EntitySlug;

            var query = _reviewRepository
                        .Query()
                        .Where(x => (x.EntityId == entityId) && (x.EntityTypeId == entityTypeId) && (x.Status == ReviewStatus.Approved))
                        .OrderByDescending(x => x.CreatedOn)
                        .Select(x => new ReviewItem
            {
                Id           = x.Id,
                Title        = x.Title,
                Rating       = x.Rating,
                Comment      = x.Comment,
                ReviewerName = x.ReviewerName,
                CreatedOn    = x.CreatedOn,
                Replies      = x.Replies
                               .Where(r => r.Status == ReplyStatus.Approved)
                               .OrderByDescending(r => r.CreatedOn)
                               .Select(r => new ViewModels.Reply
                {
                    Comment     = r.Comment,
                    ReplierName = r.ReplierName,
                    CreatedOn   = r.CreatedOn
                })
                               .ToList()
            });

            model.Items.Data = await query
                               .Skip(offset)
                               .Take(itemsPerPage)
                               .ToListAsync();

            model.Items.PageNumber = currentPageNum;
            model.Items.PageSize   = itemsPerPage;
            model.Items.TotalItems = await query.CountAsync();

            var allItems = await query.ToListAsync();

            model.ReviewsCount = allItems.Count;
            model.Rating1Count = allItems.Count(x => x.Rating == 1);
            model.Rating2Count = allItems.Count(x => x.Rating == 2);
            model.Rating3Count = allItems.Count(x => x.Rating == 3);
            model.Rating4Count = allItems.Count(x => x.Rating == 4);
            model.Rating5Count = allItems.Count(x => x.Rating == 5);

            model.EntityId     = entityId;
            model.EntityTypeId = entityTypeId;

            return(View(model));
        }
示例#15
0
        //Adds a review
        public MessageVm AddReview(ReviewVm review)
        {
            Work            subject       = repo.Query <Work>().Where(w => w.Id == review.WorkId).Include(w => w.Reviews).FirstOrDefault();
            ApplicationUser owner         = GetUserById(review.OwnerId);
            Rating          subjectRating = new Rating();
            MessageVm       returnObj     = new MessageVm();;
            bool            quit          = false;

            //Find the user's rating for this work:
            int i = 0;

            while (!quit && i < owner.MyRatings.Count)
            {
                if (owner.MyRatings[i].WorkId == review.WorkId)
                {
                    subjectRating = owner.MyRatings[i];
                    quit          = true;
                }
                i++;
            }

            //Set error flag if no rating was found:
            if (subjectRating.Score == 0)
            {
                returnObj.Error = true;
            }

            //Check if the user has already created a review of this work:
            quit = false;
            int j = 0;

            while (!quit && j < owner.MyReviews.Count)
            {
                if (owner.MyReviews[j].WorkId == review.WorkId)
                {
                    returnObj.Error = true;
                    quit            = true;
                }
                j++;
            }

            if (!returnObj.Error)
            {
                Review reviewToAdd = new Review
                {
                    OwnerId   = review.OwnerId,
                    OwnerName = owner.UserName,
                    Content   = review.Content,
                    Score     = subjectRating.Score,
                    DateAdded = DateTime.Now,
                    IsActive  = true,
                };

                if (subject.Reviews.Count == 0)
                {
                    subject.Reviews = new List <Review>();
                }

                owner.MyReviews.Add(reviewToAdd);
                subject.Reviews.Add(reviewToAdd);
                repo.SaveChanges();
            }

            return(returnObj);
        }