private IPredicate FilterByIdentificationNumber(PatientFilterDto filter) { if (string.IsNullOrWhiteSpace(filter.IdentificationNumber)) { return(null); } return(new SimplePredicate(nameof(Patient.IdentificationNumber), ValueComparingOperator.Equal, filter.IdentificationNumber)); }
private IPredicate FilterByUsername(PatientFilterDto filter) { if (string.IsNullOrWhiteSpace(filter.Username)) { return(null); } return(new SimplePredicate(nameof(Patient.Username), ValueComparingOperator.Equal, filter.Username)); }
protected override IQuery <Patient> ApplyWhereClause(IQuery <Patient> query, PatientFilterDto filter) { var definedPredicates = new List <IPredicate>(); AddIfDefined(FilterByUsername(filter), definedPredicates); AddIfDefined(FilterByName(filter), definedPredicates); AddIfDefined(FilterByIdentificationNumber(filter), definedPredicates); if (definedPredicates.Count == 0) { return(query); } if (definedPredicates.Count == 1) { return(query.Where(definedPredicates.First())); } var wherePredicate = new CompositePredicate(definedPredicates); return(query.Where(wherePredicate)); }
private IPredicate FilterByName(PatientFilterDto filter) { if (string.IsNullOrWhiteSpace(filter.FullName)) { return(null); } char[] delim = { ' ' }; var trimmedName = filter.FullName.Trim(); ; string[] name = filter.FullName.Split(delim, 2); if (name.Length != 2) { return(null); } var predicates = new List <IPredicate> { new SimplePredicate(nameof(Patient.Name), ValueComparingOperator.Equal, name[0]), new SimplePredicate(nameof(Patient.Surname), ValueComparingOperator.Equal, name[1]) }; return(new CompositePredicate(predicates)); }