private void SetPortionWeightAndUnit(FNSR01Calculator foodNutSR) { if (foodNutSR.WeightToUseType == FNSR01Calculator.WEIGHT_TOUSE_TYPES.weight2.ToString()) { //smaller portion than weight 1 foodNutSR.ServingSizeUnit = foodNutSR.TypWt2_Unit; foodNutSR.TypicalServingSize = foodNutSR.TypWt2_Amount; } else if (foodNutSR.WeightToUseType == FNSR01Calculator.WEIGHT_TOUSE_TYPES.weight2metric.ToString()) { foodNutSR.ServingSizeUnit = "gram"; foodNutSR.TypicalServingSize = foodNutSR.GmWt_2; } else if (foodNutSR.WeightToUseType == FNSR01Calculator.WEIGHT_TOUSE_TYPES.weight1metric.ToString()) { foodNutSR.ServingSizeUnit = "gram"; foodNutSR.TypicalServingSize = foodNutSR.GmWt_1; } else { //weight1 is default foodNutSR.WeightToUseType = FNSR01Calculator.WEIGHT_TOUSE_TYPES.weight1.ToString(); foodNutSR.ServingSizeUnit = foodNutSR.TypWt1_Unit; foodNutSR.TypicalServingSize = foodNutSR.TypWt1_Amount; } }
public static double GetMultiplierForFNSR01(FNSR01Calculator foodNutSR) { //food fact only multiplier (IOFNSR01StockSubscriber uses input.times instead) double multiplier = 1; //step 1. To calculate the “amount of nutrient in edible portion of 1 pound (453.6 //grams) as purchased,” use the following formula: //Y = V*4.536*[(100-R)/100] //where //Y = nutrient value per 1 pound as purchased, //V = nutrient value per 100 g (Nutr_Val in the Nutrient Data file), and //R = percent refuse //step 2. To calculate the nutrient content per household measure: //N = (V*W)/100 //Where: //N = nutrient value per household measure, //V = nutrient value per 100 g (Nutr_Val in the Nutrient Data file), and //W = g weight of portion (Gm_Wgt in the Weight file). //step 3. To calculate the actual nutrient content per actual serving size //(instead of per typical serving size) //AN = (N / typicalservingsize) * actualservingsize //double multiplier = 1; (foodNutSR.ActualServingsPerContainer == 0) //? 1 : foodNutSR.ServingsPerContainer / foodNutSR.ActualServingsPerContainer; return(multiplier); }
private void TransferCorrespondingDbProperties( ref FNSR01Calculator foodNutSRInput) { //calculators can use aliases to change db properties //but this calc gets its MV from input.CapPrice foodNutSRInput.MarketValue = foodNutSRInput.CAPPrice; }
public static void ChangeFNInputByMultiplier(FNSR01Calculator foodNutritionInput, double multiplier) { //cost per unit served * units served * multiplier foodNutritionInput.ServingCost = (foodNutritionInput.ServingCost * multiplier); foodNutritionInput.TotalOC = foodNutritionInput.ServingCost; }
public static void ChangeFNInputByInputMultipliers(FNSR01Calculator foodNutritionInput, double multiplier) { //this is ok for foodstock analysis (not npv analysis) //cost per unit served * units served * input.times foodNutritionInput.ServingCost = (foodNutritionInput.OCPrice * multiplier * foodNutritionInput.OCAmount); foodNutritionInput.TotalOC = foodNutritionInput.ServingCost; }
public static void AddFNSR01CalculatorTotals(FNSR01Calculator foodNutritionInput, XElement foodNutritionInputCalcElement) { //these have already been adjusted by input multipliers (ocamount, times) foodNutritionInput.TotalOC = foodNutritionInput.ServingCost; CalculatorHelpers.SetAttributeDoubleF2(foodNutritionInputCalcElement, CostBenefitCalculator.TOC, foodNutritionInput.TotalOC); //extra multiplier needed for display CalculatorHelpers.SetAttributeDoubleF2(foodNutritionInputCalcElement, Input.INPUT_TIMES, foodNutritionInput.Times); }
public bool RunFNSR01StockCalculations(FNSR01Calculator foodNutSRInput, CalculatorParameters calcParameters) { bool bHasCalculations = false; //see if any db props are being changed by calculator TransferCorrespondingDbProperties(ref foodNutSRInput); //set the multiplier (the multiplier in most inputs is 1, //this is kept here to keep a uniform pattern when the multiplier //can be changed -see the food nutrition calculator) double multiplier = GetMultiplierForFNSR01(foodNutSRInput); bHasCalculations = SetFNSRStockCalculations(multiplier, calcParameters, foodNutSRInput); return(bHasCalculations); }
public static double GetInputFullCostMultiplier(FNSR01Calculator foodNutritionInput, CalculatorParameters calcParams) { //to keep all food nutrition stock analysis consistent, put the totals //in the inputs, then all can be compared consistently //input.times double dbInputMultiplier = IOFNStockSubscriber .GetMultiplierForTechInput(foodNutritionInput); //oc.amount double dbOCMultiplier = OCFNStockSubscriber .GetMultiplierForOperation(calcParams.ParentOperationComponent); double dbTPAmount = BIFNStockSubscriber.GetMultiplierForTimePeriod( calcParams.ParentTimePeriod); double dbMultiplier = dbInputMultiplier * dbOCMultiplier * dbTPAmount; return(dbMultiplier); }
public static int GetNodePositionCount(this FNSR01Stock baseStat, int filePosition, FNSR01Calculator foodStock) { int iNodeCount = 0; if (baseStat.FoodNutritionStocks == null) { return(iNodeCount); } if (baseStat.FoodNutritionStocks.ContainsKey(filePosition)) { if (baseStat.FoodNutritionStocks[filePosition] != null) { iNodeCount = baseStat.FoodNutritionStocks[filePosition].Count; } } return(iNodeCount); }
private double GetActualFoodNutrientProperty(FNSR01Calculator foodNutSR, double nutrientValToAdjust) { //food fact only multiplier (IOFNSR01StockSubscriber uses input.times instead) double dbActualNutValuePerHouseHoldMeasure = 1; //step 1. To calculate the “amount of nutrient in edible portion of 1 pound (453.6 //grams) as purchased,” use the following formula: //Y = V*4.536*[(100-R)/100] //where //Y = nutrient value per 1 pound as purchased, //V = nutrient value per 100 g (Nutr_Val in the Nutrient Data file), and //R = percent refuse double dbNutValuePerPound = nutrientValToAdjust; if (foodNutSR.Refuse_Pct > 0) { dbNutValuePerPound = nutrientValToAdjust * 4.536 * ((100 - foodNutSR.Refuse_Pct) / 100); } //step 2. 100. For example, to calculate the //amount of fat in 1 tablespoon of butter (NDB No. 01001), //VH=(N*CM)/100 //where: //Vh = the nutrient content per the desired common measure //N = the nutrient content per 100 g //For NDB No. 01001, fat = 81.11 g/100 g //CM = grams of the common measure //For NDB No. 01001, 1 tablespoon = 14.2 g //So using this formula for the above example: //Vh = (81.11*14.2)/100 = 11.52 g fat in 1 tablespoon of butter SetPortionWeightAndUnit(foodNutSR); //use typical serving size dbActualNutValuePerHouseHoldMeasure = (dbNutValuePerPound * foodNutSR.TypicalServingSize) / 100; //step 3. To calculate the actual nutrient content per actual serving size //(instead of per typical serving size) //AN = (N / typicalservingsize) * actualservingsize //use actual serving size dbActualNutValuePerHouseHoldMeasure = (dbActualNutValuePerHouseHoldMeasure / foodNutSR.TypicalServingSize) * foodNutSR.ActualServingSize; return(dbActualNutValuePerHouseHoldMeasure); }
private void SetFoodNutritionInputCosts( CalculatorParameters calcParameters, ref FNSR01Calculator foodNutSR) { //check illegal divisors foodNutSR.ContainerSizeUsingServingSizeUnit = (foodNutSR.ContainerSizeUsingServingSizeUnit == 0) ? -1 : foodNutSR.ContainerSizeUsingServingSizeUnit; foodNutSR.TypicalServingsPerContainer = foodNutSR.ContainerSizeUsingServingSizeUnit / foodNutSR.TypicalServingSize; foodNutSR.ActualServingsPerContainer = foodNutSR.ContainerSizeUsingServingSizeUnit / foodNutSR.ActualServingSize; //keep this calculator simple //update these input fields automatically in the db //(they just insert caprice in input) //serving size = ocamount //if actual serving size is 1 slice of bread, but a sandwich, use the input.times multiplier to adjust to 2 slices foodNutSR.OCAmount = foodNutSR.ActualServingSize; //calculate OCPrice as a unit cost foodNutSR.OCPrice = foodNutSR.MarketValue / foodNutSR.ContainerSizeUsingServingSizeUnit; //set ocunit foodNutSR.OCUnit = foodNutSR.ServingSizeUnit; //calculate cost per actual serving //note that this can change when the input is added elsewhere foodNutSR.ServingCost = foodNutSR.OCPrice * foodNutSR.OCAmount; foodNutSR.TotalOC = foodNutSR.ServingCost; }
public bool AddCalculationsToCurrentElement( CalculatorParameters calcParameters, ref XElement currentCalculationsElement, ref XElement currentElement, IDictionary <string, string> updates) { bool bHasCalculations = false; if (currentElement.Name.LocalName == Input.INPUT_PRICE_TYPES.inputgroup.ToString() && calcParameters.ExtensionDocToCalcURI.URINodeName != Constants.LINKEDVIEWS_TYPES.linkedview.ToString()) { bHasCalculations = BIFNSR01Calculator.SetTotalFNSR01StockCalculations( ref currentCalculationsElement, ref currentElement); } else { if (currentCalculationsElement != null) { FNSR01Calculator foodNutSRInput = new FNSR01Calculator(); //deserialize xml to object foodNutSRInput.SetFNSR01Properties(calcParameters, currentCalculationsElement, currentElement); //run the calculations bHasCalculations = RunFNSR01StockCalculations(foodNutSRInput, calcParameters); //serialize object back to xml string sAttNameExtension = string.Empty; ////bool bRemoveAtts = false; //note that unlike other IOAnalyzers, this runs the input calc too //and must update input props to calculated results (OCAmount and OCPrice calcs) //also note that if input analyzers are needed, probably want to use BIFNSR01StockCalcor //so that does not update input db props and keeps consistent pattern foodNutSRInput.SetInputAttributes(calcParameters, ref currentElement, updates); //update the calculator attributes foodNutSRInput.SetAndRemoveCalculatorAttributes(sAttNameExtension, ref currentCalculationsElement); foodNutSRInput.SetNewInputAttributes(calcParameters, ref currentCalculationsElement); foodNutSRInput.SetFNSR01Attributes(sAttNameExtension, ref currentCalculationsElement); //set calculatorid (primary way to display calculation attributes) CalculatorHelpers.SetCalculatorId( currentCalculationsElement, currentElement); //input groups only aggregate inputs (not input series) if (currentElement.Name.LocalName .Contains(Input.INPUT_PRICE_TYPES.input.ToString())) { //add the food nutrition to the machstock.machstocks dictionary //the count is 1-based, while iNodePosition is 0-based //so the count is the correct next index position int iNodePosition = BIFNSR01Calculator.FNSR01Stock .GetNodePositionCount(calcParameters.AnalyzerParms.FilePositionIndex, foodNutSRInput); if (iNodePosition < 0) { iNodePosition = 0; } bHasCalculations = BIFNSR01Calculator.FNSR01Stock .AddFNSR01StocksToDictionary( calcParameters.AnalyzerParms.FilePositionIndex, iNodePosition, foodNutSRInput); } } } return(bHasCalculations); }
public bool SetFNSRStockCalculations(double multiplier, CalculatorParameters calcParameters, FNSR01Calculator foodNutSR) { bool bHasCalculations = false; if (foodNutSR != null) { foodNutSR.ActualWater_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Water_g); foodNutSR.ActualEnerg_Kcal = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Energ_Kcal); foodNutSR.ActualProtein_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Protein_g); foodNutSR.ActualLipid_Tot_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Lipid_Tot_g); foodNutSR.ActualAsh_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Ash_g); foodNutSR.ActualCarbohydrt_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Carbohydrt_g); foodNutSR.ActualFiber_TD_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Fiber_TD_g); foodNutSR.ActualSugar_Tot_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Sugar_Tot_g); foodNutSR.ActualCalcium_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Calcium_mg); foodNutSR.ActualIron_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Iron_mg); foodNutSR.ActualMagnesium_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Magnesium_mg); foodNutSR.ActualPhosphorus_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Phosphorus_mg); foodNutSR.ActualPotassium_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Potassium_mg); foodNutSR.ActualSodium_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Sodium_mg); foodNutSR.ActualZinc_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Zinc_mg); foodNutSR.ActualCopper_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Copper_mg); foodNutSR.ActualManganese_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Manganese_mg); foodNutSR.ActualSelenium_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Selenium_pg); foodNutSR.ActualVit_C_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_C_mg); foodNutSR.ActualThiamin_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Thiamin_mg); foodNutSR.ActualRiboflavin_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Riboflavin_mg); foodNutSR.ActualNiacin_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Niacin_mg); foodNutSR.ActualPanto_Acid_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Panto_Acid_mg); foodNutSR.ActualVit_B6_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_B6_mg); foodNutSR.ActualFolate_Tot_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Folate_Tot_pg); foodNutSR.ActualFolic_Acid_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Folic_Acid_pg); foodNutSR.ActualFood_Folate_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Food_Folate_pg); foodNutSR.ActualFolate_DFE_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Folate_DFE_pg); foodNutSR.ActualCholine_Tot_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Choline_Tot_mg); foodNutSR.ActualVit_B12_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_B12_pg); foodNutSR.ActualVit_A_IU = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_A_IU); foodNutSR.ActualVit_A_RAE = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_A_RAE); foodNutSR.ActualRetinol_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Retinol_pg); foodNutSR.ActualAlpha_Carot_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Alpha_Carot_pg); foodNutSR.ActualBeta_Carot_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Beta_Carot_pg); foodNutSR.ActualBeta_Crypt_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Beta_Crypt_pg); foodNutSR.ActualLycopene_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Lycopene_pg); foodNutSR.ActualLut_Zea_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Lut_Zea_pg); foodNutSR.ActualVit_E_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_E_mg); foodNutSR.ActualVit_D_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_D_pg); foodNutSR.ActualViVit_D_IU = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.ViVit_D_IU); foodNutSR.ActualVit_K_pg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Vit_K_pg); foodNutSR.ActualFA_Sat_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.FA_Sat_g); foodNutSR.ActualFA_Mono_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.FA_Mono_g); foodNutSR.ActualFA_Poly_g = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.FA_Poly_g); foodNutSR.ActualCholestrl_mg = GetActualFoodNutrientProperty(foodNutSR, foodNutSR.Cholestrl_mg); SetFoodNutritionInputCosts(calcParameters, ref foodNutSR); bHasCalculations = true; } else { calcParameters.ErrorMessage = Errors.MakeStandardErrorMsg("CALCULATORS_WRONG_ONE"); } return(bHasCalculations); }
public static bool AddFNInputToStock(FNSR01Stock foodStock, double multiplier, FNSR01Calculator foodNutritionInput, string currentNodeName, bool adjustTotals) { bool bHasCalculations = false; //inheriting classes usually run this class, but adjust their own totals if (adjustTotals) { //multipliers (input.times, out.compositionamount, oc.amount, tp.amount) //don't change per hour food nutrition costs, only total costs if (currentNodeName.EndsWith(Input.INPUT_PRICE_TYPES.input.ToString())) { //i.e. foodNutritionInput.cost = foodNutritionInput.cost * multiplier * input.ocamount //multiplier = input.times * oc.amount * tp.amount ChangeFNInputByInputMultipliers(foodNutritionInput, multiplier); } else { //i.e. foodNutritionInput.cost = foodNutritionInput.cost * multiplier (1 in stock analyzers) ChangeFNInputByMultiplier(foodNutritionInput, multiplier); } } foodStock.TotalMarketValue += foodNutritionInput.MarketValue; foodStock.TotalContainerSizeUsingServingSizeUnit += foodNutritionInput.ContainerSizeUsingServingSizeUnit; foodStock.TotalServingCost += foodNutritionInput.ServingCost; foodStock.TotalActualServingSize += foodNutritionInput.ActualServingSize; foodStock.TotalTypicalServingsPerContainer += foodNutritionInput.TypicalServingsPerContainer; foodStock.TotalActualServingsPerContainer += foodNutritionInput.ActualServingsPerContainer; foodStock.TotalTypicalServingSize += foodNutritionInput.TypicalServingSize; foodStock.TotalWater_g += foodNutritionInput.ActualWater_g; foodStock.TotalEnerg_Kcal += foodNutritionInput.ActualEnerg_Kcal; foodStock.TotalProtein_g += foodNutritionInput.ActualProtein_g; foodStock.TotalLipid_Tot_g += foodNutritionInput.ActualLipid_Tot_g; foodStock.TotalAsh_g += foodNutritionInput.ActualAsh_g; foodStock.TotalCarbohydrt_g += foodNutritionInput.ActualCarbohydrt_g; foodStock.TotalFiber_TD_g += foodNutritionInput.ActualFiber_TD_g; foodStock.TotalSugar_Tot_g += foodNutritionInput.ActualSugar_Tot_g; foodStock.TotalCalcium_mg += foodNutritionInput.ActualCalcium_mg; foodStock.TotalIron_mg += foodNutritionInput.ActualIron_mg; foodStock.TotalMagnesium_mg += foodNutritionInput.ActualMagnesium_mg; foodStock.TotalPhosphorus_mg += foodNutritionInput.ActualPhosphorus_mg; foodStock.TotalPotassium_mg += foodNutritionInput.ActualPotassium_mg; foodStock.TotalSodium_mg += foodNutritionInput.ActualSodium_mg; foodStock.TotalZinc_mg += foodNutritionInput.ActualZinc_mg; foodStock.TotalCopper_mg += foodNutritionInput.ActualCopper_mg; foodStock.TotalManganese_mg += foodNutritionInput.ActualManganese_mg; foodStock.TotalSelenium_pg += foodNutritionInput.ActualSelenium_pg; foodStock.TotalVit_C_mg += foodNutritionInput.ActualVit_C_mg; foodStock.TotalThiamin_mg += foodNutritionInput.ActualThiamin_mg; foodStock.TotalRiboflavin_mg += foodNutritionInput.ActualRiboflavin_mg; foodStock.TotalNiacin_mg += foodNutritionInput.ActualNiacin_mg; foodStock.TotalPanto_Acid_mg += foodNutritionInput.ActualPanto_Acid_mg; foodStock.TotalVit_B6_mg += foodNutritionInput.ActualVit_B6_mg; foodStock.TotalFolate_Tot_pg += foodNutritionInput.ActualFolate_Tot_pg; foodStock.TotalFolic_Acid_pg += foodNutritionInput.ActualFolic_Acid_pg; foodStock.TotalFood_Folate_pg += foodNutritionInput.ActualFood_Folate_pg; foodStock.TotalFolate_DFE_pg += foodNutritionInput.ActualFolate_DFE_pg; foodStock.TotalCholine_Tot_mg += foodNutritionInput.ActualCholine_Tot_mg; foodStock.TotalVit_B12_pg += foodNutritionInput.ActualVit_B12_pg; foodStock.TotalVit_A_IU += foodNutritionInput.ActualVit_A_IU; foodStock.TotalVit_A_RAE += foodNutritionInput.ActualVit_A_RAE; foodStock.TotalRetinol_pg += foodNutritionInput.ActualRetinol_pg; foodStock.TotalAlpha_Carot_pg += foodNutritionInput.ActualAlpha_Carot_pg; foodStock.TotalBeta_Carot_pg += foodNutritionInput.ActualBeta_Carot_pg; foodStock.TotalBeta_Crypt_pg += foodNutritionInput.ActualBeta_Crypt_pg; foodStock.TotalLycopene_pg += foodNutritionInput.ActualLycopene_pg; foodStock.TotalLut_Zea_pg += foodNutritionInput.ActualLut_Zea_pg; foodStock.TotalVit_E_mg += foodNutritionInput.ActualVit_E_mg; foodStock.TotalVit_D_pg += foodNutritionInput.ActualVit_D_pg; foodStock.TotalViVit_D_IU += foodNutritionInput.ActualViVit_D_IU; foodStock.TotalVit_K_pg += foodNutritionInput.ActualVit_K_pg; foodStock.TotalFA_Sat_g += foodNutritionInput.ActualFA_Sat_g; foodStock.TotalFA_Mono_g += foodNutritionInput.ActualFA_Mono_g; foodStock.TotalFA_Poly_g += foodNutritionInput.ActualFA_Poly_g; foodStock.TotalCholestrl_mg += foodNutritionInput.ActualCholestrl_mg; bHasCalculations = true; return(bHasCalculations); }
public bool AddFNInputToStock(double multiplier, FNSR01Calculator foodNutritionInput, string currentNodeName, bool adjustTotals) { bool bHasCalculations = false; //inheriting classes usually run this class, but adjust their own totals if (adjustTotals) { //multipliers (input.times, input.ocamount, out.compositionamount, oc.amount, tp.amount) //are not used with per hourly costs, but are used with total op and aoh costs (fuelcost, capitalrecovery) if (currentNodeName.EndsWith(Input.INPUT_PRICE_TYPES.input.ToString())) { //i.e. foodNutritionInput.cost = input.times * input.ocamount ChangeFNInputByInputMultipliers(foodNutritionInput, multiplier); } else { //i.e. budget adjustment = if operation multiplier = op.amount, //if timeperiod multiplier = tp.amount) ChangeFNInputByMultiplier(foodNutritionInput, multiplier); } } this.FNSR01Stock.TotalMarketValue += foodNutritionInput.MarketValue; this.FNSR01Stock.TotalContainerSizeUsingServingSizeUnit += foodNutritionInput.ContainerSizeUsingServingSizeUnit; this.FNSR01Stock.TotalServingCost += foodNutritionInput.ServingCost; this.FNSR01Stock.TotalActualServingSize += foodNutritionInput.ActualServingSize; this.FNSR01Stock.TotalTypicalServingsPerContainer += foodNutritionInput.TypicalServingsPerContainer; this.FNSR01Stock.TotalActualServingsPerContainer += foodNutritionInput.ActualServingsPerContainer; this.FNSR01Stock.TotalTypicalServingSize += foodNutritionInput.TypicalServingSize; this.FNSR01Stock.TotalWater_g += foodNutritionInput.ActualWater_g; this.FNSR01Stock.TotalEnerg_Kcal += foodNutritionInput.ActualEnerg_Kcal; this.FNSR01Stock.TotalProtein_g += foodNutritionInput.ActualProtein_g; this.FNSR01Stock.TotalLipid_Tot_g += foodNutritionInput.ActualLipid_Tot_g; this.FNSR01Stock.TotalAsh_g += foodNutritionInput.ActualAsh_g; this.FNSR01Stock.TotalCarbohydrt_g += foodNutritionInput.ActualCarbohydrt_g; this.FNSR01Stock.TotalFiber_TD_g += foodNutritionInput.ActualFiber_TD_g; this.FNSR01Stock.TotalSugar_Tot_g += foodNutritionInput.ActualSugar_Tot_g; this.FNSR01Stock.TotalCalcium_mg += foodNutritionInput.ActualCalcium_mg; this.FNSR01Stock.TotalIron_mg += foodNutritionInput.ActualIron_mg; this.FNSR01Stock.TotalMagnesium_mg += foodNutritionInput.ActualMagnesium_mg; this.FNSR01Stock.TotalPhosphorus_mg += foodNutritionInput.ActualPhosphorus_mg; this.FNSR01Stock.TotalPotassium_mg += foodNutritionInput.ActualPotassium_mg; this.FNSR01Stock.TotalSodium_mg += foodNutritionInput.ActualSodium_mg; this.FNSR01Stock.TotalZinc_mg += foodNutritionInput.ActualZinc_mg; this.FNSR01Stock.TotalCopper_mg += foodNutritionInput.ActualCopper_mg; this.FNSR01Stock.TotalManganese_mg += foodNutritionInput.ActualManganese_mg; this.FNSR01Stock.TotalSelenium_pg += foodNutritionInput.ActualSelenium_pg; this.FNSR01Stock.TotalVit_C_mg += foodNutritionInput.ActualVit_C_mg; this.FNSR01Stock.TotalThiamin_mg += foodNutritionInput.ActualThiamin_mg; this.FNSR01Stock.TotalRiboflavin_mg += foodNutritionInput.ActualRiboflavin_mg; this.FNSR01Stock.TotalNiacin_mg += foodNutritionInput.ActualNiacin_mg; this.FNSR01Stock.TotalPanto_Acid_mg += foodNutritionInput.ActualPanto_Acid_mg; this.FNSR01Stock.TotalVit_B6_mg += foodNutritionInput.ActualVit_B6_mg; this.FNSR01Stock.TotalFolate_Tot_pg += foodNutritionInput.ActualFolate_Tot_pg; this.FNSR01Stock.TotalFolic_Acid_pg += foodNutritionInput.ActualFolic_Acid_pg; this.FNSR01Stock.TotalFood_Folate_pg += foodNutritionInput.ActualFood_Folate_pg; this.FNSR01Stock.TotalFolate_DFE_pg += foodNutritionInput.ActualFolate_DFE_pg; this.FNSR01Stock.TotalCholine_Tot_mg += foodNutritionInput.ActualCholine_Tot_mg; this.FNSR01Stock.TotalVit_B12_pg += foodNutritionInput.ActualVit_B12_pg; this.FNSR01Stock.TotalVit_A_IU += foodNutritionInput.ActualVit_A_IU; this.FNSR01Stock.TotalVit_A_RAE += foodNutritionInput.ActualVit_A_RAE; this.FNSR01Stock.TotalRetinol_pg += foodNutritionInput.ActualRetinol_pg; this.FNSR01Stock.TotalAlpha_Carot_pg += foodNutritionInput.ActualAlpha_Carot_pg; this.FNSR01Stock.TotalBeta_Carot_pg += foodNutritionInput.ActualBeta_Carot_pg; this.FNSR01Stock.TotalBeta_Crypt_pg += foodNutritionInput.ActualBeta_Crypt_pg; this.FNSR01Stock.TotalLycopene_pg += foodNutritionInput.ActualLycopene_pg; this.FNSR01Stock.TotalLut_Zea_pg += foodNutritionInput.ActualLut_Zea_pg; this.FNSR01Stock.TotalVit_E_mg += foodNutritionInput.ActualVit_E_mg; this.FNSR01Stock.TotalVit_D_pg += foodNutritionInput.ActualVit_D_pg; this.FNSR01Stock.TotalViVit_D_IU += foodNutritionInput.ActualViVit_D_IU; this.FNSR01Stock.TotalVit_K_pg += foodNutritionInput.ActualVit_K_pg; this.FNSR01Stock.TotalFA_Sat_g += foodNutritionInput.ActualFA_Sat_g; this.FNSR01Stock.TotalFA_Mono_g += foodNutritionInput.ActualFA_Mono_g; this.FNSR01Stock.TotalFA_Poly_g += foodNutritionInput.ActualFA_Poly_g; this.FNSR01Stock.TotalCholestrl_mg += foodNutritionInput.ActualCholestrl_mg; bHasCalculations = true; return(bHasCalculations); }
//add a foodfact to the baseStat.FoodNutritionStocks dictionary public static bool AddFNSR01StocksToDictionary(this FNSR01Stock baseStat, int filePosition, int nodePosition, FNSR01Calculator foodStock) { bool bIsAdded = false; if (filePosition < 0 || nodePosition < 0) { baseStat.ErrorMessage = Errors.MakeStandardErrorMsg("ANALYSES_INDEX_OUTOFBOUNDS"); return(false); } if (baseStat.FoodNutritionStocks == null) { baseStat.FoodNutritionStocks = new Dictionary <int, List <FNSR01Calculator> >(); } if (baseStat.FoodNutritionStocks.ContainsKey(filePosition)) { if (baseStat.FoodNutritionStocks[filePosition] != null) { for (int i = 0; i <= nodePosition; i++) { if (baseStat.FoodNutritionStocks[filePosition].Count <= i) { baseStat.FoodNutritionStocks[filePosition] .Add(new FNSR01Calculator()); } } baseStat.FoodNutritionStocks[filePosition][nodePosition] = foodStock; bIsAdded = true; } } else { //add the missing dictionary entry List <FNSR01Calculator> baseStats = new List <FNSR01Calculator>(); KeyValuePair <int, List <FNSR01Calculator> > newStat = new KeyValuePair <int, List <FNSR01Calculator> >( filePosition, baseStats); baseStat.FoodNutritionStocks.Add(newStat); bIsAdded = AddFNSR01StocksToDictionary(baseStat, filePosition, nodePosition, foodStock); } return(bIsAdded); }