private Expression <Func <CheckInEntity, bool> > GetExpression(ICheckInFilter filter)
        {
            var predicate = PredicateBuilder.New <CheckInEntity>();

            predicate = filter.IsDeleted.HasValue ?
                        predicate.And(p => p.IsDeleted == filter.IsDeleted.Value) :
                        predicate.And(p => p.IsDeleted != true);

            if (filter.UserId.HasValue)
            {
                predicate = predicate.And(o => o.UserId == filter.UserId);
            }
            if (filter.EventId.HasValue)
            {
                predicate = predicate.And(o => o.EventId == filter.EventId);
            }
            if (filter.CheckedInAt.HasValue)
            {
                predicate = predicate.And(o => o.CheckedInAt == filter.CheckedInAt);
            }

            return(predicate);
        }
 public CheckInSpecification(ICheckInFilter filter) : base(filter)
 {
     ApplyCriteria(GetExpression(filter));
 }