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));
        }
示例#3
0
        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);
            }
        }