private Expression <Func <RoomEntity, bool> > GetExpression(IRoomFilter filter) { var predicate = PredicateBuilder.New <RoomEntity>(); predicate = filter.IsDeleted.HasValue ? predicate.And(p => p.IsDeleted == filter.IsDeleted.Value) : predicate.And(p => p.IsDeleted != true); if (filter.MinCapacity.HasValue) { predicate = predicate.And(p => p.Capacity >= filter.MinCapacity); } if (filter.HasTvOrProjector.HasValue) { predicate = predicate.And(p => p.HasTVOrProjector == filter.HasTvOrProjector); } if (!string.IsNullOrWhiteSpace(filter.Name)) { predicate = predicate.And(p => p.Name.ToLower().Contains(filter.Name.ToLower())); } if (!string.IsNullOrEmpty(filter.Resources)) { predicate = predicate.And(p => p.Resources.ToLower().Contains(filter.Resources.ToLower())); } if (filter.VenueId.HasValue) { predicate = predicate.And(p => p.VenueId == filter.VenueId); } return(predicate); }
public RoomSpecification(IRoomFilter filter) : base(filter) { ApplyCriteria(GetExpression(filter)); }