Beispiel #1
0
        internal static MovieQuery ReadQuery()
        {
            //Create a query object
            MovieQuery query = new MovieQuery();

            Console.WriteLine("Please enter your query");

            //Read the query
            query.Query = Console.ReadLine();

            Console.WriteLine("Do you want to specify an cast?");
            string cast = Console.ReadLine();

            while (!string.IsNullOrEmpty(cast))
            {
                query.CastFilter.Add(cast);

                Console.WriteLine("Add another cast?");
                cast = Console.ReadLine();
            }

            Console.WriteLine("Do you want to specify a genre?");
            string genre = Console.ReadLine();

            while (!string.IsNullOrEmpty(genre))
            {
                query.GenreFilter.Add(genre);

                Console.WriteLine("Add another genre?");
                genre = Console.ReadLine();
            }

            //return the query object
            return(query);
        }
Beispiel #2
0
        internal ICollection <ISolrQuery> BuildFilterQueries(MovieQuery query)
        {
            ICollection <ISolrQuery> filters = new List <ISolrQuery>();

            List <SolrQueryByField> refinersCast  = new List <SolrQueryByField>();
            List <SolrQueryByField> refinersGenre = new List <SolrQueryByField>();

            foreach (string cast in query.CastFilter)
            {
                refinersCast.Add(new SolrQueryByField("cast", cast));
            }

            foreach (string genre in query.GenreFilter)
            {
                refinersGenre.Add(new SolrQueryByField("genres", genre));
            }

            if (refinersCast.Count > 0)
            {
                filters.Add(new SolrMultipleCriteriaQuery(refinersCast, "OR")); //AND
            }

            if (refinersGenre.Count > 0)
            {
                filters.Add(new SolrMultipleCriteriaQuery(refinersGenre, "OR")); //AND
            }

            return(filters);
        }
        public async Task <IActionResult> GetMovieList([FromQuery] MovieQuery query)
        {
            var movies = await _movieService.GetMovies(query);

            Response.AddPaginationHeader(movies, nameof(GetMovieList), query, Url);
            return(Ok(new MovieList(movies)));
        }
Beispiel #4
0
        public Task <IPagedCollection <MovieDetail> > GetMovies(MovieQuery query)
        {
            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            return(GetMovies());

            async Task <IPagedCollection <MovieDetail> > GetMovies()
            {
                var filter = _filter
                             .WhereGenresEquals(query.Genres)
                             .WhereTitleEquals(query.Title)
                             .Filter;

                var moviesFromDb = await _context
                                   .Movies
                                   .Where(filter)
                                   .OrderBy(query.Order, _order)
                                   .ToPagedCollectionAsync(query.Page, query.Limit)
                                   .ConfigureAwait(false);

                var movies = _mapper.Map <IReadOnlyList <MovieDetail> >(moviesFromDb);

                return(new PagedCollection <MovieDetail>(
                           movies,
                           moviesFromDb.ItemCount,
                           moviesFromDb.CurrentPageNumber,
                           moviesFromDb.PageSize));
            }
        }
Beispiel #5
0
        public async Task <IActionResult> GetAll([FromQuery] MovieQuery query)
        {
            var movies = await _movieRepository.GetAll(query);

            var moviesJson = movies.Select(x => new MovieJson(x)).ToList();

            return(Ok(moviesJson));
        }
        public IEnumerable <MovieDomainModel> GetAllMovies(bool?isCurrent, MovieQuery query)
        {
            var data = _moviesRepository.GetCurrentMovies();

            if (query.ActorName != null)
            {
                data = data.Where(x => x.MovieActors.Any(a => a.Actor.FirstName.ToLower().Contains(query.ActorName.ToLower())));
            }

            if (query.Title != null)
            {
                data = data.Where(x => x.Title.ToLower().Contains(query.Title.ToLower()));
            }

            if (query.RatingLowerThan > 0)
            {
                data = data.Where(x => x.Rating < query.RatingLowerThan);
            }

            if (query.RatingBiggerThan > 0)
            {
                data = data.Where(x => x.Rating > query.RatingBiggerThan);
            }

            if (query.YearLowerThan > 0)
            {
                data = data.Where(x => x.Year < query.YearLowerThan);
            }

            if (query.YearBiggerThan > 0)
            {
                data = data.Where(x => x.Year > query.YearBiggerThan);
            }

            if (query.HasOscar != null)
            {
                data = data.Where(x => x.HasOscar == query.HasOscar);
            }

            List <MovieDomainModel> result = new List <MovieDomainModel>();
            MovieDomainModel        model;

            foreach (var item in data)
            {
                model = new MovieDomainModel
                {
                    Current  = item.Current,
                    Id       = item.Id,
                    Rating   = item.Rating ?? 0,
                    Title    = item.Title,
                    Year     = item.Year,
                    HasOscar = item.HasOscar
                };
                result.Add(model);
            }

            return(result);
        }
        public async Task <IActionResult> AddToMovies([FromBody] Movie movie)
        {
            await Db.Connection.OpenAsync();

            var query  = new MovieQuery(Db);
            var result = await query.addNewMovie(movie);

            return(new OkObjectResult(result));
        }
        public async Task <IActionResult> DeleteMovieById(int id)
        {
            await Db.Connection.OpenAsync();

            var query  = new MovieQuery(Db);
            var result = await query.delelteMovieById(id);

            return(new OkObjectResult(result));
        }
        public async Task <IActionResult> Put(int id, [FromBody] Movie movie)
        {
            await Db.Connection.OpenAsync();

            var query  = new MovieQuery(Db);
            var result = await query.updateMovie(id, movie);

            return(new OkObjectResult(result));
        }
Beispiel #10
0
        public void ShouldGetMoviesFromService()
        {
            var movieQuery = new MovieQuery();
            var controller = new MoviesController(_mockMovieService.Object);

            controller.Get(movieQuery);

            _mockMovieService.Verify(m => m.All(movieQuery), Times.Once);
        }
 public IActionResult Get([FromQuery] MovieQuery query)
 {
     try
     {
         return(Ok(getMovies.Execute(query)));
     }
     catch (Exception e)
     {
         return(StatusCode(500, e));
     }
 }
Beispiel #12
0
 public void Post([FromBody] MovieData value)
 {
     try
     {
         var movieQuery = new MovieQuery();
         movieQuery.AddMovie(value);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Beispiel #13
0
        public MovieResponse All(MovieQuery query)
        {
            var movieResponse   = new MovieResponse();
            var movieDbResponse = _movieRepository.GetAll(query);

            if (movieDbResponse != null && movieDbResponse.Count > 0)
            {
                movieResponse.Count  = movieDbResponse.Count;
                movieResponse.Movies = movieDbResponse.Movies.Select(m => _movieConverter.ConvertToMovie(m)).OrderBy(m => m.Title);
            }
            return(movieResponse);
        }
 // GET: Movies
 public ActionResult Index([FromQuery] MovieQuery query)
 {
     try
     {
         return(View(executor.ExecuteQuery(getMovies, query)));
     }
     catch (Exception e)
     {
         TempData["error"] = e.Message;
     }
     return(RedirectToAction("Home", "Index"));
 }
 public ActionResult <CombinedData[]> stats()
 {
     try
     {
         var testingClass = new MovieQuery();
         return(testingClass.MovieStats());
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Beispiel #16
0
        public void FilterTest()
        {
            var fakeRepo   = new FakeMovieRepository();
            var movies     = fakeRepo.GetMovieList().Result;
            var movieQuery = new MovieQuery {
                MinYear = 2013, MaxYear = 2016, OrderBy = "Released"
            };
            var filteredMovies = movies.Filter(movieQuery);

            Assert.True(filteredMovies.Count() == 3);
            Assert.NotNull(filteredMovies.FirstOrDefault());
            Assert.Equal(filteredMovies.FirstOrDefault().ImdbID, "2");
        }
        public async Task <ActionResult <IEnumerable <Movie> > > GetAsync([FromQuery] MovieQuery query)
        {
            IEnumerable <MovieDomainModel> movieDomainModels;

            movieDomainModels = _movieService.GetAllMovies(true, query);

            if (movieDomainModels == null)
            {
                movieDomainModels = new List <MovieDomainModel>();
            }

            return(Ok(movieDomainModels));
        }
        public async Task <ActionResult <IEnumerable <Movie> > > GetAsyncByTag([FromQuery] MovieQuery query)
        {
            IEnumerable <MovieDomainModel> movieDomainModels;

            movieDomainModels = await _movieService.GetAllMoviesFilterWithNonCurrent(true, query);

            if (movieDomainModels == null)
            {
                movieDomainModels = new List <MovieDomainModel>();
            }

            return(Ok(movieDomainModels));
        }
Beispiel #19
0
        public void ShouldGetMoviesFromServiceWithFilter()
        {
            var query = new MovieQuery
            {
                SearchFilter = "My Movie",
                Take         = 10,
                Skip         = 1
            };
            var controller = new MoviesController(_mockMovieService.Object);

            controller.Get(query);

            _mockMovieService.Verify(m => m.All(query), Times.Once);
        }
        public async Task <IActionResult> GetTop10Movies()
        {
            await Db.Connection.OpenAsync();

            var moviesQuery      = new MovieQuery(Db);
            var movieImagesQuery = new MovieImageQuery(Db);
            var movies           = await moviesQuery.getTop10Movies();

            foreach (var movie in movies)
            {
                movie.filmKepek = await movieImagesQuery.getMovieImagesById(movie.film_id);
            }

            return(new OkObjectResult(movies));
        }
Beispiel #21
0
        public async Task <IActionResult> GetMoviesByQuery([FromBody] MovieQuery query)
        {
            try
            {
                var movies = await GetMovieDataFromCache();

                var filteredMovies = movies.Filter(query);
                return(Ok(filteredMovies));
            }
            catch (Exception ex)
            {
                var jsonResult = new JsonResult(new { error = ex.Message });
                jsonResult.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                return(jsonResult);
            }
        }
        public async Task <ActionResult> Get([FromQuery] MovieQuery query)
        {
            if (!query.AssertIsValid())
            {
                return(BadRequest());
            }

            var results = await _movieRepository.GetMoviesByQuery(query);

            if (results.Count() == 0)
            {
                return(NotFound());
            }

            return(Ok(results));
        }
Beispiel #23
0
        public void Get_Current_Movies_Return_All()
        {
            //Arrange
            int expectedCount      = 1;
            int expectedStatusCode = 200;

            MovieDomainModel movieDomainModel = new MovieDomainModel
            {
                Id       = Guid.NewGuid(),
                Current  = true,
                HasOscar = false,
                Rating   = 2,
                Title    = "Film1",
                Year     = 2015
            };

            MovieQuery movieQuery = new MovieQuery
            {
                HasOscar = true
            };

            List <MovieDomainModel> movieDomainModels = new List <MovieDomainModel>();


            movieDomainModels.Add(movieDomainModel);
            IEnumerable <MovieDomainModel> movieDomainModelsIEn = movieDomainModels;
            IEnumerable <MovieDomainModel> response             = movieDomainModelsIEn;

            _movieService  = new Mock <IMovieService>();
            _loggerService = new Mock <ILogger <MoviesController> >();
            _movieService.Setup(x => x.GetAllMovies(It.IsAny <bool>(), It.IsAny <MovieQuery>())).Returns(response);
            MoviesController moviesController = new MoviesController(_loggerService.Object, _movieService.Object);

            //Act
            var result     = moviesController.GetAsync(movieQuery).ConfigureAwait(false).GetAwaiter().GetResult().Result;
            var resultList = ((OkObjectResult)result).Value;
            var movieDomainModelResultList = (List <MovieDomainModel>)resultList;

            //Assert
            Assert.IsNotNull(resultList);
            Assert.AreEqual(expectedCount, movieDomainModelResultList.Count);
            Assert.AreEqual(movieDomainModel.Id, movieDomainModelResultList[0].Id);
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }
Beispiel #24
0
        public void ShouldReturnMoviesFromController()
        {
            var movieQuery = new MovieQuery();
            var movies     = new List <Movie> {
                new Movie {
                    Id = 1, Title = "The Movie"
                }
            };
            var movieReponse = new MovieResponse();

            movieReponse.Movies = movies;
            _mockMovieService.Setup(m => m.All(movieQuery)).Returns(movieReponse);
            var controller = new MoviesController(_mockMovieService.Object);

            var result = controller.Get(movieQuery);

            Assert.Equal(movieReponse, result);
        }
Beispiel #25
0
        public void ShouldGetMoviesFromRepositoryWithFilterAndPaging()
        {
            var movieQuery = new MovieQuery
            {
                SearchFilter = "Search",
                Categories   = new List <string> {
                    "Action"
                },
                Take = 10,
                Skip = 5
            };

            var movieService = new MovieService(_mockMovieRepository.Object, _mockMovieConverter.Object);

            movieService.All(movieQuery);

            _mockMovieRepository.Verify(m => m.GetAll(movieQuery), Times.Once);
        }
Beispiel #26
0
        static void Main(string[] args)
        {
            //create a search library instance
            MovieSearch searchLibrary = new MovieSearch();

            MovieQuery query = new MovieQuery();

            query = QueryReader.ReadQuery();

            while (query.Query != Environment.NewLine)
            {
                QueryResponse response = searchLibrary.DoSearch(query);

                PrettyPrintResults.PrintOut(response);

                query = QueryReader.ReadQuery();
            }
        }
Beispiel #27
0
        public QueryResponse DoSearch(MovieQuery query)
        {
            //Create an object to hold results
            FiltersFacets   filtersFacets   = new FiltersFacets();
            Highlights      highlights      = new Highlights();
            ExtraParameters extraParameters = new ExtraParameters();

            SolrQueryResults <Movie> solrResults;
            QueryResponse            queryResponse = new QueryResponse
            {
                //Echo back the original query
                OriginalQuery = query
            };

            //Get a connection
            ISolrOperations <Movie> solr         = connection.GetSolrInstance();
            QueryOptions            queryOptions = new QueryOptions
            {
                Rows          = query.Rows,
                StartOrCursor = new StartOrCursor.Start(query.Start),
                FilterQueries = filtersFacets.BuildFilterQueries(query),
                Facet         = filtersFacets.BuildFacets(),
                Highlight     = highlights.BuildHighlightParameters(),
                ExtraParams   = extraParameters.BuildExtraParameters()
            };

            //Execute the query
            ISolrQuery solrQuery = new SolrQuery(query.Query);

            solrResults = solr.Query(solrQuery, queryOptions);

            //Set response
            ResponseExtraction extractResponse = new ResponseExtraction();

            extractResponse.SetHeader(queryResponse, solrResults);
            extractResponse.SetBody(queryResponse, solrResults);
            extractResponse.SetSpellcheck(queryResponse, solrResults);
            extractResponse.SetFacets(queryResponse, solrResults);

            //Return response;
            return(queryResponse);
        }
        public async Task <IActionResult> Page(MovieQuery movieQuery)
        {
            PagedListModel <MovieViewModel> pagedListModel = new PagedListModel <MovieViewModel>();

            var movies = from m in _context.Movie
                         select m;


            if (!string.IsNullOrEmpty(movieQuery.searchString))
            {
                movies = movies.Where(s => s.Title.Contains(movieQuery.searchString));
            }

            if (!string.IsNullOrEmpty(movieQuery.movieGenre))
            {
                movies = movies.Where(x => x.Genre == movieQuery.movieGenre);
            }

            // 排序
            if (!string.IsNullOrWhiteSpace(movieQuery.OrderType) && !string.IsNullOrWhiteSpace(movieQuery.OrderName))
            {
                IQueryable <Movie> orderByResult =
                    movieQuery.OrderType.ToLower() == "desc" ?
                    movies.ColumnOrderByDescending(movieQuery.OrderName) : movies.ColumnOrdersBy(movieQuery.OrderName);

                pagedListModel.Total = orderByResult.Count(); // 查詢資料總數
                pagedListModel.Items = orderByResult.ModelListConvert <MovieViewModel>()
                                       .ToPagedList(movieQuery.Page < 1 ? 1 : movieQuery.Page, movieQuery.PageSize);
            }
            else
            {
                pagedListModel.Total = movies.Count(); // 查詢資料總數
                pagedListModel.Items = movies.ModelListConvert <MovieViewModel>()
                                       .ToPagedList(movieQuery.Page < 1 ? 1 : movieQuery.Page, movieQuery.PageSize);
            }


            // 重新指定排序順序
            pagedListModel.OrderType = movieQuery.OrderType == "Asc" ? "Asc" : "Desc";

            return(View("~/Views/Movies/_PagePartialView.cshtml", pagedListModel));
        }
        /// <summary>
        /// Get the movie database.
        /// </summary>
        /// <param name="search">search criteria object</param>
        /// <returns>Page List</returns>
        public ListPageDto <MovieDto> Get(MovieQuery search)
        {
            search = search ?? new MovieQuery();

            var movies = this.dataProvider.GetMovies().Select(m => Mapper.Map <MoviesLibrary.MovieData, Dto.MovieDto>(m)).ToList();

            if (search.SearchCriteria != null)
            {
                movies = ApplyFilter(movies, search.SearchCriteria);
            }

            if (search.SortField != null)
            {
                movies = ApplySort(movies, search.SortField);
            }

            var listPage = ApplyPaging(movies, search.Paging);

            return(listPage);
        }
        public void TestInitialize()
        {
            List <Projection> projections = new List <Projection>();

            _movie = new Movie
            {
                Id          = Guid.NewGuid(),
                Current     = true,
                HasOscar    = true,
                Rating      = 7,
                Title       = "Smekerski film",
                Year        = 2021,
                Projections = projections
            };

            _movieDomainModel = new MovieDomainModel
            {
                Id       = _movie.Id,
                Current  = _movie.Current,
                HasOscar = _movie.HasOscar,
                Rating   = _movie.Rating ?? 0,
                Title    = _movie.Title,
                Year     = _movie.Year
            };

            List <Movie> movieModelsList = new List <Movie>();

            movieModelsList.Add(_movie);
            IEnumerable <Movie>         movies       = movieModelsList;
            Task <IEnumerable <Movie> > responseTask = Task.FromResult(movies);

            query = new MovieQuery
            {
                HasOscar = null
            };
            _mockMovieRepository      = new Mock <IMoviesRepository>();
            _mockProjectionRepository = new Mock <IProjectionsRepository>();
            _mockMovieRepository.Setup(x => x.GetCurrentMovies()).Returns(movieModelsList);
            _mockMovieRepository.Setup(x => x.Insert(It.IsAny <Movie>())).Returns(_movie);
            _mockMovieRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(_movie);
        }