/// <summary> /// Gets all the essential oils for specific searched effect. /// </summary> /// <author>Anna Krebs</author> /// <param name="searchedEffect"></param> /// <returns></returns> private async Task <IList <EssentialOilEffect> > GetEssentialOilsForSearchedEffectAsync( SearchEffectItem searchedEffect) { Log.Info( $"Searching for effect with search text {searchedEffect.SearchEffectText} and discomfort value {searchedEffect.DiscomfortValue}"); // Get effect by search text. var effects = await _effectRepository.GetByFilterAsync(new EffectFilter { Name = searchedEffect.SearchEffectText }); // Return empty list if no effect was found. if (effects.Count == 0) { return(new List <EssentialOilEffect>()); } var effect = effects.SingleOrDefault(); if (effect == null) { Log.Error($"No effect for search text {searchedEffect.SearchEffectText} was found."); throw new ArgumentNullException( $"{Resources.Resources.Error_UnexpectedError} {string.Format(Resources.Resources.Error_NoEffectFoundForSearchText, searchedEffect.SearchEffectText)}"); } Log.Info($"Effect {effect.Name} with id {effect.Id} was found for searched text."); // Get essential oils that are assigned to searched effect. var essentialOilEffects = await _essentialOilEffectRepository.GetByFilterAsync( new EssentialOilEffectFilter { EffectId = effect.Id }); return(essentialOilEffects); }
/// <summary> /// Add every essential oil to list, that is assigned for specific search effect. /// Calculate the EffectDegreeDiscomfortValue /// </summary> /// <author>Anna Krebs</author> /// <param name="searchEssentialOilItems"></param> /// <param name="essentialOilEffects"></param> /// <param name="searchedEffect"></param> /// <returns></returns> private async Task CreateSearchEssentialOilItemsListAsync(List <SearchEssentialOilItem> searchEssentialOilItems, IList <EssentialOilEffect> essentialOilEffects, SearchEffectItem searchedEffect) { foreach (var essentialOilEffect in essentialOilEffects) { // Get the essential oils according to the effect they are assigned to. var essentialOil = await Repository.GetByIdAsync(essentialOilEffect.EssentialOilId); // Create search essential oil item for each assigned essential oil that is assigned to a specific effect. var searchEssentialOilItem = new SearchEssentialOilItem(); searchEssentialOilItem.EssentialOil = essentialOil; searchEssentialOilItem.EssentialOilId = essentialOil.Id; searchEssentialOilItem.SearchEffectTextsInEssentialOil = searchedEffect.SearchEffectText; // Get the product of "Wirksamkeit" of effect and "Beschwerdeausmass" of each searched effect. searchEssentialOilItem.EffectDegreeDiscomfortValue = essentialOilEffect.EffectDegree * searchedEffect.DiscomfortValue; // Add the essential oil to the list for the specific effect. searchEssentialOilItems.Add(searchEssentialOilItem); Log.Info( $"Essential oil {searchEssentialOilItem.EssentialOil.Name} with id {searchEssentialOilItem.EssentialOilId} was found for effect with id {essentialOilEffect.EffectId} and effect degree {essentialOilEffect.EffectDegree}."); } }