/// <summary> /// Updates keywords of given applicant /// </summary> /// <param name="applicantId"></param> /// <param name="newKeywords"></param> /// <returns></returns> public async Task <bool> EditApplicantsKeywordsAsync(Guid applicantId, IList <bool> newKeywords) { using (var uow = UnitOfWorkProvider.Create()) { var filter = new KeywordApplicantFilterDto { ApplicantId = applicantId }; var currentKeywords = await keywordsApplicantService.ListKeywordsApplicantAsync(filter); foreach (KeywordApplicantDto keyword in currentKeywords.Items) { keywordsApplicantService.Delete(keyword.Id); } for (int i = 0; i < newKeywords.Count; i++) { if (newKeywords[i]) { var keywordDto = new KeywordApplicantDto { ApplicantId = applicantId, Keyword = (Keyword)i }; keywordsApplicantService.Create(keywordDto); } } await uow.Commit(); return(true); } }
private static SimplePredicate FilterKeywordApplicantApplicantId(KeywordApplicantFilterDto filter) { if (filter.ApplicantId.Equals(Guid.Empty)) { return(null); } return(new SimplePredicate(nameof(KeywordsApplicant.ApplicantId), ValueComparingOperator.Equal, filter.ApplicantId)); }
private static CompositePredicate FilterKeywordApplicantKeywords(KeywordApplicantFilterDto filter) { if (filter.KeywordNumbers == null || !filter.KeywordNumbers.Any()) { return(null); } var keywordsPredicates = new List <IPredicate>(filter.KeywordNumbers .Select(keywordNumber => new SimplePredicate( nameof(KeywordsApplicant.KeywordNumber), ValueComparingOperator.Equal, keywordNumber))); return(new CompositePredicate(keywordsPredicates, LogicalOperator.OR)); }
protected override IQuery <KeywordsApplicant> ApplyWhereClause(IQuery <KeywordsApplicant> query, KeywordApplicantFilterDto filter) { var definedPredicates = new List <IPredicate>(); AddIfDefined(FilterKeywordApplicantApplicantId(filter), definedPredicates); AddIfDefined(FilterKeywordApplicantKeywords(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)); }