Beispiel #1
0
        public async Task RiderRatingChanged(int idRider, decimal newRating)
        {
            var newRatingEvt = new RiderRatingChangedEvent
            {
                IdRider = idRider
            };

            using (var scope = _serviceScopeFactory.CreateScope())
            {
                IReviewService reviewService = scope.ServiceProvider.GetRequiredService <IReviewService>();

                var riderReviews = await reviewService.GetRiderReviews(idRider);

                newRatingEvt.newAverageRating = riderReviews.Sum(rw => rw.Rating) / riderReviews.Count();
            }

            IBasicProperties props = _channel.CreateBasicProperties();

            props.Type = nameof(RiderRatingChangedEvent);

            var body = MessageSerializationHelper.SerializeObjectToBin(newRatingEvt);

            _channel.BasicPublish(exchange: string.Empty,
                                  routingKey: ApplicationEvents.DeliveryQueue,
                                  basicProperties: props,
                                  body: body);
        }
Beispiel #2
0
        private async Task HandleRiderRatingChangedEvent(RiderRatingChangedEvent riderRatingChanged)
        {
            using (var scope = _serviceScopeFactory.CreateScope())
            {
                IRiderService riderService = scope.ServiceProvider.GetRequiredService <IRiderService>();

                var updatedRider = new Rider
                {
                    IdRider       = riderRatingChanged.IdRider,
                    AverageRating = riderRatingChanged.newAverageRating
                };

                await riderService.UpdateRider(updatedRider);
            }
        }