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); }
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); }
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("#.#")}"); }