/// <summary>
        ///     Gets the AssignEssentialOilEffectViewModel.
        /// </summary>
        /// <author>Anna Krebs</author>
        /// <param name="id"></param>
        /// <returns></returns>
        private async Task <AssignEssentialOilEffectViewModel> GetEssentialOilEffectViewModel(string id)
        {
            var essentialOil = await _essentialOilService.GetByIdAsync(id);

            if (essentialOil == null)
            {
                Log.Error($"An unexpected error occurred while getting id. No entity with id {id} could be found.");
                throw new ArgumentNullException(string.Format(Resources.Resources.Error_NoEntityWithIdFound, id));
            }

            // Get values from database.
            var effects = await _effectService.GetAllAsync(new EffectFilter());

            var categories = await _categoryService.GetAllAsync(new CategoryFilter());

            var essentialOilEffects =
                await _essentialOilEffectService.GetAllAsync(new EssentialOilEffectFilter { EssentialOilId = id });

            IList <AssignValueViewModel> assignValueViewModels = new List <AssignValueViewModel>();

            // Create list of effects for view.
            foreach (var effect in effects)
            {
                var assignValueViewModel = new AssignValueViewModel(null, effect, null);

                foreach (var essentialOilEffect in essentialOilEffects)
                {
                    // Map values from database to model.
                    if (assignValueViewModel.AssignedValueId == essentialOilEffect.EffectId)
                    {
                        assignValueViewModel.EffectDegree = essentialOilEffect.EffectDegree;
                    }
                }

                assignValueViewModels.Add(assignValueViewModel);
            }

            var model = new AssignEssentialOilEffectViewModel(essentialOil, null, assignValueViewModels, categories);

            Log.Info($"Get AssignEssentialOilEffectViewModel for essential oil with id {id}");
            return(model);
        }
        /// <summary>
        ///     Gets the AssignMoleculeViewModel.
        /// </summary>
        /// <author>Anna Krebs</author>
        /// <param name="id"></param>
        /// <returns></returns>
        private async Task <AssignMoleculeViewModel> GetAssignMoleculeViewModel(string id)
        {
            var essentialOil = await _essentialOilService.GetByIdAsync(id);

            if (essentialOil == null)
            {
                Log.Error($"An unexpected error occurred while getting id. No entity with id {id} could be found.");
                throw new ArgumentNullException(string.Format(Resources.Resources.Error_NoEntityWithIdFound, id));
            }

            // Get values from database.
            var molecules = await _moleculeService.GetAllAsync(new MoleculeFilter());

            var substances = await _substanceService.GetAllAsync(new SubstanceFilter());

            var essentialOilMolecules =
                await _essentialOilMoleculeService.GetAllAsync(new EssentialOilMoleculeFilter { EssentialOilId = id });

            IList <AssignValueViewModel> assignValueViewModels = new List <AssignValueViewModel>();

            // Create list of molecules for view.
            foreach (var molecule in molecules)
            {
                var assignValueViewModel = new AssignValueViewModel(molecule, null, null);

                foreach (var essentialOilMolecule in essentialOilMolecules)
                {
                    // Map values from database to model.
                    if (assignValueViewModel.AssignedValueId == essentialOilMolecule.MoleculeId)
                    {
                        assignValueViewModel.MoleculePercentage = essentialOilMolecule.MoleculePercentage;
                    }
                }

                assignValueViewModels.Add(assignValueViewModel);
            }

            var model = new AssignMoleculeViewModel(essentialOil, null, assignValueViewModels, substances);

            Log.Info($"Get AssignMoleculeViewModel for essential oil with id {id}");
            return(model);
        }
        /// <summary>
        ///     Inserts all assigned molecules for essential oil in database.
        /// </summary>
        /// <author>Anna Krebs</author>
        /// <param name="model"></param>
        /// <param name="assignValueViewModel"></param>
        /// <returns></returns>
        private async Task <ValidationResultList> AssignMoleculeToEssentialOil(AssignMoleculeViewModel model,
                                                                               AssignValueViewModel assignValueViewModel)
        {
            var validationResult = new ValidationResultList();

            // Only assign, if MoleculePercentage was assigned.
            if (assignValueViewModel.MoleculePercentage.HasValue && assignValueViewModel.MoleculePercentage.Value > 0)
            {
                var essentialOilMolecule = new EssentialOilMolecule();

                // Map view model to entity.
                essentialOilMolecule.EssentialOilId     = model.EssentialOilId;
                essentialOilMolecule.MoleculeId         = assignValueViewModel.AssignedValueId;
                essentialOilMolecule.MoleculePercentage = assignValueViewModel.MoleculePercentage.Value;

                validationResult = await _essentialOilMoleculeService.InsertAsync(essentialOilMolecule);

                Log.Info(
                    $"Assign molecule with id {assignValueViewModel.AssignedValueId} to essential oil with id {model.EssentialOilId}");
            }

            return(validationResult);
        }
        /// <summary>
        ///     Inserts all assigned effects for essential oil in database.
        /// </summary>
        /// <author>Anna Krebs</author>
        /// <param name="model"></param>
        /// <param name="assignValueViewModel"></param>
        /// <returns></returns>
        private async Task <ValidationResultList> AssignEffectToEssentialOil(AssignEssentialOilEffectViewModel model,
                                                                             AssignValueViewModel assignValueViewModel)
        {
            var validationResult = new ValidationResultList();

            // Only assign, if EffectDegree was assigned.
            if (assignValueViewModel.EffectDegree > 0)
            {
                var essentialOilEffect = new EssentialOilEffect();

                // Map view model to entity.
                essentialOilEffect.EssentialOilId = model.EssentialOilId;
                essentialOilEffect.EffectId       = assignValueViewModel.AssignedValueId;
                essentialOilEffect.EffectDegree   = assignValueViewModel.EffectDegree;

                validationResult = await _essentialOilEffectService.InsertAsync(essentialOilEffect);

                Log.Info(
                    $"Assign effect with id {assignValueViewModel.AssignedValueId} to essential oil with id {model.EssentialOilId}");
            }

            return(validationResult);
        }
Beispiel #5
0
        /// <summary>
        ///     Inserts all assigned molecules for effect in database.
        /// </summary>
        /// <author>Anna Krebs</author>
        /// <param name="model"></param>
        /// <param name="assignValueViewModel"></param>
        /// <returns></returns>
        private async Task <ValidationResultList> AssignMoleculeToEffect(AssignMoleculeViewModel model,
                                                                         AssignValueViewModel assignValueViewModel)
        {
            var validationResult = new ValidationResultList();

            // Only assign, if EffectDegree was assigned.
            if (assignValueViewModel.EffectDegree > 0)
            {
                var effectMolecule = new EffectMolecule();

                // Map view model to entity.
                effectMolecule.EffectId     = model.EffectId;
                effectMolecule.MoleculeId   = assignValueViewModel.AssignedValueId;
                effectMolecule.EffectDegree = assignValueViewModel.EffectDegree;

                validationResult = await _effectMoleculeService.InsertAsync(effectMolecule);

                Log.Info(
                    $"Assign molecule with id {assignValueViewModel.AssignedValueId} to effect with id {model.EffectId}");
            }

            return(validationResult);
        }