- Added `send_harvest_reminder` preference to Member model and settings UI.
- Implemented `harvest_in_next_week?` in PredictHarvest concern.
- Created `harvest_reminder` email with localized templates.
- Added `growstuff:send_harvest_reminders` Rake task to run weekly.
- Refactored existing and new reminder tasks to use `deliver_later` for scalability.
- Added unit tests for prediction logic and mailer.
- Fixed a bug in the existing planting reminder task where it was using an uninitialized constant `Notifier`.
Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
This commit introduces memoization to various methods in the Planting model,
PredictPlanting and PredictHarvest concerns, PlantingsHelper, and
PlantingsController.
Specifically:
- Memoized database-intensive lookups like `nearby_same_crop`, `first_harvest_date`,
and `last_harvest_date`.
- Memoized calculated fields like `finish_predicted_at`, `expected_lifespan`,
and `age_in_days`.
- Optimized `PlantingsHelper#transplantable_gardens_by_owner` using a hash
to cache results per planting instance within a request.
- Applied the `defined?(@variable)` pattern where appropriate to ensure
efficient handling of `nil` results.
These changes reduce redundant database queries and expensive calculations,
particularly during view rendering where these methods are frequently accessed.
Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>