BusinessLogic.Logic.PlayedGames.PlayedGameRetriever.AddSearchCriteria C# (CSharp) Method

AddSearchCriteria() private static method

private static AddSearchCriteria ( PlayedGameFilter playedGameFilter, IQueryable queryable ) : IQueryable
playedGameFilter BusinessLogic.Models.PlayedGames.PlayedGameFilter
queryable IQueryable
return IQueryable
        private static IQueryable<PlayedGameSearchResult> AddSearchCriteria(PlayedGameFilter playedGameFilter, IQueryable<PlayedGameSearchResult> queryable)
        {
            if (playedGameFilter.GamingGroupId.HasValue)
            {
                queryable = queryable.Where(query => query.GamingGroupId == playedGameFilter.GamingGroupId.Value);
            }

            if (playedGameFilter.GameDefinitionId.HasValue)
            {
                queryable = queryable.Where(query => query.GameDefinitionId == playedGameFilter.GameDefinitionId.Value);
            }

            if (!string.IsNullOrEmpty(playedGameFilter.StartDateGameLastUpdated))
            {
                var startDate = ParseDateTime(playedGameFilter.StartDateGameLastUpdated);
                queryable = queryable.Where(query => query.DateLastUpdated >= startDate);
            }

            if (!string.IsNullOrEmpty(playedGameFilter.EndDateGameLastUpdated))
            {
                var endDate = ParseDateTime(playedGameFilter.EndDateGameLastUpdated);
                endDate = endDate.Date.AddDays(1).AddMilliseconds(-1);
                queryable = queryable.Where(query => query.DateLastUpdated <= endDate);
            }

            if (!string.IsNullOrEmpty(playedGameFilter.DatePlayedFrom))
            {
                var fromDate = ParseDateTime(playedGameFilter.DatePlayedFrom);
                queryable = queryable.Where(query => query.DatePlayed >= fromDate);
            }

            if (!string.IsNullOrEmpty(playedGameFilter.DatePlayedTo))
            {
                var toDate = ParseDateTime(playedGameFilter.DatePlayedTo);
                toDate = toDate.Date.AddDays(1).AddMilliseconds(-1);
                queryable = queryable.Where(query => query.DatePlayed <= toDate);
            }

            if (playedGameFilter.PlayerId.HasValue)
            {
                queryable = queryable.Where(query => query.PlayerGameResults.Any(x => x.PlayerId == playedGameFilter.PlayerId));
            }

            if (playedGameFilter.MaximumNumberOfResults.HasValue)
            {
                queryable = queryable.Take(playedGameFilter.MaximumNumberOfResults.Value);
            }

            if (!string.IsNullOrEmpty(playedGameFilter.ExclusionApplicationName))
            {
                queryable = queryable.Where(query => query.ApplicationLinkages.All(x => x.ApplicationName != playedGameFilter.ExclusionApplicationName));
            }

            if (!string.IsNullOrEmpty(playedGameFilter.InclusionApplicationName))
            {
                queryable = queryable.Where(query => query.ApplicationLinkages.Any(x => x.ApplicationName == playedGameFilter.InclusionApplicationName));

            }

            return queryable;
        }