예제 #1
0
        public List <Model.Movie> Get(Model.Requests.MovieSearchRequest request)
        {
            var query = _context.Movies.AsQueryable();

            if (!string.IsNullOrWhiteSpace(request.Title))
            {
                query = query.Where(m => m.Title.ToLower().StartsWith(request.Title.ToLower()));
            }
            if (!string.IsNullOrWhiteSpace(request.Genre))
            {
                query = query.Where(m => m.Genre.ToLower().StartsWith(request.Genre.ToLower()));
            }
            if (request.Year >= 0)
            {
                query = query.Where(m => m.Year >= request.Year);
            }
            if (request.Rating >= 0)
            {
                query = query.Where(m => m.Rating >= request.Rating);
            }
            if (!string.IsNullOrWhiteSpace(request.Standalone) && request.Standalone == "true")
            {
                query = query.Where(m => m.Standalone);
            }
            if (!string.IsNullOrWhiteSpace(request.Standalone) && request.Standalone == "false")
            {
                query = query.Where(m => !m.Standalone);
            }

            return(_mapper.Map <List <Model.Movie> >(query.ToList()));
        }
예제 #2
0
        private async void searchBtn_Click(object sender, EventArgs e)
        {
            var messageBox = new CustomMessageBox();

            if (!string.IsNullOrWhiteSpace(RatingSearch.Text) && !decimal.TryParse(RatingSearch.Text, out decimal n))
            {
                messageBox.Show("Enter a valid rating (0-10)!", "error");
                return;
            }

            decimal rating = (!string.IsNullOrWhiteSpace(RatingSearch.Text)) ? decimal.Parse(RatingSearch.Text) : (0);

            if (rating < 0 || rating > 10)
            {
                messageBox.Show("Enter a valid rating (0-10)!", "error");
                return;
            }

            string standalone = "";

            if (StandaloneCB.Checked)
            {
                standalone = "true";
            }
            else
            {
                standalone = "false";
            }

            var search = new Model.Requests.MovieSearchRequest()
            {
                Rating     = rating,
                Standalone = standalone,
                Title      = Movie.Text,
                Year       = int.Parse(YearSearch.Value.ToString()),
                Genre      = GenreBox.Text
            };

            var list = await _apiService.Get <List <Model.Movie> >(search);

            list.Sort((a, b) => a.Title.CompareTo(b.Title));
            dgvMovies.AutoGenerateColumns = false;
            dgvMovies.DataSource          = list;
        }
예제 #3
0
        public async Task ShowMovies()
        {
            ShowFilters = "True";

            Model.Requests.MovieSearchRequest request = new Model.Requests.MovieSearchRequest();
            if (Genre != null)
            {
                request.Genre = Genre;
                if (request.Genre == "All")
                {
                    request.Genre = "";
                }
            }

            request.Rating = Rating;


            var movies = await _moviesApi.Get <List <Model.Movie> >(request);

            movies.RemoveAll(m => !m.Standalone);
            movies.Sort((a, b) => a.Title.CompareTo(b.Title));

            Movies.Clear();
            foreach (var movie in movies)
            {
                Movies.Add(movie);
            }
            if (Genres.Count == 0)
            {
                var list = new List <string>();
                foreach (var movie in movies)
                {
                    list.Add(movie.Genre);
                }
                list = list.Distinct().ToList();
                list.Sort();
                list.Insert(0, "All");
                foreach (var genre in list)
                {
                    Genres.Add(genre);
                }
            }
        }
예제 #4
0
        public async Task OnSearch()
        {
            if (Search != null)
            {
                Genre  = "All";
                Rating = 0;
                Model.Requests.MovieSearchRequest request = new Model.Requests.MovieSearchRequest()
                {
                    Title = Search
                };
                var movies = await _moviesApi.Get <List <Model.Movie> >(request);

                Movies.Clear();
                movies.Sort((a, b) => a.Title.CompareTo(b.Title));
                foreach (var movie in movies)
                {
                    Movies.Add(movie);
                }
            }
        }
예제 #5
0
 public ActionResult <List <Model.Movie> > Get([FromQuery] Model.Requests.MovieSearchRequest request)
 {
     return(_service.Get(request));
 }