public async Task <IActionResult> Post(int movieId, [FromBody] ReviewUpdateModel model)
        {
            var movie = _movies.GetDetails(movieId);

            if (movie == null)
            {
                return(NotFound());
            }

            if (!(await _authorization.AuthorizeAsync(User, movie, Authorization.MovieOperations.Review)).Succeeded)
            {
                return(Forbid());
            }

            var userId = User.FindFirst("sub")?.Value;

            var result = _reviews.Create(movieId, model.Stars, model.Comment, userId);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToArray()));
            }

            return(NoContent());
        }
Exemple #2
0
        public async Task <ReviewModel> UpdateReviewAsync(ReviewUpdateModel reviewUpdateModel)
        {
            var entity = await context.Reviews.FirstOrDefaultAsync(f => f.Id == reviewUpdateModel.Id);

            entity.Update(reviewUpdateModel.Review, reviewUpdateModel.Rating);
            context.Entry(entity).State = EntityState.Modified;
            await context.SaveChangesAsync();

            return(mapper.Map <ReviewModel>(entity));
        }
Exemple #3
0
        public async Task <IActionResult> UpdateReview([FromBody] ReviewUpdateModel reviewUpdateModel)
        {
            try
            {
                var result = await reviewService.UpdateReviewAsync(reviewUpdateModel);

                return(Ok(result));
            }

            catch (Exception ex)
            {
                return(HandleExcpetion(ex));
            }
        }
Exemple #4
0
        public override object BindModel(System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ModelBindingContext bindingContext)
        {
            ProductReviewOperation currentOperation;

            if (controllerContext.HttpContext.Request.Form["Approve"] != null)
            {
                currentOperation = ProductReviewOperation.Approve;
            }
            else if (controllerContext.HttpContext.Request.Form["Reject"] != null)
            {
                currentOperation = ProductReviewOperation.Reject;
            }
            else if (controllerContext.HttpContext.Request.Form["Delete"] != null)
            {
                currentOperation = ProductReviewOperation.Delete;
            }
            else
            {
                return(new ReviewUpdateModel());
            }

            var nameValueCollection = controllerContext.HttpContext.Request.Form;

            var keys = nameValueCollection.AllKeys.Where(s => s.StartsWith("review-"));
            var reviewUpdateModel = new ReviewUpdateModel
            {
                CurrentOperation = currentOperation,
                Reviews          = new List <ProductReview>()
            };

            foreach (var key in keys)
            {
                var substring = key.Substring(7);
                int id;
                if (Int32.TryParse(substring, out id) && nameValueCollection[key].Contains("true"))
                {
                    var review = Session.Get <ProductReview>(id);
                    if (review != null)
                    {
                        reviewUpdateModel.Reviews.Add(review);
                    }
                }
            }
            return(reviewUpdateModel);
        }
Exemple #5
0
        public void BulkAction(ReviewUpdateModel model)
        {
            var currentOperation = model.CurrentOperation;

            switch (currentOperation)
            {
            case ProductReviewOperation.Approve:
                _session.Transact(session =>
                {
                    foreach (var item in model.Reviews)
                    {
                        item.Approved = true;
                        Update(item);
                    }
                });
                break;

            case ProductReviewOperation.Reject:
                _session.Transact(session =>
                {
                    foreach (var item in model.Reviews)
                    {
                        item.Approved = false;
                        Update(item);
                    }
                });
                break;

            case ProductReviewOperation.Delete:
                _session.Transact(session =>
                {
                    foreach (var item in model.Reviews)
                    {
                        Delete(item);
                    }
                });
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public async Task <IActionResult> Put(int id, [FromBody] ReviewUpdateModel model)
        {
            var review = _reviews.Get(id);

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

            if (!(await _authorization.AuthorizeAsync(User, review, Authorization.ReviewOperations.Edit)).Succeeded)
            {
                return(Forbid());
            }

            var result = _reviews.Update(id, model.Stars, model.Comment);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToArray()));
            }

            return(NoContent());
        }
        public RedirectToRouteResult Index([IoCModelBinder(typeof(ProductReviewUpdateModelBinder))] ReviewUpdateModel model)
        {
            _productReviewAdminService.BulkAction(model);

            return(RedirectToAction("Index"));
        }