Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> RateTitle(PostRatingViewModel score)
        {
            var result = await _ratingService.RateTitleAsync(score.TitleId, score.Score);

            return(Ok(result));
        }