/// <inheritdoc /> public override Expression <Func <Event, bool> > GetFilterExpression() { var parameterReplacer = new ParameterReplacer(); var filterExpression = _specification.GetFilterExpression(); var parameter = Expression.Parameter(typeof(Event)); var result = Expression.Lambda <Func <Event, bool> >( Expression.Not( parameterReplacer.ReplaceParameterWith(parameter, filterExpression.Body) ), parameter); return(result); }
public async Task <IReadOnlyList <Event <string, string> > > GetEventsAsync(EventsSpecification specification = null) { IQueryable <Event> query = _db.Events; if (specification != null) { query = query.Where(specification.GetFilterExpression()); } var eventsInfo = await query.ToArrayAsync(); var events = new List <Event <string, string> >(eventsInfo.Length); if (eventsInfo.Length == 0) { return(events); } var placesRepository = new PlacesRepository(_db); var places = await placesRepository.GetPlacesAsync(); foreach (var eventInfo in eventsInfo) { var startDate = GetStartDate(eventInfo); var endDate = GetEndDate(eventInfo); var @event = new Event <string, string>(eventInfo.Content, startDate, endDate) { Id = eventInfo.Id }; if (eventInfo.PlaceId != null) { @event.Place = places.GetNodeById(eventInfo.PlaceId); } events.Add(@event); } return(events); }