private void HandleIncrementMessage(IncrementPlayCountMessage mes)
        {
            if (_moviePlayCounts.ContainsKey(mes.MovieTitle))
            {
                _moviePlayCounts[mes.MovieTitle]++;
            }
            else
            {
                _moviePlayCounts.Add(mes.MovieTitle, 1);
            }

            // simulated bugs
            if (_moviePlayCounts[mes.MovieTitle] > 3)
            {
                throw new SimulatedCorruptStateException();
            }

            if (mes.MovieTitle == "Terrible movie")
            {
                throw new SimulatedTerribleMovieException();
            }

            ColorConsole.WriteColorLine(
                $"MoviePlayCounterActor '{mes.MovieTitle}' has been watched {_moviePlayCounts[mes.MovieTitle]}",
                ConsoleColor.Magenta);
        }
        private void HandleIncrementMessage(IncrementPlayCountMessage message)
        {
            if (_moviePlayCounts.ContainsKey(message.MovieTitle))
            {
                var currentCount = _moviePlayCounts[message.MovieTitle];

                currentCount++;

                _moviePlayCounts[message.MovieTitle] = currentCount;
            }
            else
            {
                _moviePlayCounts.Add(message.MovieTitle, 1);
            }

            //  Simulated bugs
            if (message.MovieTitle == "Partial Recoil")
            {
                throw new SimulatedTerribleMovieException(message.MovieTitle);
            }

            if (message.MovieTitle == "Partial Recoil 2")
            {
                throw new InvalidOperationException("Simulated exception");
            }

            _logger.Info("MoviePlayCounterActor {Movie} has been watched {Times} times", message.MovieTitle, _moviePlayCounts[message.MovieTitle]);
        }
        private void HandleIncrementMessage(IncrementPlayCountMessage message)
        {
            var recentlyPlayedMoviesBufferIsFull = _recentlyPlayedMovies.Count == NumberOfRecentMoviesToAnalyze;

            if (recentlyPlayedMoviesBufferIsFull)
            {
                // remove oldest movie title
                _recentlyPlayedMovies.Dequeue();
            }

            _recentlyPlayedMovies.Enqueue(message.MovieTitle);

            LogDebug();

            var topMovie = _trendAnalyzer.CalculateMostPopularMovie(_recentlyPlayedMovies);

            _logger.Info("TrendingMoviesActor most popular movie trending now is {0}", topMovie);
        }
        private void HandleIncrementMessage(IncrementPlayCountMessage message)
        {
            if (_moviePlayCounts.ContainsKey(message.MovieTitle))
            {
                _moviePlayCounts[message.MovieTitle]++;
            }
            else
            {
                _moviePlayCounts.Add(message.MovieTitle, 1);
            }

            //  Simulated bugs
            if (message.MovieTitle == "Partial Recoil")
            {
                throw new SimulatedTerribleMovieException(message.MovieTitle);
            }

            if (message.MovieTitle == "Partial Recoil 2")
            {
                throw new InvalidOperationException("Simulated exception");
            }

            // TODO: log: MoviePlayCounterActor message.MovieTitle has been watched _moviePlayCounts[message.MovieTitle] times
        }