public IHttpActionResult GetUserId() { ReviewVm returnObject = new ReviewVm(); returnObject.OwnerId = User.Identity.GetUserId(); return(Ok(returnObject)); }
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)); }
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)); }
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())); } }
// 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)); }
/// <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(); }
// 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)); }
/// <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(); }
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)); }
// 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))); }
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)); }
//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); }