Esempio n. 1
0
        public virtual CustomerReviewRating ToModel(CustomerReviewRating rating)
        {
            if (rating == null)
            {
                throw new ArgumentNullException(nameof(rating));
            }

            rating.Id           = Id;
            rating.CreatedBy    = CreatedBy;
            rating.CreatedDate  = CreatedDate;
            rating.ModifiedBy   = ModifiedBy;
            rating.ModifiedDate = ModifiedDate;

            rating.AuthorNickname = AuthorNickname;
            rating.Rating         = Rating;
            rating.ReviewId       = ReviewId;

            return(rating);
        }
Esempio n. 2
0
        public virtual CustomerReviewRatingEntity FromModel(CustomerReviewRating rating, PrimaryKeyResolvingMap pkMap)
        {
            if (rating == null)
            {
                throw new ArgumentNullException(nameof(rating));
            }

            Id           = rating.Id;
            CreatedBy    = rating.CreatedBy;
            CreatedDate  = rating.CreatedDate;
            ModifiedBy   = rating.ModifiedBy;
            ModifiedDate = rating.ModifiedDate;
            ReviewId     = rating.ReviewId;

            AuthorNickname = rating.AuthorNickname;
            Rating         = rating.Rating;

            return(this);
        }
        // TODO: Remove first argument
        public void SaveCustomerReviewRates(CustomerReviewRating rating)
        {
            if (rating == null)
            {
                throw new ArgumentNullException(nameof(rating));
            }

            using (var repository = _repositoryFactory())
            {
                var review = repository.GetByIds(new string[] { rating.ReviewId }).FirstOrDefault();

                if (review == null)
                {
                    throw new ArgumentException(nameof(rating.ReviewId));
                }

                var pkMap = new PrimaryKeyResolvingMap();

                var sourceEntity = AbstractTypeFactory <CustomerReviewRatingEntity>
                                   .TryCreateInstance()
                                   .FromModel(rating, pkMap);

                var existingEntity = review.Ratings.FirstOrDefault(r => r.Id == rating.Id);

                if (existingEntity != null)
                {
                    sourceEntity.Patch(existingEntity);
                }
                else
                {
                    review.Ratings.Add(sourceEntity);
                }

                CommitChanges(repository);
                pkMap.ResolvePrimaryKeys();
            }
        }
Esempio n. 4
0
        public void CanDoCRUDandSearch()
        {
            // Read non-existing item
            var getByIdsResult = CustomerReviewService.GetByIds(new[] { CustomerReviewId });

            Assert.NotNull(getByIdsResult);
            Assert.Empty(getByIdsResult);

            // Create
            var item = new CustomerReview
            {
                Id             = CustomerReviewId,
                ProductId      = ProductId,
                CreatedDate    = DateTime.Now,
                CreatedBy      = "initial data seed",
                AuthorNickname = "John Doe",
                Content        = "Liked that",
                Rating         = 4
            };

            CustomerReviewService.SaveCustomerReviews(new[] { item });

            getByIdsResult = CustomerReviewService.GetByIds(new[] { CustomerReviewId });
            Assert.Single(getByIdsResult);

            item = getByIdsResult[0];
            Assert.Equal(CustomerReviewId, item.Id);

            // Update
            var updatedContent = "Updated content";

            Assert.NotEqual(updatedContent, item.Content);

            item.Content = updatedContent;
            CustomerReviewService.SaveCustomerReviews(new[] { item });
            getByIdsResult = CustomerReviewService.GetByIds(new[] { CustomerReviewId });
            Assert.Single(getByIdsResult);

            item = getByIdsResult[0];
            Assert.Equal(updatedContent, item.Content);

            // Rate
            var rating = new CustomerReviewRating
            {
                Rating         = 4,
                AuthorNickname = "john",
                CreatedBy      = "initial data seed",
                CreatedDate    = DateTime.Now,
                Id             = ReviewRatingId,
                ReviewId       = CustomerReviewId
            };

            Assert.Throws <ArgumentNullException>(() => CustomerReviewService.SaveCustomerReviewRates(null));

            CustomerReviewService.SaveCustomerReviewRates(rating);
            var gotRating = CustomerReviewService.GetRatings(CustomerReviewId);

            Assert.Equal(1, gotRating.TotalCount);
            Assert.Single(gotRating.Results);

            // Search
            Assert.Throws <ArgumentNullException>(() => CustomerReviewSearchService.SearchCustomerReviews(null));

            var criteria = new CustomerReviewSearchCriteria {
                ProductIds = new[] { ProductId }
            };
            var searchResult = CustomerReviewSearchService.SearchCustomerReviews(criteria);

            Assert.NotNull(searchResult);
            Assert.Equal(1, searchResult.TotalCount);
            Assert.Single(searchResult.Results);

            // Delete
            CanDeleteCustomerReviews();
        }
Esempio n. 5
0
 public IHttpActionResult Rate(CustomerReviewRating rating)
 {
     _customerReviewService.SaveCustomerReviewRates(rating);
     return(StatusCode(HttpStatusCode.NoContent));
 }