public double CalculateOGDto(RecipeDto recipe) { var og = 0.0; try { var fermentables = recipe.Steps.OfType <MashStepDto>() .SelectMany(mashStep => mashStep.Ingredients.OfType <FermentableStepDto>()); foreach (var fermentable in fermentables) { var temp = (FermentableStepDto)fermentable; var efficency = recipe.Efficiency; //if (fermentable.PPG <= 0) //{ var esFermentable = _fermentableElasticsearch.GetSingle(temp.FermentableId); if (esFermentable != null && esFermentable.PPG > 0) { temp.PPG = esFermentable.PPG; if (esFermentable.Type.Contains("Extract") || esFermentable.Type.Contains("Sugar")) { efficency = 100; } //og += Formulas.MaltOG(fermentable.Amount, esFermentable.PPG, recipe.Efficiency, recipe.Volume); } else { var efFermentable = _fermentableRepository.GetSingleAsync(temp.FermentableId).Result; if (efFermentable.PPG != null) { temp.PPG = (int)efFermentable.PPG; if (efFermentable.Type.Contains("Extract") || efFermentable.Type.Contains("Sugar")) { efficency = 100; } } //og += Formulas.MaltOG(fermentable.Amount, (int)efFermentable.PPG, recipe.Efficiency, recipe.Volume); } //} og += Formulas.MaltOG(temp.Amount, (int)temp.PPG, efficency, recipe.Volume); } } catch (Exception exception) { _logger.LogError(exception.ToString()); throw; } return(Math.Round(1 + og / 1000, 4)); }
public double CalculateOG(Recipe recipe) { var og = 0.0; foreach (var fermentable in recipe.MashSteps.SelectMany(mashStep => mashStep.Fermentables)) { var efficency = recipe.Efficiency; //if (fermentable.PPG <= 0) //{ var esFermentable = _fermentableElasticsearch.GetSingleAsync(fermentable.FermentableId).Result; if (esFermentable != null && esFermentable.PPG > 0) { fermentable.PPG = esFermentable.PPG; if (esFermentable.Type.Contains("Extract") || esFermentable.Type.Contains("Sugar")) { efficency = 100; } //og += Formulas.MaltOG(fermentable.Amount, esFermentable.PPG, recipe.Efficiency, recipe.Volume); } else { var efFermentable = _fermentableRepository.GetSingleAsync(fermentable.FermentableId).Result; if (efFermentable != null && efFermentable.PPG != null) { fermentable.PPG = (int)efFermentable.PPG; if (efFermentable.Type.Contains("Extract") || efFermentable.Type.Contains("Sugar")) { efficency = 100; } } //og += Formulas.MaltOG(fermentable.Amount, (int)efFermentable.PPG, recipe.Efficiency, recipe.Volume); } //} og += Formulas.MaltOG(fermentable.Amount, (int)fermentable.PPG, efficency, recipe.Volume); } return(Math.Round(1 + og / 1000, 4)); }