Fix 500 when exiting hosting panel for existing accounts.
Deploy Ladill Hosting / deploy (push) Successful in 20s

The account overview queried a local mailboxes table that the extracted hosting app does not have; guard those lookups and skip email-addon upsells when mailboxes are managed on Ladill Email.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-06 17:02:44 +00:00
co-authored by Cursor
parent 206a022e27
commit 1135915797
5 changed files with 62 additions and 21 deletions
@@ -20,11 +20,16 @@ class UpsellRecommendationService
*/
public function recommendationsForUser(User $user): Collection
{
$accounts = HostingAccount::query()
$accountsQuery = HostingAccount::query()
->where('user_id', $user->id)
->where('status', HostingAccount::STATUS_ACTIVE)
->with(['product', 'mailboxes:id,hosting_account_id,is_paid'])
->get();
->with(['product']);
if (HostingAccount::tracksLocalMailboxes()) {
$accountsQuery->with(['mailboxes:id,hosting_account_id,is_paid']);
}
$accounts = $accountsQuery->get();
return $accounts
->flatMap(fn (HostingAccount $account): array => $this->recommendationsForAccount($account))
@@ -37,7 +42,7 @@ class UpsellRecommendationService
*/
public function recommendationsForAccount(HostingAccount $account): array
{
$account->loadMissing(['product', 'mailboxes']);
$account->loadMissing(['product']);
$recommendations = [];
$upgradeProduct = $this->nextUpgradeProduct($account);
@@ -75,8 +80,8 @@ class UpsellRecommendationService
}
$freeAllowance = $account->freeEmailAllowance();
$mailboxCount = $account->mailboxes->count();
if ($freeAllowance !== null && $mailboxCount > $freeAllowance) {
$mailboxCount = $account->loadedMailboxes()->count();
if (HostingAccount::tracksLocalMailboxes() && $freeAllowance !== null && $mailboxCount > $freeAllowance) {
$extraMailboxes = $mailboxCount - $freeAllowance;
$addonAmount = self::EMAIL_ADDON_QUANTITY * self::EMAIL_ADDON_UNIT_PRICE;