/// <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); }
/// <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); }