Skip to content

Dodaj „Użyj ponownie” — recykling zarchiwizowanych plannerów (premium)#103

Closed
phoneuooyd wants to merge 1 commit intomainfrom
codex/implement-archived-plan-recycling-feature
Closed

Dodaj „Użyj ponownie” — recykling zarchiwizowanych plannerów (premium)#103
phoneuooyd wants to merge 1 commit intomainfrom
codex/implement-archived-plan-recycling-feature

Conversation

@phoneuooyd
Copy link
Copy Markdown
Owner

Motivation

  • Umożliwić użytkownikowi ponowne użycie zarchiwizowanego planu w nowym tygodniu bez ręcznego przenoszenia posiłków.
  • Wprowadzić mechanizm mapowania posiłków z archiwalnego Plan do nowego planera i zabezpieczyć tę funkcję jako premium z możliwością odblokowania reklamą.

Description

  • Rozszerzono interfejs IPlanService o Task<Plan?> GetArchivedPlanWithMealsAsync(Guid planId) oraz zaimplementowano w PlanService pobieranie archiwalnego planu wraz z PlannedMeals i ich Recipe (Include + ThenInclude).
  • Dodano relacje EF i nawigację encji: Plan.PlannedMeals, PlannedMeal.Plan oraz zaktualizowano AppDbContext (WithMany(p => p.PlannedMeals)) aby wspierać eager loading posiłków planu.
  • W UI dodano przycisk akcji „Użyj ponownie” na elementach zarchiwizowanych plannerów w ArchivePage.xaml oraz klucz lokalizacyjny ReuseAction.
  • W ArchiveViewModel dodano UseArchivedPlannerCommand z flowem walidacji dostępu: wywołanie CanUsePremiumFeatureAsync(PremiumFeature.PlanRecycling), proponowanie odblokowania reklamą (RequestAdUnlockAsync) lub przejścia do Premium, i w przypadku pozwolenia nawigację do PlannerPage z parametrami recycleMode=true i sourceArchivePlanId.
  • W PlannerPage dodano obsługę query params recycleMode i sourceArchivePlanId i uruchamianie recyklingu przy pierwszym wejściu, jeśli parametry wskazują na tryb recyklingu.
  • W PlannerViewModel dodano LoadFromArchiveAsync(Guid planId), które pobiera archiwalny plan, resetuje zakres dat do domyślnego tygodnia (dzisiaj + 6 dni), kopiuje posiłki do Days[] (mapując Recipe/RecipeId i zachowując Portions) oraz dopasowuje MealsPerDay; normalny zapis planu pozostaje bez zmian.
  • Dodano testy jednostkowe PlannerRecycleTests sprawdzające mapowanie posiłków do domyślnego tygodnia oraz dostosowanie MealsPerDay podczas recyklingu.
  • Zaktualizowano dokumentację (DOCUMENTATION-GUIDE.md, ARCHITECTURE.md, PROJECT-FILES.md) o opis nowego przepływu Archive -> Planner.

Testing

  • Dodano unit testy FoodbookApp.Tests/PlannerRecycleTests.cs pokrywające LoadFromArchiveAsync (mapowanie posiłków i skalowanie MealsPerDay).
  • Próbowano uruchomić testy poleceniem dotnet test FoodbookApp.App/FoodbookApp.sln --no-restore, ale wykonanie zakończyło się niepowodzeniem w tym środowisku z powodu braku zainstalowanego dotnet (błąd: command not found).
  • W środowisku dev z dostępem do SDK .NET testy jednostkowe powinny zostać uruchomione lokalnie / w CI i zweryfikować scenariusze dodane w PlannerRecycleTests.

Codex Task

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant