예제 #1
0
 public IEnumerable <Movie> Search(MovieSearchModel searchModel)
 {
     return(GetAll()
            .Where(item =>
                   StartsWith(item.Name, searchModel.Name) &&
                   Equal(item.Company.Name, searchModel.CompanyName) &&
                   Equal(item.Genre.Name, searchModel.GenreName) &&
                   Equal(item.Quality.Name, searchModel.QualityName) &&
                   Equal(item.Format.Name, searchModel.FormatName) &&
                   IsComparisonCorrect(item.Runtime, searchModel.RuntimeComparison) &&
                   IsComparisonCorrect(item.ReleaseDate, searchModel.ReleaseDateComparison)
                   ));
 }
예제 #2
0
        public IActionResult SearchMovies([FromBody] MovieSearchModel searchRequest)
        {
            try
            {
                var searchResults = _service.SearchMovies(searchRequest);

                return(Ok(searchResults));
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, "A problem happened while handling your request."));
            }
        }
예제 #3
0
        public async Task <ActionResult> MovieList([FromQuery] MovieSearchModel movieSearchModel)
        {
            if (!ModelState.IsValid)
            {
                return(null);
            }

            var movies = await _movieService.GetMovies(
                title : movieSearchModel.Title,
                lastItemIndex : movieSearchModel.ItemIndex
                );

            //convert to viewModel
            var movieViewModels = _mapper.Map <List <MovieModel>, List <MovieViewModel> >(movies);

            return(PartialView("_MovieList", movieViewModels));
        }
        public void Verify_Search_WithPaging_Should_ReturnAListOfMoviesWithDataMatchingSearchParameters()
        {
            // Arrange
            Mock <IDbSet <Movie> > mockSetMovies;
            var mockContext = MoviesMockingSetup.DoMockingSetupForContext(true, out mockSetMovies);
            var repository  = new MoviesRepository(mockContext.Object);
            var searchModel = new MovieSearchModel {
                Paging = new Paging {
                    Skip = 1, Take = 1
                }
            };
            // Act
            var movies = repository.Search(searchModel /*.Object*/).ToArray();

            // Assert
            Assert.Equal(1, movies.Length);
            Assert.Equal(2, movies[0].Id);
            Assert.Equal("/TEST/NIVEN-LARRY", movies[0].ApiDetailUrl);
            // Stephen King was filtered out because he was Skipped
        }
        public void Verify_Search_WithModifiedSince_Should_ReturnAListOfMoviesWithDataMatchingSearchParameters()
        {
            // Arrange
            Mock <IDbSet <Movie> > mockSetMovies;
            var mockContext = MoviesMockingSetup.DoMockingSetupForContext(true, out mockSetMovies, true);
            var repository  = new MoviesRepository(mockContext.Object);
            var createDate  = new System.DateTime(2015, 05, 28, 10, 45, 00).AddDays(1).AddMinutes(-1);
            //var searchModel = new Mock<IMovieSearchModel>();
            //searchModel.Setup(m => m.ModifiedSince).Returns(() => createDate);
            var searchModel = new MovieSearchModel {
                ModifiedSince = createDate
            };
            // Act
            var movies = repository.Search(searchModel /*.Object*/).ToArray();

            // Assert
            Assert.Equal(1, movies.Length);
            Assert.Equal(2, movies[0].Id);
            Assert.Equal("/TEST/NIVEN-LARRY", movies[0].ApiDetailUrl);
            // Stephen King was filtered out because he was created before the modified since date
        }
예제 #6
0
        public IActionResult Search(MovieSearchModel searchModel)
        {
            if (!string.IsNullOrWhiteSpace(searchModel.Title))
            {
                searchModel.Title = searchModel.Title.Trim();
            }
            if (SessionValueExists("movie-query"))
            {
                searchModel.Title = GetStringFromSession("movie-query");
            }
            if (SessionValueExists("wish"))
            {
                searchModel.Title = GetFromSession <string>("wish");
            }

            if (Request.Headers["Referrer"].Contains("/Movie/Search") && string.IsNullOrWhiteSpace(searchModel.Title))
            {
                ShowStatusMessage(MessageTypeEnum.error, "Please enter search terms.", "Search Error");

                return(View(searchModel));
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Title))
            {
                searchModel.MovieResults  = _tmdbService.SearchMovies(searchModel.Title);
                searchModel.TVShowResults = _tmdbService.SearchTV(searchModel.Title);
                foreach (var result in searchModel.MovieResults)
                {
                    result.poster_path = string.Format("https://image.tmdb.org/t/p/w300{0}", result.poster_path);
                }

                foreach (var result in searchModel.TVShowResults)
                {
                    result.poster_path = string.Format("https://image.tmdb.org/t/p/w300{0}", result.poster_path);
                }
            }
            ViewBag.Title = "Movie/TV Show Search";

            return(View(searchModel));
        }
 public void Verify_Search_WithPaging_Should_ReturnAListOfMoviesWithDataMatchingSearchParameters()
 {
     // Arrange
     Mock<IDbSet<Movie>> mockSetMovies;
     var mockContext = MoviesMockingSetup.DoMockingSetupForContext(true, out mockSetMovies);
     var repository = new MoviesRepository(mockContext.Object);
     var searchModel = new MovieSearchModel { Paging = new Paging { Skip = 1, Take = 1 } };
     // Act
     var movies = repository.Search(searchModel/*.Object*/).ToArray();
     // Assert
     Assert.Equal(1, movies.Length);
     Assert.Equal(2, movies[0].Id);
     Assert.Equal("/TEST/NIVEN-LARRY", movies[0].ApiDetailUrl);
     // Stephen King was filtered out because he was Skipped
 }
 public void Verify_Search_WithModifiedSince_Should_ReturnAListOfMoviesWithDataMatchingSearchParameters()
 {
     // Arrange
     Mock<IDbSet<Movie>> mockSetMovies;
     var mockContext = MoviesMockingSetup.DoMockingSetupForContext(true, out mockSetMovies, true);
     var repository = new MoviesRepository(mockContext.Object);
     var createDate = new System.DateTime(2015, 05, 28, 10, 45, 00).AddDays(1).AddMinutes(-1);
     //var searchModel = new Mock<IMovieSearchModel>();
     //searchModel.Setup(m => m.ModifiedSince).Returns(() => createDate);
     var searchModel = new MovieSearchModel { ModifiedSince = createDate };
     // Act
     var movies = repository.Search(searchModel/*.Object*/).ToArray();
     // Assert
     Assert.Equal(1, movies.Length);
     Assert.Equal(2, movies[0].Id);
     Assert.Equal("/TEST/NIVEN-LARRY", movies[0].ApiDetailUrl);
     // Stephen King was filtered out because he was created before the modified since date
 }
예제 #9
0
        public MainViewModel(INovaromaEngine engine, IExceptionHandler exceptionHandler, IDialogService dialogService, ILogger logger)
            : base(dialogService)
        {
            _engine           = engine;
            _exceptionHandler = exceptionHandler;
            _logger           = logger;
            _pluginServices   = engine.Services.OfType <IPluginService>();

            var genres = engine.MediaGenres;

            _movieSearchModel    = new MovieSearchModel(genres);
            _tvShowSearchModel   = new TvShowSearchModel(genres);
            _activitySearchModel = new ActivitySearchModel();

            _installUpdateCommand          = new RelayCommand(InstallUpdate);
            _aboutCommand                  = new RelayCommand(About);
            _newCommand                    = new RelayCommand(NewMedia);
            _watchDirectoryCommand         = new RelayCommand(WatchDirectory);
            _discoverCommand               = new RelayCommand(Discover);
            _manualDownloadCommand         = new RelayCommand(DoManualDownload);
            _executePluginServiceCommand   = new RelayCommand(DoExecutePluginService);
            _settingsCommand               = new RelayCommand(EditSettings);
            _executeDownloadsCommand       = new RelayCommand(ExecuteDownloads);
            _executeTvShowUpdatesCommand   = new RelayCommand(ExecuteTvShowUpdates);
            _backupDatabaseCommand         = new RelayCommand(DoBackupDatabase);
            _manageRuntimeServicesCommand  = new RelayCommand(ManageRuntimeServices);
            _clearLogsAndActivitiesCommand = new RelayCommand(DoClearLogsAndActivities);

            _saveSearchModelCommand        = new RelayCommand(DoSaveSearchModel);
            _movieSearchCommand            = new RelayCommand(DoGetMovies);
            _tvShowSearchCommand           = new RelayCommand(DoGetTvShows);
            _clearMovieSearchModelCommand  = new RelayCommand(DoClearMovieSearchModel);
            _clearTvShowSearchModelCommand = new RelayCommand(DoClearTvShowSearchModel);

            _moviePlayCommand             = new RelayCommand(PlayMovie, CanPlayMovie);
            _movieMarkWatchedCommand      = new RelayCommand(MarkMovieWatched, CanMarkMovieWatched);
            _movieUpdateInfoCommand       = new RelayCommand(DoUpdateMovieInfo);
            _movieDeleteCommand           = new RelayCommand(DoDeleteMovie);
            _movieSaveCommand             = new RelayCommand(DoSaveMovie);
            _movieDownloadCommand         = new RelayCommand(DoDownloadMovie);
            _movieSubtitleDownloadCommand = new RelayCommand(DoDownloadMovieSubtitle);
            _movieDiscoverFilesCommand    = new RelayCommand(DiscoverMovieFiles);
            _movieGoToDirectoryCommand    = new RelayCommand(GoToMovieDirectory);

            _tvShowPlayCommand = new RelayCommand(PlayTvShow, CanPlayTvShow);
            _tvShowMarkEpisodeWatchedCommand = new RelayCommand(MarkEpisodeWatched, CanMarkEpisodeWatched);
            _tvShowEpisodePlayCommand        = new RelayCommand(PlayTvShowEpisode, CanPlayTvShowEpisode);
            _tvShowEpisodeDeleteCommand      = new RelayCommand(DeleteTvShowEpisode, CanDeleteTvShowEpisode);
            _tvShowUpdateInfoCommand         = new RelayCommand(DoUpdateTvShowInfo);
            _tvShowDeleteCommand             = new RelayCommand(DoDeleteTvShow);
            _tvShowSaveCommand                    = new RelayCommand(DoSaveTvShow);
            _tvShowEpisodeDownloadCommand         = new RelayCommand(DoDownloadTvShowEpisode);
            _tvShowEpisodeSubtitleDownloadCommand = new RelayCommand(DoDownloadTvShowEpisodeSubtitle);
            _tvShowDiscoverFilesCommand           = new RelayCommand(DiscoverTvShowFiles);
            _tvShowGoToDirectoryCommand           = new RelayCommand(GoToTvShowDirectory);
            _activityPlayCommand                  = new RelayCommand(PlayActivity);

            _sendASmileCommand = new RelayCommand(SendASmile);
            _sendAFrownCommand = new RelayCommand(SendAFrown);

            _escapeKeyCommand = new RelayCommand(PressEscapeKey);

            _allTvDownloadCheckCommand     = new RelayCommand(o => Helper.AllTvDownloadCheck(o, _engine));
            _allSeasonDownloadCheckCommand = new RelayCommand(o => Helper.AllSeasonDownloadCheck(o, _engine));
            _episodeDownloadCheckCommand   = new RelayCommand(o => Helper.EpisodeDownloadCheck(o, _engine));
            _movieDownloadCheckCommand     = new RelayCommand(o => Helper.MovieDownloadCheck(o, _engine));

            _videoQualityEnumInfo = Constants.VideoQualityEnumInfo;

            _engine.MoviesChanged     += EngineOnMoviesChanged;
            _engine.TvShowsChanged    += EngineOnTvShowsChanged;
            _engine.ActivitiesChanged += EngineOnActivitiesChanged;
            _engine.LanguageChanged   += EngineOnLanguageChanged;

            _updateCheckTimer = new Timer(o => DoCheckForUpdate(), null, TimeSpan.FromSeconds(5), TimeSpan.FromHours(1));
        }
예제 #10
0
 public List <MovieSearchResultsModel> SearchMovies(MovieSearchModel model) => _movieRepository.SearchMovies(model);
예제 #11
0
 private void ResetSearch()
 {
     _searchModel = new MovieSearchModel();
 }
        private async void ExecuteSearchCommand()
        {
            if (!await StatusConnections.VerifyConnect())
            {
                ItemsMovie.Add(new MoviesModel()
                {
                    title = "Sem conexão ativa com a internet..."
                }); IsBusy = false;
                return;
            }
            var itemsInfiniteSearch = new InfiniteScrollCollection <MoviesModel>
            {
                OnLoadMore = async() =>
                {
                    IsBusy = true;
                    CountPages++;
                    if (CountPages == 1)
                    {
                        ItemsMovie.Clear();
                    }
                    var moviesList = await HubService.GetSearchMovieAsync(SearchText, CountPages.ToString());

                    if (moviesList == null)
                    {
                        return(new InfiniteScrollCollection <MoviesModel>());
                    }

                    foreach (var itemMovie in moviesList.results)
                    {
                        itemMovie.poster_path = PathMoviesImage.PathConverter(itemMovie.id.ToString(), itemMovie.poster_path);

                        ItemsMovie.Add(itemMovie);
                    }
                    IsBusy = false;
                    return(moviesList.results);
                }
            };

            if (string.IsNullOrEmpty(SearchText))
            {
                await LoadAsync();

                return;
            }
            IsBusy     = true;
            CountPages = 1;
            MovieSearchModel movies = await HubService.GetSearchMovieAsync(SearchText, CountPages.ToString());

            IsBusy = false;
            if (movies == null)
            {
                return;
            }



            if (CountPages == 1)
            {
                ItemsMovie.Clear();
            }
            foreach (var item in movies.results)
            {
                item.poster_path = PathMoviesImage.PathConverter(item.id.ToString(), item.poster_path);

                ItemsMovie.Add(item);
            }
            OnPropertyChanged(nameof(ItemsMovie)); IsBusy = false;
        }