private void OnRecommendMovie(object obj)
        {
            var dataRepository = Container.GetInstance <IDataRepository>();
            var userMovies     = dataRepository.TrainingRatings.Where(r => r.User == SelectedUser).Select(r => r.Movie);

            var unratedMovies = new ConcurrentBag <Movie>();

            Parallel.ForEach(dataRepository.Movies, movie =>
            {
                if (!userMovies.Contains(movie))
                {
                    unratedMovies.Add(movie);
                }
            });

            var results = new ConcurrentBag <IRating>();

            Parallel.ForEach(unratedMovies, m =>
            {
                try
                {
                    var rating = SelectedMethod.RecommendSubject(SelectedUser, m);
                    if (rating != null)
                    {
                        results.Add(rating);
                    }
                }
                catch (Exception)
                {
                }
            });

            RecommendedMovies = new ObservableCollection <IRating>(results.OrderBy(r => r.Value).Reverse().Take(10));
        }
 private void OnGetRecommendationValue(object obj)
 {
     try
     {
         RecommendationValue = SelectedMethod.RecommendSubject(SelectedUser, SelectedMovie);
     }
     catch (Exception e)
     {
         MessageBox.Show("Problem z wyznaczeniem wartości rekomendacji", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
     }
 }