//TODO; Verify the math in case of food stage with refuse public NutritionalLabel CreateNutritionalLabel(decimal amount) { NutritionalLabel label = new NutritionalLabel { Amount = amount }; NutritionalFact calories = NutritionalFacts.FirstOrDefault(n => n.FactDefinition.Tag != null && n.FactDefinition.Tag.Equals("ENERC_KCAL")); label.Calories = calories?.Value ?? 0; NutritionalFact fat = NutritionalFacts.FirstOrDefault(n => n.FactDefinition.Tag.Equals("FAT")); decimal fatValue = fat?.Value ?? 0; label.CaloriesFromFat = FatCalorieFactor > 0 ? fatValue * FatCalorieFactor : fatValue * 9; NutritionalFact protein = NutritionalFacts.FirstOrDefault(n => n.FactDefinition.Tag != null && n.FactDefinition.Tag.Equals("PROCNT")); decimal proteinValue = protein?.Value ?? 0; label.CaloriesFromProtein = ProteinCalorieFactor > 0 ? ProteinCalorieFactor * proteinValue : proteinValue * 4; NutritionalFact carb = NutritionalFacts.FirstOrDefault(n => n.FactDefinition.Tag != null && n.FactDefinition.Tag.Equals("CHOCDF")); decimal carbValue = carb?.Value ?? 0; label.CaloriesFromCarb = CarbCalorieFactor > 0 ? carbValue * CarbCalorieFactor : carbValue * 4; label = FixPercentages(label); label = PopulateNutrient(label, false); return(label); }
private NutritionalLabel PopulateNutrient(NutritionalLabel label, bool complexity) { label.Nutrients = new List <Nutrient>(); IEnumerable <NutritionalFact> nutrientValues = complexity ? NutritionalFacts.Where(n => n.FactDefinition.Tag != "ENERC_KCAL") : NutritionalFacts.Where(n => n.FactDefinition.Tag != "ENERC_KCAL" && n.FactDefinition.IsPrincipal); nutrientValues = nutrientValues.OrderBy(n => n.FactDefinition.Order); foreach (Nutrient nutrient in from nutrientValue in nutrientValues where Math.Round(nutrientValue.Value, nutrientValue.FactDefinition.DecimalRoundNumber) > 0 select new Nutrient { Value = Math.Round(nutrientValue.Value, nutrientValue.FactDefinition.DecimalRoundNumber), IsTitle = nutrientValue.FactDefinition.IsTitle, Name = nutrientValue.FactDefinition.Name, Order = nutrientValue.FactDefinition.Order, Type = nutrientValue.FactDefinition.Type, Unit = nutrientValue.FactDefinition.Unit, ShowPercentage = nutrientValue.FactDefinition.DailyValue > 0, Percentage = nutrientValue.FactDefinition.DailyValue > 0 ? Math.Round((nutrientValue.Value / nutrientValue.FactDefinition.DailyValue) * 100, 2) : 0 }) { label.Nutrients.Add(nutrient); } return(label); }
private async void Item_Tapped(object sender, EventArgs e) { var item = sender as ViewCell; Label ingredient = (Label)item.FindByName("lblIngredient"); listView.SelectedItem = false; _timeToresponse.IsRunning = true; _timeToresponse.IsVisible = true; NutritionalFacts nutritionalFactsData = await _restService.GetNutritionalData(GenerateRequestUri(Constants.EdanamAPIEndPoind, "100 gr " + ingredient.Text)); _timeToresponse.IsRunning = false; _timeToresponse.IsVisible = false; await Navigation.PushAsync(new NutritionalDataView() { Title = ingredient.Text, BindingContext = nutritionalFactsData.totalNutrients }); }