Ejemplo n.º 1
0
        //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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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
            });
        }