/// <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); }