/// <summary> /// Updates keywords of given job offer /// </summary> /// <param name="jobOfferId"></param> /// <param name="newKeywords"></param> /// <returns></returns> public async Task <bool> EditJobOffersKeywordsAsync(Guid jobOfferId, IList <bool> newKeywords) { using (var uow = UnitOfWorkProvider.Create()) { var filter = new KeywordJobOfferFilterDto { JobOfferId = jobOfferId }; var currentKeywords = await keywordsJobOfferService.ListKeywordsJobOfferAsync(filter); foreach (KeywordJobOfferDto keyword in currentKeywords.Items) { keywordsJobOfferService.Delete(keyword.Id); } for (int i = 0; i < newKeywords.Count; i++) { if (newKeywords[i]) { var keywordDto = new KeywordJobOfferDto { JobOfferId = jobOfferId, Keyword = (Keyword)i }; keywordsJobOfferService.Create(keywordDto); } } await uow.Commit(); return(true); } }
private static SimplePredicate FilterKeywordJobOfferJobOfferId(KeywordJobOfferFilterDto filter) { if (filter.JobOfferId.Equals(Guid.Empty)) { return(null); } return(new SimplePredicate(nameof(KeywordsJobOffer.JobOfferId), ValueComparingOperator.Equal, filter.JobOfferId)); }
private static CompositePredicate FilterKeywordJobOfferKeywords(KeywordJobOfferFilterDto filter) { if (filter.KeywordNumbers == null || !filter.KeywordNumbers.Any()) { return(null); } var keywordsPredicates = new List <IPredicate>(filter.KeywordNumbers .Select(keywordNumber => new SimplePredicate( nameof(KeywordsJobOffer.KeywordNumber), ValueComparingOperator.Equal, keywordNumber))); return(new CompositePredicate(keywordsPredicates, LogicalOperator.OR)); }
protected override IQuery <KeywordsJobOffer> ApplyWhereClause(IQuery <KeywordsJobOffer> query, KeywordJobOfferFilterDto filter) { var definedPredicates = new List <IPredicate>(); AddIfDefined(FilterKeywordJobOfferJobOfferId(filter), definedPredicates); AddIfDefined(FilterKeywordJobOfferKeywords(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)); }