public ActionResult DislikePost(int postId) { int userId = _accountService.GetUserByLogin(User.Identity.Name).UserId; _postService.DislikePost(userId, postId); PostRatingViewModel photo = _postService.GetById(postId).ToPostRatingViewModel(); return(PartialView("_DislikePhoto", photo)); }
public async Task <ActionResult <GetRatingViewModel> > PostRating(PostRatingViewModel model) { var userId = User.FindFirst(ClaimTypes.NameIdentifier); var user = await _context.Users.Include(u => u.Products).FirstOrDefaultAsync(u => u.Id == userId.Value); var userProductIds = user.Products?.Select(u => u.ProductId).ToList(); if (userProductIds?.Contains(model.ProductId) != true) { return(Forbid("User did not Order this Product before")); } var rating = new Rating() { RatingId = Guid.NewGuid(), CustomerId = userId?.Value, Description = model.Description, ProductId = model.ProductId, StarCount = model.StarCount, Title = model.Title, Customer = null, Product = null }; var product = await _context.Product.FindAsync(model.ProductId); product.AverageRating = (decimal)(((product.RatingCounter * product.AverageRating) + rating.StarCount) / (product.RatingCounter + 1)); product.RatingCounter += 1; _context.Entry(product).State = EntityState.Modified; try { await _context.Rating.AddAsync(rating); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } var getRatingVieModel = new GetRatingViewModel(rating); return(CreatedAtAction("GetRating", new { id = rating.RatingId }, getRatingVieModel)); }
public async Task <IActionResult> RateTitle(PostRatingViewModel score) { var result = await _ratingService.RateTitleAsync(score.TitleId, score.Score); return(Ok(result)); }