internal void ParseIngredients() { var parser = new IngredientsParser(); List <IngredientsParser.ParsedAnnotation> annotations = new List <IngredientsParser.ParsedAnnotation>(); var _parsedIngredients = parser.Parse(_currentProduct.DisplayIngredients, annotations); var translator = new IngredientLanguageNames(_repo); var nutrientTranslator = new NutrientLanguageNames(_repo); var euNumbers = new EUAdditiveLanguageNames(_repo); foreach (var parsedIngredient in _parsedIngredients.Ingredients) { Product.Ingredients.Add(new IngredientViewModel(parsedIngredient, Product)); } var additives = DetectEUNumbers(_parsedIngredients.Ingredients, euNumbers).OrderBy(w => w.EUNumber); foreach (var additive in additives) { Product.EUAdditives.Add(new EUAdditiveViewModel(additive.EUNumber, additive.DisplayName)); } var allergens = CollectAllergens(_parsedIngredients.Ingredients); foreach (var allergen in allergens) { Product.Allergens.Add(new AllergenViewModel(allergen.Name, allergen.DisplayName)); } ProcessNutrients(); Product.Translate(); }
private void TranslateAllergens(ObservableCollection <AllergenViewModel> allergens) { var translator = new IngredientLanguageNames(_repo); foreach (var allergen in allergens) { TranslateAllergen(translator, allergen.Name, allergen.Name, allergen); } }
private void TranslateAllergen(IngredientLanguageNames translator, string name, string displayName, AllergenViewModel allergen) { var nutrientTranslations = translator.TranslateIngredient(name, OriginalLanguage, LanguageCode); if (nutrientTranslations.Any()) { displayName = nutrientTranslations.First().Name; } allergen.DisplayName = displayName; }
// todo: move processing to separate object #region processing private void TranslateIngredient(IngredientLanguageNames translator, string name, string displayName, IngredientViewModel ingredient) { var nutrientTranslations = translator.TranslateIngredient(name, Product.OriginalLanguage, Product.LanguageCode); if (nutrientTranslations.Any()) { displayName = nutrientTranslations.First().Name; } ingredient.DisplayName = displayName; }
private string GetFirstTranslation(IngredientLanguageNames translator, string name) { // todo: from product ingredient language to selected language var translations = translator.TranslateIngredient(name, Product.OriginalLanguage, Product.LanguageCode); if (translations.Any()) { return(translations.First().Name); } return(name.ToLower()); }
public void CanCreateIngredientLanguageName_CallsCreateIngredientLanguageNameStateOnRepository_AndSetsGuidsOnState() { var repoStub = Substitute.For <IngredientLanguageNames.IIngredientLanguageNameRepository>(); var stateStub = Substitute.For <IngredientLanguageName.IIngredientLanguageNameState>(); var ingredientLanguageNames = new IngredientLanguageNames(repoStub); var ingredientGuid = Guid.NewGuid(); var language = "en"; var name = "butter"; repoStub.CreateIngredientLanguageNameState().Returns(stateStub); ingredientLanguageNames.CreateIngredientLanguageName(ingredientGuid, name, language); repoStub.Received().CreateIngredientLanguageNameState(); stateStub.Received().IngredientGuid = ingredientGuid; stateStub.Received().Language = language; stateStub.Received().Name = name; }
internal void TranslateIngredients(ObservableCollection <IngredientViewModel> ingredients, IIngredientLanguageNames translator) { if (ingredients != null) { if (translator == null) { translator = new IngredientLanguageNames(_repo); } foreach (var ingredient in ingredients) { TranslateIngredient(translator, ingredient.Name, ingredient.Name, ingredient); if (ingredient is ExpandedIngredientViewModel) { TranslateIngredients(((ExpandedIngredientViewModel)ingredient).Ingredients, translator); } } } }
public void CanGetTranslations() { var repoStub = Substitute.For <IngredientLanguageNames.IIngredientLanguageNameRepository>(); var ingredientLanguageNames = new IngredientLanguageNames(repoStub); var butterEnglishStub = Substitute.For <IngredientLanguageName.IIngredientLanguageNameState>(); var butterDutchStub = Substitute.For <IngredientLanguageName.IIngredientLanguageNameState>(); butterEnglishStub.Name = "butter"; butterEnglishStub.Language = "en"; butterDutchStub.Name = "boter"; butterDutchStub.Language = "nl"; repoStub.GetTranslations(butterEnglishStub.Name, butterEnglishStub.Language, butterDutchStub.Language).Returns(new List <IngredientLanguageName.IIngredientLanguageNameState> { butterDutchStub }); var ingredientGuid = Guid.NewGuid(); var languageNameGuid = Guid.NewGuid(); var translations = ingredientLanguageNames.TranslateIngredient("butter", "en", "nl"); Assert.Equal(1, translations.Count()); Assert.Equal("boter", translations.First().Name); }
private void TranslateIngredients(IEnumerable <IngredientsParser.ParsedIngredient> ingredients, IngredientLanguageNames translator) { if (ingredients != null) { foreach (var ingredient in ingredients) { ingredient.DisplayName = GetFirstTranslation(translator, ingredient.Name); TranslateIngredients(ingredient.Ingredients, translator); } } }