| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
							- <?php
 - 
 - namespace App\Concerns;
 - 
 - use App\Models\Notification;
 - use App\Models\User;
 - use App\Scopes\CurrentCompanyScope;
 - use Illuminate\Database\Eloquent\ModelNotFoundException;
 - use Illuminate\Database\Eloquent\Relations\BelongsTo;
 - use Illuminate\Support\Facades\Auth;
 - use Illuminate\Support\Facades\Log;
 - use Wallo\FilamentCompanies\FilamentCompanies;
 - 
 - trait CompanyOwned
 - {
 -     public static function bootCompanyOwned(): void
 -     {
 -         static::creating(static function ($model) {
 -             if (empty($model->company_id)) {
 -                 $companyId = session('current_company_id');
 - 
 -                 if (! $companyId && ($user = Auth::user()) && ($companyId = $user->current_company_id)) {
 -                     session(['current_company_id' => $companyId]);
 -                 }
 - 
 -                 // For notifications in job context, get company_id from the notifiable user
 -                 if (! $companyId && $model instanceof Notification && $model->notifiable_type === User::class) {
 -                     $notifiable = $model->notifiable;
 -                     if ($notifiable instanceof User) {
 -                         $companyId = $notifiable->current_company_id;
 -                     }
 -                 }
 - 
 -                 if ($companyId) {
 -                     $model->company_id = $companyId;
 -                 } else {
 -                     Log::error('CurrentCompanyScope: No company_id found for user ' . Auth::id());
 - 
 -                     throw new ModelNotFoundException('CurrentCompanyScope: No company_id set in the session, user, or database.');
 -                 }
 -             }
 -         });
 - 
 -         static::addGlobalScope(new CurrentCompanyScope);
 -     }
 - 
 -     public function company(): BelongsTo
 -     {
 -         return $this->belongsTo(FilamentCompanies::companyModel(), 'company_id');
 -     }
 - }
 
 
  |