Beispiel #1
0
        public async Task ReceiveEpisodeCreated(EpisodeCreatedEvent episodeEvent)
        {
            if (!await _messageTracker.HasProcessed(episodeEvent.EventId))
            {
                var episode = _mapper.Map <Episode>(episodeEvent);
                using (var transaction = await _context.Database.BeginTransactionAsync())
                {
                    try
                    {
                        _context.Episode.Add(episode);

                        await _context.SaveChangesAsync();

                        await _messageTracker.MarkAsProcessed(episodeEvent.EventId);

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

                        _logger.LogError(e, $"Unexpected error while processing event of type {nameof(EpisodeCreatedEvent)}" +
                                         $" EventId: {episodeEvent.EventId} EpisodeId:{episodeEvent.EpisodeId}");
                    }
                }
            }
        }
Beispiel #2
0
        public async Task ReceiveEpisodeCreated(EpisodeCreatedEvent episodeEvent)
        {
            if (!await _messageTracker.HasProcessed(episodeEvent.EventId))
            {
                using (var transaction = await _context.Database.BeginTransactionAsync())
                {
                    try
                    {
                        var episodeCreated = _mapper.Map <Episode>(episodeEvent);

                        // Email értesítés küldése azoknak a felhasználóknak akik nézik ezt a sorozatot,
                        // hogy új rész jött ki

                        var series = await _context.Series
                                     .FirstAsync(s => s.SeriesId == episodeCreated.SeriesId);

                        var viewers = await _context.Series
                                      .Where(s => s.SeriesId == episodeCreated.SeriesId)
                                      .Select(s => s.SeriesWatched.Select(sw => sw.Viewer))
                                      .FirstAsync();

                        foreach (var viewer in viewers)
                        {
                            //var notificationMessage = new Message(
                            //    //new string[] { viewer.Email },
                            //    new string[] { "*****@*****.**" },
                            //    $"New {series.Title} episode released",
                            //    $"Episode title:{episodeCreated.EpisodeTitle}" +
                            //    $"Season:{episodeCreated.Season} Episode:{episodeCreated.EpisodeNumber}"
                            //);
                            //await _emailSender.SendEmailAsync(notificationMessage);
                        }

                        _context.Episode.Add(episodeCreated);
                        await _context.SaveChangesAsync();

                        await _messageTracker.MarkAsProcessed(episodeEvent.EventId);

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

                        _logger.LogError(e, $"Unexpected error while processing event of type {nameof(EpisodeCreatedEvent)}" +
                                         $" EventId: {episodeEvent.EventId} EpisodeId:{episodeEvent.EpisodeId}");
                    }
                }
            }
        }