Exemplo n.º 1
0
        public async Task <List <ChannelVm> > FindChannelsByStringQueryAsync(string searchQuery, long?navigationId, bool?direction = true)
        {
            ExpressionsHelper helper = new ExpressionsHelper();
            var searchExpression     = helper.GetChannelExpression(searchQuery);

            using (MessengerDbContext context = contextFactory.Create())
            {
                var query = context.Channels
                            .AsNoTracking()
                            .Where(opt => !opt.Deleted)
                            .Where(searchExpression);
                if (direction.GetValueOrDefault())
                {
                    query = query.OrderBy(opt => opt.ChannelId)
                            .Where(opt => opt.ChannelId > navigationId.GetValueOrDefault());
                }
                else
                {
                    query = query.OrderByDescending(opt => opt.ChannelId)
                            .Where(opt => opt.ChannelId < navigationId.GetValueOrDefault());
                }
                var channels = await query.ToListAsync().ConfigureAwait(false);

                return(ChannelConverter.GetChannels(channels));
            }
        }