Beispiel #1
0
        public async Task GetMoviesAsync_OnValidArgument_ReturnSuccessResult()
        {
            var movies = new List <MovieSearchResponse> {
                new MovieSearchResponse {
                    MovieId = 1,
                    ShowId  = 1
                }
            };

            var data = new MovieSearchRequest
            {
                City = "Bengaluru"
            };

            movieServiceMock.Setup(x => x.GetMoviesAsync(data))
            .ReturnsAsync((movies, true, null));

            // Act
            var result = await controllerUnderTest.GetMoviesAsync(data);

            // Assert
            var createdResult = Assert.IsType <OkObjectResult>(result);

            Assert.Same(movies, createdResult.Value);
        }
Beispiel #2
0
        public async Task <IPagedList <MovieDto> > GetPagedAsync(MovieSearchRequest search)
        {
            var list = await _movieRepo.GetPagedAsync(search, search.SearchTerm, search.Year, search.Duration);

            var dtoList = PagedList <MovieDto> .Map <Movie>(_mapper, list);

            return(dtoList);
        }
Beispiel #3
0
        private async void frmMoviesList_Load(object sender, EventArgs e)
        {
            this.grdMoviesList.DoubleBuffered(true);
            MovieSearchRequest searchRequest = new MovieSearchRequest();

            searchRequest = ApplyDefaultSearchValues(searchRequest) as MovieSearchRequest;
            await LoadMovies(searchRequest);
        }
Beispiel #4
0
        private async Task LoadMovies(MovieSearchRequest searchRequest)
        {
            var result = await _moviesApi.Get <PagedList <MovieDto> >(searchRequest);

            grdMoviesList.AutoGenerateColumns = false;
            grdMoviesList.DataSource          = result.Data;
            pgnMoviesList.PageIndex           = result.PageIndex;
            pgnMoviesList.TotalPages          = result.TotalPages;
        }
Beispiel #5
0
        private async void grdMoviesList_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            DataGridViewColumn clickedColumn = grdMoviesList.Columns[e.ColumnIndex];

            ChangeSorting(clickedColumn.Name);

            MovieSearchRequest searchRequest = GetSearchRequest();

            searchRequest.SortColumn = CurrentSortPropertyName;
            searchRequest.SortOrder  = CurrentSortOrder;

            await LoadMovies(searchRequest);
        }
Beispiel #6
0
 public IEnumerable <MovieResponse> SearchMovies(MovieSearchRequest movieSearchRequest)
 {
     return(_movieRepository.GetMovies()
            .Where(m => (movieSearchRequest.Genres == null || !movieSearchRequest.Genres.Any() ||
                         m.MovieGenres.Any(g => movieSearchRequest.Genres.Contains(g.Genre.Name))) &&
                   (!movieSearchRequest.YearOfRelease.HasValue ||
                    m.ReleaseDate.Year == movieSearchRequest.YearOfRelease) &&
                   (string.IsNullOrEmpty(movieSearchRequest.Title) || m.Title.Contains(
                        movieSearchRequest.Title,
                        StringComparison.InvariantCultureIgnoreCase)))
            .Select(m => m.ToMovieResponse())
            .ToList());
 }
        public async Task <IActionResult> GetMoviesAsync([FromBody] MovieSearchRequest request)
        {
            var response = await _movieService.GetMoviesAsync(request);

            if (!response.IsSuccess)
            {
                return(BadRequest(
                           new ErrorResponse
                {
                    Errors = new[] { response.ErrorMessage ?? EMultiplexConstants.ErrorOccured }
                }));
            }

            return(Ok(response.Result));
        }
Beispiel #8
0
        public IActionResult GetMovies([FromQuery] MovieSearchRequest searchRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var movies = _movieService.SearchMovies(searchRequest);

            if (movies?.Any() != true)
            {
                return(NotFound("No movies found for search criteria"));
            }

            return(Ok(movies));
        }
Beispiel #9
0
        private MovieSearchRequest GetSearchRequest()
        {
            MovieSearchRequest searchRequest = new MovieSearchRequest();

            searchRequest            = ApplyDefaultSearchValues(searchRequest) as MovieSearchRequest;
            searchRequest.PageIndex  = pgnMoviesList.PageIndex;
            searchRequest.SearchTerm = txtSearchBar.Text;

            if (int.TryParse(txtSearchDuration.Text, out int searchDuration))
            {
                searchRequest.Duration = searchDuration;
            }

            if (int.TryParse(txtSearchYear.Text, out int searchYear))
            {
                searchRequest.Year = searchYear;
            }

            return(searchRequest);
        }
Beispiel #10
0
        public async Task GetMoviesAsync_OnInvalidArgument_ReturnBadResult()
        {
            string errorMessage = "Error Occured";
            var    erroResult   = new ErrorResponse {
                Errors = new[] { errorMessage }
            };
            MovieSearchRequest data = null;

            movieServiceMock.Setup(x => x.GetMoviesAsync(data))
            .ReturnsAsync((null, false, errorMessage));

            // Act
            var result = await controllerUnderTest.GetMoviesAsync(data);

            // Assert
            var createdResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal(400, createdResult.StatusCode);
            var error = (createdResult.Value as ErrorResponse).Errors.FirstOrDefault();

            Assert.Equal(errorMessage, error);
        }
        public IActionResult GetMoviesList([FromQuery] MovieSearchRequest request)
        {
            var movies = Service.GetMoviesList(request);

            return(Ok(movies));
        }
        public PaginatedData <SimpleMovie> GetMoviesList(MovieSearchRequest request)
        {
            var query = MoviesRepository.GetMovies(request.Name, request.GenreIds, request.Country, request.LengthFrom, request.LengthTo);

            return(PaginatedData <SimpleMovie> .Create(query, request, entityList => Mapper.Map <List <SimpleMovie> >(entityList)));
        }
Beispiel #13
0
        private async void pgnMoviesList_PageChanged(object sender, EventArgs e)
        {
            MovieSearchRequest searchRequest = GetSearchRequest();

            await LoadMovies(searchRequest);
        }
Beispiel #14
0
        private async void txtSearch_TextChanged(object sender, EventArgs e)
        {
            MovieSearchRequest searchRequest = GetSearchRequest();

            await LoadMovies(searchRequest);
        }
        public async Task <(IEnumerable <MovieSearchResponse> Result, bool IsSuccess, string ErrorMessage)> GetMoviesAsync(MovieSearchRequest request)
        {
            Func <string, string, bool> predicate = (x, y) =>
            {
                if (string.IsNullOrEmpty(y))
                {
                    return(true);
                }
                return(x.Equals(y, StringComparison.OrdinalIgnoreCase));
            };

            var movies = await(from m in Context.Movies
                               join g in Context.Genres on m.GenreId equals g.Id
                               join l in Context.Languages on m.LanguageId equals l.Id
                               join s in Context.Shows on m.Id equals s.MovieId
                               join ml in Context.Multiplexes on s.MultiplexId equals ml.Id
                               join c in Context.Cities on ml.CityId equals c.Id
                               where predicate(g.Name, request.Genre) && predicate(l.Name, request.Language) && predicate(c.Name, request.City)
                               select new
            {
                MovieId       = m.Id,
                MovieName     = m.Name,
                Genre         = g.Name,
                Language      = l.Name,
                ShowDate      = s.ShowDate,
                PricePerSeat  = s.PricePerSeat,
                MultiplexId   = s.MultiplexId,
                MultiplexName = ml.Name,
                City          = c.Name,
                ShowId        = s.Id
            }).Distinct().Select(x => new MovieSearchResponse {
                MovieId       = x.MovieId,
                MovieName     = x.MovieName,
                Genre         = x.Genre,
                Language      = x.Language,
                ShowDate      = x.ShowDate,
                PricePerSeat  = x.PricePerSeat,
                MultiplexId   = x.MultiplexId,
                MultiplexName = x.MultiplexName,
                City          = x.City,
                ShowId        = x.ShowId
            }).ToListAsync();

            return(movies, true, null);
        }
 public async Task <(IEnumerable <MovieSearchResponse> Result, bool IsSuccess, string ErrorMessage)> GetMoviesAsync(MovieSearchRequest request)
 {
     return(await _unitOfWork.MovieRepository.GetMoviesAsync(request));
 }