protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
 {
     base.OnNavigatedTo(e);
     if (!int.TryParse(NavigationContext.QueryString["id"], out entryId))
         throw new ArgumentNullException("no food id was passed");
     else
         selectedEntry = DailyBurnService.NutritionLog.foodEntries[entryId];
 }
        public static void ModifyFoodEntry (food_log_entry ModifiedEntry, RestCallback Callback)
        {
            //Modify is not implemented so we will do a delete and an add
            //Store off the actual callback and IDfor later
            modifiedCallback = Callback;
            oldId = ModifiedEntry.id;

            Dictionary<string, string> parameters = new Dictionary<string, string>();
            parameters.Add("food_log_entry[food_id]", ModifiedEntry.food_id.ToString());
            parameters.Add("food_log_entry[servings_eaten]", ModifiedEntry.servings_eaten.ToString());
            parameters.Add("food_log_entry[logged_on]", ModifiedEntry.created_at.ToString("yyyy-MM-dd"));

            if (ModifiedEntry.meal_name_id != 0)
                parameters.Add("food_log_entry[meal_name_id]", ModifiedEntry.meal_name_id.ToString());

            HelperMethods.CallDailyBurnApiPost(DailyBurnSettings.FoodLogEntriesAPI,
                                          modifiedFoodLogAddCallback,
                                          parameters);
            //we invalidated the model so cause a get
            DailyBurnService.NutritionLog = null;

        }
        private TextBlock createAndAddTextBlock(food_log_entry food, string textValue, Thickness margin, int column, int columnSpan, TextAlignment textAlignment, bool isHeaderRow)
        {

            TextBlock tb = new TextBlock();
            tb.Text = textValue;
            tb.TextWrapping = TextWrapping.Wrap;
            tb.Margin = margin;
            tb.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            tb.TextAlignment = textAlignment;
            tb.Width = Double.NaN;
            tb.FontSize = 16;
            tb.Tag = food;

            tb.MouseLeftButtonDown += new MouseButtonEventHandler(tb_MouseLeftButtonDown);

            if (mealGrid.RowDefinitions.Count % 2 == 0 && !isHeaderRow)
            {
                Border b = new Border();
                b.Background = new SolidColorBrush(Color.FromArgb(95, 35, 35, 40));
                b.Child = tb;
                mealGrid.Children.Add(b);
                Grid.SetRow(b, mealGrid.RowDefinitions.Count - 1);
                Grid.SetRowSpan(b, 1);
                Grid.SetColumn(b, column);
                Grid.SetColumnSpan(b, columnSpan);
            }
            else
            {
                mealGrid.Children.Add(tb);
                Grid.SetRow(tb, mealGrid.RowDefinitions.Count - 1);
                Grid.SetRowSpan(tb, 1);
                Grid.SetColumn(tb, column);
                Grid.SetColumnSpan(tb, columnSpan);

            }
            return tb;
        }
        private void addFoodItemRow(food_log_entry MealItem)
        {
            Thickness margin = new Thickness(2,2,2, 0);
            addRowToMealGrid();

            string foodUrl = MealItem.food_picture_url;

            addFoodImage(foodUrl, margin);
            
            createAndAddTextBlock(MealItem, MealItem.food_name + Environment.NewLine + dbwp7Resources.ServingsLabel + MealItem.servings_eaten.ToString(), 
                                  margin, 1, 1, TextAlignment.Left, false);
            createAndAddTextBlock(MealItem, MealItem.calories_eaten.ToString(), margin, 2, 1, TextAlignment.Right, false);
            createAndAddTextBlock(MealItem, MealItem.total_fat_eaten.ToString(), margin, 3, 1, TextAlignment.Right, false);
            createAndAddTextBlock(MealItem, MealItem.total_carbs_eaten.ToString(), margin, 4, 1, TextAlignment.Right, false);
            createAndAddTextBlock(MealItem, MealItem.protein_eaten.ToString(), margin, 5, 1, TextAlignment.Right, false);

        }
 private void AddFoodItemRow(food_log_entry MealItem)
 {
     Dispatcher.BeginInvoke(() =>
         {
             addFoodItemRow(MealItem);
         });
 }
 private void updateDailyTotals(food_log_entry current)
 {
     totalCaloriesDay += current.calories_eaten;
     totalCarbsDay += current.total_carbs_eaten;
     totalFatDay += current.total_fat_eaten;
     totalProtDay += current.protein_eaten;
 }
        private void parseFoodLogEntries(Hammock.RestResponse response)
        {
            /* JSON is horked have to use XML
            DataContractJsonSerializer jSon = new DataContractJsonSerializer(typeof(food_log_entry[]));
            food_log_entry[] foodEntries = jSon.ReadObject(response.ContentStream) as food_log_entry[];*/

            XmlReader rdr = XmlReader.Create(response.ContentStream);
            while (!rdr.EOF)
            {
                if (rdr.ReadToFollowing("food-log-entry"))
                {
                    food_log_entry current = new food_log_entry();
                    rdr.ReadToFollowing("calories-eaten");
                    current.calories_eaten = rdr.ReadElementContentAsFloat();
                    rdr.ReadToFollowing("created-at");
                    current.created_at = rdr.ReadElementContentAsDateTime();
                    rdr.ReadToFollowing("food-id");
                    current.food_id = rdr.ReadElementContentAsInt();
                    rdr.ReadToFollowing("id");
                    current.id = rdr.ReadElementContentAsInt();
                    rdr.ReadToFollowing("logged-on");
                    current.logged_on = rdr.ReadElementContentAsDateTime();
                    rdr.ReadToFollowing("meal-name-id");
                    if (!rdr.MoveToAttribute("nil"))
                        current.meal_name_id = rdr.ReadElementContentAsInt();
                    else
                        current.meal_name_id = 0;
                    rdr.ReadToFollowing("servings-eaten");
                    current.servings_eaten = rdr.ReadElementContentAsFloat();
                    rdr.ReadToFollowing("user-id");
                    current.user_id = rdr.ReadElementContentAsInt();
                    rdr.ReadToFollowing("total-fat-eaten");
                    current.total_fat_eaten = rdr.ReadElementContentAsFloat();
                    rdr.ReadToFollowing("total-carbs-eaten");
                    current.total_carbs_eaten = rdr.ReadElementContentAsFloat();
                    rdr.ReadToFollowing("protein-eaten");
                    current.protein_eaten = rdr.ReadElementContentAsFloat();
                    rdr.ReadToFollowing("food-name");
                    current.food_name = rdr.ReadElementContentAsString();
                    rdr.ReadToFollowing("food-picture-url");
                    current.food_picture_url = rdr.ReadElementContentAsString();

                    updateDailyTotals(current);
                    foodEntries.Add(current.id, current);
                    
                    if (mealEntries.ContainsKey(current.meal_name_id))
                        mealEntries[current.meal_name_id].Add(current);
                    else
                    {
                        List<food_log_entry> list = new List<food_log_entry>();
                        list.Add(current);
                        mealEntries.Add(current.meal_name_id,list);
                    }

                }
            }
        }