private static SimplePredicate FilterApplicantName(ApplicantFilterDto filter) { if (string.IsNullOrWhiteSpace(filter.LastName)) { return(null); } return(new SimplePredicate(nameof(Applicant.LastName), ValueComparingOperator.Equal, filter.LastName)); }
private static CompositePredicate FilterApplicantIds(ApplicantFilterDto filter) { if (filter.ApplicantIds == null) { return(null); } if (!filter.ApplicantIds.Any()) { filter.ApplicantIds = new[] { Guid.Empty }; } var idPredicates = new List <IPredicate>(filter.ApplicantIds .Select(id => new SimplePredicate( nameof(Applicant.Id), ValueComparingOperator.Equal, id))); return(new CompositePredicate(idPredicates, LogicalOperator.OR)); }
protected override IQuery <Applicant> ApplyWhereClause(IQuery <Applicant> query, ApplicantFilterDto filter) { List <IPredicate> predicates = new List <IPredicate>(); if (!string.IsNullOrWhiteSpace(filter.FirstName)) { predicates.Add(new SimplePredicate(nameof(Applicant.FirstName), ValueComparingOperator.Equal, filter.FirstName)); } if (!string.IsNullOrWhiteSpace(filter.LastName)) { predicates.Add( new SimplePredicate(nameof(User.LastName), ValueComparingOperator.Equal, filter.LastName)); } if (!string.IsNullOrWhiteSpace(filter.MiddleName)) { predicates.Add(new SimplePredicate(nameof(Applicant.MiddleName), ValueComparingOperator.Equal, filter.MiddleName)); } if (!string.IsNullOrWhiteSpace(filter.Email)) { predicates.Add(new SimplePredicate(nameof(Applicant.Email), ValueComparingOperator.Equal, filter.Email)); } if (!string.IsNullOrWhiteSpace(filter.PhoneNumber)) { predicates.Add(new SimplePredicate(nameof(Applicant.PhoneNumber), ValueComparingOperator.Equal, filter.PhoneNumber)); } if (predicates.Count > 0) { return(query.Where(new CompositePredicate(predicates))); } return(query); }
protected override IQuery <Applicant> ApplyWhereClause(IQuery <Applicant> query, ApplicantFilterDto filter) { var definedPredicates = new List <IPredicate>(); AddIfDefined(FilterApplicantName(filter), definedPredicates); AddIfDefined(FilterApplicantIds(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)); }
/// <summary> /// Gets applicants according to filter and required page /// </summary> /// <param name="filter">applicants filter</param> /// <returns></returns> public async Task <QueryResultDto <ApplicantDto, ApplicantFilterDto> > GetApplicantsAsync(ApplicantFilterDto filter) { using (UnitOfWorkProvider.Create()) { if (filter.KeywordNumbers != null) { filter.ApplicantIds = await keywordsApplicantService.GetApplicantIdsByKeywordNumbersAsync(filter.KeywordNumbers); } var applicantListQueryResult = await applicantService.ListApplicantAsync(filter); return(applicantListQueryResult); } }