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()); }
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)); }
public async Task <IActionResult> UpdateReview([FromBody] ReviewUpdateModel reviewUpdateModel) { try { var result = await reviewService.UpdateReviewAsync(reviewUpdateModel); return(Ok(result)); } catch (Exception ex) { return(HandleExcpetion(ex)); } }
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); }
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")); }