Esempio n. 1
0
        public async Task ReceiveUserCreated(UserCreatedEvent userEvent)
        {
            if (!await _messageTracker.HasProcessed(userEvent.EventId))
            {
                using (var transaction = await _context.Database.BeginTransactionAsync())
                {
                    try
                    {
                        var viewerCreated = _mapper.Map <Viewer>(userEvent);
                        _context.Viewer.Add(viewerCreated);
                        await _context.SaveChangesAsync();

                        await _messageTracker.MarkAsProcessed(userEvent.EventId);

                        await transaction.CommitAsync();
                    }
                    catch (Exception e)
                    {
                        await transaction.RollbackAsync();

                        _logger.LogError(e, $"Unexpected error while processing event of type {nameof(UserCreatedEvent)}" +
                                         $" EventId: {userEvent.EventId} UserId:{userEvent.UserId}");
                    }
                }
            }
        }
Esempio n. 2
0
        public async Task <bool> CreateSeriesWatched(Series series, string viewerId)
        {
            using (var trans = _context.Database.BeginTransaction(_capPublisher, autoCommit: false))
            {
                try
                {
                    var seriesWatched = new SeriesWatched
                    {
                        SeriesId = series.SeriesId,
                        ViewerId = viewerId
                    };
                    _context.SeriesWatched.Add(seriesWatched);
                    await _context.SaveChangesAsync();

                    var seriesWatchedEvent = _mapper.Map <SeriesWatchedEvent>(seriesWatched);
                    await _capPublisher.SendEvent(EventInfo.SeriesWatchedCreated, seriesWatchedEvent);

                    await trans.CommitAsync();

                    return(true);
                }
                catch (Exception e)
                {
                    await trans.RollbackAsync();

                    _logger.LogError(e, $"Unexpected error while creating series watched" +
                                     $" SeriesId:{series.SeriesId} UserId:{viewerId}");
                    return(false);
                }
            }
        }
Esempio n. 3
0
        public async Task MarkAsProcessed(Guid eventId)
        {
            var processedEvent = new ProcessedEvent
            {
                EventId = eventId
            };

            _context.ProcessedEvents.Add(processedEvent);
            await _context.SaveChangesAsync();
        }