From 38f0428755584310a81d7d000af05ac034b45dfc Mon Sep 17 00:00:00 2001 From: evanlihou Date: Thu, 17 Aug 2023 16:28:08 -0400 Subject: [PATCH] Home Chef: Add more tags and exclude lunch --- .../FoodPicker.Infrastructure.csproj | 1 + .../Services/HomeChefMealService.cs | 15 +++++++++------ FoodPicker.Web/Views/Week/CreateOrEdit.cshtml | 5 ++++- FoodPicker.Web/Views/Week/Vote.cshtml | 5 ++++- .../Views/Week/_MealDetailsModal.cshtml | 5 ++++- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/FoodPicker.Infrastructure/FoodPicker.Infrastructure.csproj b/FoodPicker.Infrastructure/FoodPicker.Infrastructure.csproj index d2895a0..8d4e20f 100644 --- a/FoodPicker.Infrastructure/FoodPicker.Infrastructure.csproj +++ b/FoodPicker.Infrastructure/FoodPicker.Infrastructure.csproj @@ -6,6 +6,7 @@ + diff --git a/FoodPicker.Infrastructure/Services/HomeChefMealService.cs b/FoodPicker.Infrastructure/Services/HomeChefMealService.cs index 4fd2704..a2ee7bd 100644 --- a/FoodPicker.Infrastructure/Services/HomeChefMealService.cs +++ b/FoodPicker.Infrastructure/Services/HomeChefMealService.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using FoodPicker.Infrastructure.Data; using FoodPicker.Infrastructure.Models; +using Humanizer; using Microsoft.Extensions.Configuration; using TimeZoneConverter; @@ -61,23 +62,25 @@ public override async Task> GetMealsForMealWeek(MealWeek week) var meals = new List(); foreach (var mealElement in mealResponse.RootElement.GetProperty("meals").EnumerateArray()) { - if (new [] { "extras", "bundle-and-save" }.Contains(mealElement.GetProperty("menu_category") + if (new [] { "extras", "bundle-and-save", "lunch" }.Contains(mealElement.GetProperty("menu_category") .GetString())) { continue; } var mealId = mealElement.GetProperty("id").GetString() ?? ""; var description = mealElement.GetProperty("subtitle").GetString(); - if (mealOptions.ContainsKey(mealId)) + if (mealOptions.TryGetValue(mealId, out var option)) { - var mealOptionGroup = mealOptions[mealId]; - description += $"\n{mealOptionGroup.GetProperty("title").GetString()}"; - foreach (var mealOption in mealOptionGroup.GetProperty("meal_options").EnumerateArray()) + description += $"\n{option.GetProperty("title").GetString()}"; + foreach (var mealOption in option.GetProperty("meal_options").EnumerateArray()) { description += $"\n - {mealOption.GetProperty("display_name").GetString()}"; } } + var tags = new List { mealElement.GetProperty("primary_label").GetString() }; + tags.AddRange(mealElement.GetProperty("tags").EnumerateArray().Select(t => t.GetString().Transform(To.TitleCase))); + var meal = new Meal() { MealWeekId = week.Id, @@ -85,7 +88,7 @@ public override async Task> GetMealsForMealWeek(MealWeek week) Description = description, ImageUrl = mealElement.GetProperty("photo").GetString(), Url = mealElement.GetProperty("url").GetString(), - Tags = mealElement.GetProperty("primary_label").GetString() + Tags = string.Join(';', tags.Where(t => !string.IsNullOrEmpty(t))) }; meals.Add(meal); diff --git a/FoodPicker.Web/Views/Week/CreateOrEdit.cshtml b/FoodPicker.Web/Views/Week/CreateOrEdit.cshtml index b8bfef2..d2d0012 100644 --- a/FoodPicker.Web/Views/Week/CreateOrEdit.cshtml +++ b/FoodPicker.Web/Views/Week/CreateOrEdit.cshtml @@ -45,7 +45,10 @@

@meal.Description

@if (!string.IsNullOrEmpty(meal.Tags)) { - @meal.Tags + foreach (var tag in meal.Tags.Split(';')) + { + @tag + } } diff --git a/FoodPicker.Web/Views/Week/Vote.cshtml b/FoodPicker.Web/Views/Week/Vote.cshtml index 47ff693..df3bc12 100644 --- a/FoodPicker.Web/Views/Week/Vote.cshtml +++ b/FoodPicker.Web/Views/Week/Vote.cshtml @@ -36,7 +36,10 @@ } @if (!string.IsNullOrEmpty(meal.Tags)) { - @meal.Tags + foreach (var tag in meal.Tags.Split(';')) + { + @tag + } } @if (Model.PreviousRatings.Contains(meal.Id)) { diff --git a/FoodPicker.Web/Views/Week/_MealDetailsModal.cshtml b/FoodPicker.Web/Views/Week/_MealDetailsModal.cshtml index 4b870d0..5265220 100644 --- a/FoodPicker.Web/Views/Week/_MealDetailsModal.cshtml +++ b/FoodPicker.Web/Views/Week/_MealDetailsModal.cshtml @@ -11,7 +11,10 @@ } @if (!string.IsNullOrEmpty(Model.Meal.Tags)) { - @Model.Meal.Tags + foreach (var tag in Model.Meal.Tags.Split(';')) + { + @tag + } } @if (Model.PreviousRatings.Any())