示例#1
0
        public ActionResult EditReview(ReviewVM model)
        {
            _tagsManager     = TagsManagerFactory.Create();
            _reviewManager   = ReviewManagerFactory.Create();
            _categoryManager = CategoryManagerFactory.Create();

            if (ModelState.IsValid)
            {
                try
                {
                    //set dates
                    model.Review.DateCreated = DateTime.Now;

                    //send review to manager
                    _reviewManager.EditReview(model.Review);

                    if (model.NewTags != null)
                    {
                        //create array of tags from tags input
                        string[] tags = model.NewTags.Split(',');

                        //send tags to tag manager
                        var newlyAddedTagsResponse = _tagsManager.AddListOfTags(tags);

                        //get current tags
                        var currentTagsForReviewResponse = _tagsManager.GetTagsByReviewId(model.Review.ReviewId);

                        //add tags to review
                        _tagsManager.EditTagsForReview(model.Review.ReviewId,
                                                       newlyAddedTagsResponse.Payload,
                                                       currentTagsForReviewResponse.Payload);

                        return(RedirectToAction("Reviews"));
                    }
                    else
                    {
                        var response = _tagsManager.DeleteAllTagsForReview(model.Review.ReviewId);

                        if (!response.Success)
                        {
                            return(new HttpStatusCodeResult(500, $"Error in cloud. Message: {response.Message}"));
                        }

                        return(RedirectToAction("Reviews"));
                    }
                }
                catch (Exception ex)
                {
                    //catch an exception and add

                    throw new ApplicationException("Something wrong happened while adding a review:", ex);
                }
            }
            else
            {
                //reset view
                var tagsResponse = _tagsManager.GetTagByReviewId(model.Review.ReviewId);
                model.TagList = tagsResponse.Payload;
                TResponse <List <Categories> > response = _categoryManager.GetCategoryList();
                model.SetCategoryListItems(response.Payload);

                return(View(model));
            }
        }