예제 #1
0
        public void Handle(OrderRated @event)
        {
            using (var context = _contextFactory.Invoke())
            {
                context.Set <OrderRatingDetails>().Add(new OrderRatingDetails
                {
                    Id        = Guid.NewGuid(),
                    AccountId = @event.AccountId,
                    OrderId   = @event.SourceId,
                    Note      = @event.Note,
                });

                foreach (var ratingScore in @event.RatingScores)
                {
                    context.Set <RatingScoreDetails>().Add(new RatingScoreDetails
                    {
                        Id           = Guid.NewGuid(),
                        OrderId      = @event.SourceId,
                        Score        = ratingScore.Score,
                        RatingTypeId = ratingScore.RatingTypeId,
                        Name         = ratingScore.Name
                    });
                }

                var order = context.Find <OrderDetail>(@event.SourceId);
                order.IsRated = true;

                context.SaveChanges();
            }
        }
예제 #2
0
 public void RefreshOrderStatus(OrderRated orderRated)
 {
     if (orderRated.Content == OrderId)
     {
         HasRated = true;
     }
 }
예제 #3
0
        public void when_order_rated_then_order_dto_populated()
        {
            var orderRated = new OrderRated
            {
                AccountId    = _accountId,
                SourceId     = _orderId,
                Note         = "Note",
                RatingScores = new List <RatingScore>
                {
                    new RatingScore {
                        RatingTypeId = Guid.NewGuid(), Score = 1
                    },
                    new RatingScore {
                        RatingTypeId = Guid.NewGuid(), Score = 2
                    }
                }
            };

            Sut.Handle(orderRated);

            using (var context = new BookingDbContext(DbName))
            {
                var orderRatingDetailsDto =
                    context.Query <OrderRatingDetails>().SingleOrDefault(o => o.OrderId == _orderId);
                Assert.NotNull(orderRatingDetailsDto);
                Assert.That(orderRatingDetailsDto.Note, Is.EqualTo(orderRated.Note));

                var ratingScoreDetailsDto =
                    context.Query <RatingScoreDetails>().Where(s => s.OrderId == _orderId).ToList();
                Assert.That(ratingScoreDetailsDto.Count, Is.EqualTo(2));

                var x1 =
                    orderRated.RatingScores.Single(x => x.RatingTypeId == ratingScoreDetailsDto.First().RatingTypeId);
                Assert.That(ratingScoreDetailsDto.First().Score, Is.EqualTo(x1.Score));

                var x2 =
                    orderRated.RatingScores.Single(
                        x => x.RatingTypeId == ratingScoreDetailsDto.ElementAt(1).RatingTypeId);
                Assert.That(ratingScoreDetailsDto.ElementAt(1).Score, Is.EqualTo(x2.Score));
            }
        }
        public void Handle(OrderRated @event)
        {
            using (var context = _contextFactory.Invoke())
            {
                var orderReport = context.Find <OrderReportDetail>(@event.SourceId);

                var rating = new Dictionary <string, string>();

                foreach (var ratingScore in @event.RatingScores)
                {
                    if (!rating.ContainsKey(ratingScore.Name))
                    {
                        rating.Add(ratingScore.Name, ratingScore.Score.ToString());
                    }
                }

                orderReport.Rating = JsonSerializer.SerializeToString(rating);

                context.SaveChanges();
            }
        }
        public void when_rating_twice_order_get_error()
        {
            var orderRated = new OrderRated
            {
                SourceId     = _orderId,
                Note         = "Note",
                RatingScores = new List <RatingScore>
                {
                    new RatingScore {
                        RatingTypeId = Guid.NewGuid(), Score = 1, Name = "Politness"
                    },
                    new RatingScore {
                        RatingTypeId = Guid.NewGuid(), Score = 2, Name = "Safety"
                    }
                }
            };

            var rateOrder2 = new RateOrder
            {
                AccountId    = _accountId,
                OrderId      = _orderId,
                Note         = "Note",
                RatingScores = new List <RatingScore>
                {
                    new RatingScore {
                        RatingTypeId = Guid.NewGuid(), Score = 1, Name = "Politness"
                    },
                    new RatingScore {
                        RatingTypeId = Guid.NewGuid(), Score = 2, Name = "Safety"
                    }
                }
            };

            _sut.Given(orderRated);
            _sut.When(rateOrder2);
            Assert.AreEqual(0, _sut.Events.Count);
        }
예제 #6
0
 private void OnOrderRated(OrderRated obj)
 {
     // allows old non-working ratings from being re-rated
     _isRated = obj.RatingScores.Any();
 }