Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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}.");
            }
        }