/// <summary>
        /// filters the list of films based on the provided parameters using custom filters
        /// </summary>
        /// <param name="films"></param>
        /// <param name="parameters">contains parameters required for filtering</param>
        /// <returns></returns>
        public FilmListServiceDto Filter(List <Film> films, FilmListServiceDto parameters)
        {
            var result = new List <Film>();

            _filtersTypes.FilterByQuery(parameters.QuerySearch, films, result);
            _filtersTypes.FilterByGenre(parameters.Genres, films, result);
            _filtersTypes.FilterByCountry(parameters.Countries, films, result);

            parameters.Films = result;

            return(parameters);
        }
        /// <summary>
        /// returns list of films based on provided parameters
        /// </summary>
        /// <param name="filmListParametersDto">contains parameters required to filter/sort list of films</param>
        /// <returns></returns>
        public FilmListServiceDto GetFilms(FilmListServiceDto filmListParametersDto)
        {
            var filmsFromDb = _unitOfWork.Films.GetAll();

            if (!ListOfFilterParameters.CheckParameters(filmListParametersDto))
            {
                filmListParametersDto.MaxPageNumber = GetMaxPageNumber(filmsFromDb.Count, filmListParametersDto.PageSize);
                filmListParametersDto.Films = _pagination.PerformPagination(filmsFromDb, filmListParametersDto);

                return filmListParametersDto;
            }

            var result = _filmFiler.Filter(filmsFromDb, filmListParametersDto);
            result.MaxPageNumber = GetMaxPageNumber(result.Films.Count, filmListParametersDto.PageSize);
            result.Films = _pagination.PerformPagination(result.Films, filmListParametersDto);

            return result;
        }
 //Add additional methods to check the if statement here
 public static bool CheckParameters(FilmListServiceDto parameters)
 {
     return(CheckGenres(parameters) || CheckCountries(parameters) || CheckSearch(parameters));
 }
 private static bool CheckSearch(FilmListServiceDto parameters)
 {
     return(!string.IsNullOrWhiteSpace(parameters.QuerySearch));
 }
 private static bool CheckCountries(FilmListServiceDto parameters)
 {
     return(parameters.Countries.Any());
 }
 private static bool CheckGenres(FilmListServiceDto parameters)
 {
     return(parameters.Genres.Any());
 }
 public List <Film> PerformPagination(List <Film> films, FilmListServiceDto parameters)
 {
     films = films.Skip(parameters.PageSize * (parameters.PageNumber - 1)).Take(parameters.PageSize).ToList();
     return(films);
 }