示例#1
0
 public async Task <List <EventEntity> > SearchForEvent(RepositoryEventSearchFilter repositoryFilter)
 {
     using (var context = _dbContextFactory.CreateDbContext())
     {
         var query = context.EventEntities.Include(x => x.EventTypes).AsNoTracking();
         if (!string.IsNullOrEmpty(repositoryFilter.Query))
         {
             query = query.Where(x => x.Name.Contains(repositoryFilter.Query) || x.Description.Contains(repositoryFilter.Query));
         }
         if (repositoryFilter.MinAge.HasValue)
         {
             query = query.Where(x => x.MinAge >= repositoryFilter.MinAge);
         }
         if (repositoryFilter.MaxAge.HasValue)
         {
             query = query.Where(x => x.MaxAge <= repositoryFilter.MaxAge);
         }
         if (repositoryFilter.StartTime.HasValue)
         {
             query = query.Where(x => x.StartTime.HasValue && x.StartTime == repositoryFilter.StartTime);
         }
         if (repositoryFilter.EndTime.HasValue)
         {
             query = query.Where(x => x.EndTime.HasValue && x.EndTime == repositoryFilter.EndTime);
         }
         if (repositoryFilter.Type.HasValue)
         {
             query = query.Where(x => x.EventTypes.Any(x => x.EventTypeId == (long)repositoryFilter.Type));
         }
         if (repositoryFilter.Status.HasValue)
         {
             query = query.Where(x => x.EventStatusId == (long)repositoryFilter.Status);
         }
         if (repositoryFilter.IsOpenForInvitations.HasValue)
         {
             query = query.Where(x => x.IsOpenForInvitations == repositoryFilter.IsOpenForInvitations);
         }
         if (repositoryFilter.CityId.HasValue)
         {
             query = query.Where(x => (x.CityId == repositoryFilter.CityId) ||
                                 (!repositoryFilter.IsOnline.HasValue && x.IsOnline.Value));
         }
         if (repositoryFilter.IsOnline.HasValue)
         {
             query = query.Where(x => x.IsOnline == repositoryFilter.IsOnline);
         }
         return(await query.Include(x => x.EventImageContentEntities).Include(x => x.City).ToListAsync());
     }
 }
示例#2
0
        public async Task SearchForEventTests(RepositoryEventSearchFilter repositoryFilter)
        {
            var result = await _eventRepository.SearchForEvent(repositoryFilter);

            Assert.AreEqual(1, result.Count);
        }