コード例 #1
0
        private void PrintEntry(FoodSummary entry, List <string> lines)
        {
            string calories = entry.CaloriesTotal.ToString("##,###").PadRight(5);
            string proteins = entry.ProteinTotal.ToString("##").PadRight(3) + " g";
            string carbs    = entry.CarbsTotal.ToString("##").PadRight(3) + " g";

            var dateString = entry.Date > DateTime.MinValue ? $"{entry.Date:ddd MMM dd}" : new string(' ', $"{entry.Date:ddd MMM dd}".Length);

            string percentages = $"{entry.ProteinPercentage:####} % v {entry.CarbsPercentage:####} %";

            if (entry.ProteinGoalAchived)
            {
                Console.ForegroundColor = ConsoleColor.DarkGreen;
            }
            if (entry.ProteinGoalAchived && entry.ProteinWins)
            {
                Console.BackgroundColor = ConsoleColor.DarkGreen;
                Console.ForegroundColor = ConsoleColor.White;
            }
            if (entry.CarbsToProteinRatioIsHigh)
            {
                Console.ForegroundColor = ConsoleColor.Red;
            }
            if (entry.Date == DateTime.Now.Date)
            {
                Console.ForegroundColor = ConsoleColor.DarkGray; // don't color today's entry.
            }
            string line =
                $"{dateString}   Cal: {calories}   Prot: {proteins}   Carbs: {carbs}   {percentages}";

            Console.WriteLine(line);
            Console.ResetColor();

            lines.Add(line);
        }
コード例 #2
0
ファイル: UserTests.cs プロジェクト: supreettare/Fitbit.NET
        public void Can_Deserialize_Food()
        {
            string content      = File.ReadAllText(SampleData.PathFor("Food.txt"));
            var    deserializer = new RestSharp.Deserializers.XmlDeserializer();

            Food result = deserializer.Deserialize <Food>(new RestResponse()
            {
                Content = content
            });

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Foods);
            Assert.IsNotNull(result.Goals);
            Assert.IsNotNull(result.Summary);

            Assert.IsTrue(result.Foods.Count == 1);
            FoodLog food = result.Foods[0];

            Assert.IsTrue(food.IsFavorite);
            Assert.AreEqual(food.LogDate, new DateTime(2011, 06, 29));
            Assert.AreEqual(food.LogId, 1924);

            Assert.IsNotNull(food.LoggedFood);
            LoggedFood logged = food.LoggedFood;

            Assert.AreEqual(logged.AccessLevel, "PUBLIC");
            Assert.AreEqual(logged.Amount, 132.57f);
            Assert.IsNull(logged.Brand);
            Assert.AreEqual(logged.Calories, 752);
            Assert.AreEqual(logged.FoodId, 18828);
            Assert.AreEqual(logged.MealTypeId, 4);
            Assert.AreEqual(logged.Locale, "en_US");
            Assert.AreEqual(logged.Name, "Chocolate, Milk");

            Assert.IsNotNull(food.NutritionalValues);
            NutritionalValues values = food.NutritionalValues;

            Assert.AreEqual(values.Calories, 752);
            Assert.AreEqual(values.Carbs, 66.5);
            Assert.AreEqual(values.Fat, 49);
            Assert.AreEqual(values.Fiber, .5);
            Assert.AreEqual(values.Protein, 12.5);
            Assert.AreEqual(values.Sodium, 186);

            FoodSummary summary = result.Summary;

            Assert.AreEqual(summary.Calories, 752);
            Assert.AreEqual(summary.Carbs, 66.5);
            Assert.AreEqual(summary.Fat, 49);
            Assert.AreEqual(summary.Fiber, .5);
            Assert.AreEqual(summary.Protein, 12.5);
            Assert.AreEqual(summary.Sodium, 186);
            Assert.AreEqual(summary.Water, 0);

            FoodGoals goals = result.Goals;

            Assert.AreEqual(goals.Calories, 2286);
        }
コード例 #3
0
        public void Start()
        {
            InitializeTokens();

            int daysCount = int.TryParse(ConfigurationManager.AppSettings["DaysCount"], out daysCount) ? daysCount : 14;
            var from      = DateTime.Now.AddDays((daysCount) * -1);
            var to        = DateTime.Now;

            Console.WriteLine($"Retrieving daily totals from {from:ddd MMM dd} to {to:ddd MMM dd} (last {daysCount} days) ...");

            var entries = GetFoodSummaries(from, to);

            Console.WriteLine("Finished retrieving daily totals. (Average values do not include today's date):\n");

            var lines = new List <string>();

            lines.Add($"Nutrition logs (last {daysCount} days)\r\n");
            lines.Add("```");

            foreach (var entry in entries)
            {
                PrintEntry(entry, lines);
            }

            Console.WriteLine();

            entries = entries.Where(x => x.Date.Date != DateTime.Now.Date).ToList(); // exclude today's date from here on.

            var averages = new FoodSummary {
                Date          = DateTime.MinValue,
                CaloriesTotal = entries.Average(x => x.CaloriesTotal),
                ProteinTotal  = entries.Average(x => x.ProteinTotal),
                CarbsTotal    = entries.Average(x => x.CarbsTotal),
            };

            lines.Add(string.Empty);
            PrintEntry(averages, lines);
            lines.Add("```");

            File.WriteAllLines(ConfigurationManager.AppSettings["NotesFilePath"], lines, System.Text.Encoding.UTF8);  // Save lines to file;

            Console.WriteLine();

            string daysInfo = new string(' ', $"{averages.Date:ddd MMM dd}".Length) + "   "
                              + $"Good days: {entries.Count(x => x.IsGoodDay)}, Bad days: {entries.Count(x => x.IsBadDay)}, "
                              + $"Meh days: {entries.Count(x => !x.IsBadDay && !x.IsGoodDay)}";

            Console.WriteLine(daysInfo);
            Console.WriteLine(new string(' ', $"{averages.Date:ddd MMM dd}".Length) + $"   Score: {entries.Average(x => x.DayScore).ToString("#.#")}");
        }