Compare commits

...

1 Commits

Author SHA1 Message Date
kelly
5efd21a5ef fix: use business_user pivot for User queries
Users don't have a business_id column - they're related to businesses
through the business_user pivot table.

Changed from broken pattern:
- User::where('business_id', $id)

To correct pattern:
- User::whereHas('businesses', fn($q) => $q->where('businesses.id', $id))

Files fixed:
- ThreadController.php (team members dropdown)
- DealController.php (team members dropdown x2)
- CrmChannelService.php (buyer notifications)
- CrmInternalNote.php (mention resolution)
- SendCrmDailyDigest.php (recipient lookup)
- GenerateBriefingsCommand.php (user lookup x3)
2025-12-03 17:18:42 -07:00
6 changed files with 10 additions and 10 deletions

View File

@@ -102,7 +102,7 @@ class GenerateBriefingsCommand extends Command
}
// Get users who should receive briefings (sellers/admins)
$users = User::where('business_id', $businessId)
$users = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $businessId))
->whereIn('user_type', ['seller', 'both'])
->where('is_active', true)
->get();
@@ -150,7 +150,7 @@ class GenerateBriefingsCommand extends Command
$totalUsers = 0;
foreach ($businesses as $business) {
$userCount = User::where('business_id', $business->id)
$userCount = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))
->whereIn('user_type', ['seller', 'both'])
->where('is_active', true)
->count();
@@ -164,7 +164,7 @@ class GenerateBriefingsCommand extends Command
$bar->start();
foreach ($businesses as $business) {
$users = User::where('business_id', $business->id)
$users = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))
->whereIn('user_type', ['seller', 'both'])
->where('is_active', true)
->get();

View File

@@ -229,13 +229,13 @@ class SendCrmDailyDigest extends Command
if ($business->crm_notification_emails) {
$emails = array_map('trim', explode(',', $business->crm_notification_emails));
return User::where('business_id', $business->id)
return User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))
->whereIn('email', $emails)
->get();
}
// Otherwise, send to the business owner or first admin
return User::where('business_id', $business->id)
return User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))
->where(function ($q) {
$q->where('is_business_owner', true)
->orWhere('user_type', 'admin');

View File

@@ -58,7 +58,7 @@ class DealController extends Controller
$pipelines = CrmPipeline::forBusiness($business->id)->active()->get();
// Get team members
$teamMembers = User::where('business_id', $business->id)->get();
$teamMembers = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))->get();
// Calculate stats
$stats = [
@@ -84,7 +84,7 @@ class DealController extends Controller
$accounts = Business::whereHas('ordersAsCustomer', function ($q) use ($business) {
$q->whereHas('items.product.brand', fn ($b) => $b->where('business_id', $business->id));
})->get();
$teamMembers = User::where('business_id', $business->id)->get();
$teamMembers = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))->get();
$brands = Brand::where('business_id', $business->id)->get();
return view('seller.crm.deals.create', compact('pipelines', 'contacts', 'accounts', 'teamMembers', 'brands'));

View File

@@ -65,7 +65,7 @@ class ThreadController extends Controller
->paginate(25);
// Get team members for assignment dropdown
$teamMembers = User::where('business_id', $business->id)->get();
$teamMembers = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $business->id))->get();
// Get available channels
$channels = $this->channelService->getAvailableChannels($business->id);

View File

@@ -86,7 +86,7 @@ class CrmInternalNote extends Model
}
foreach (array_unique($matches[1]) as $username) {
$user = User::where('business_id', $this->business_id)
$user = User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $this->business_id))
->where('name', 'like', "%{$username}%")
->first();

View File

@@ -338,7 +338,7 @@ class CrmChannelService
}
// Create notification for buyer users
$users = \App\Models\User::where('business_id', $contact->buyer_business_id)->get();
$users = \App\Models\User::whereHas('businesses', fn ($q) => $q->where('businesses.id', $contact->buyer_business_id))->get();
foreach ($users as $user) {
$user->notify(new \Modules\Crm\Notifications\CrmInAppNotification($message));