phoneListUtil = $phoneListUtil; } public function handle() { $businesses = Business::select('id', 'crm_settings')->get(); foreach ($businesses as $business) { $settings = $this->phoneListUtil->getReminderSettings($business->id); if (! $settings['enabled']) { continue; } $cutoff = Carbon::now()->subDays($settings['days']); $today = Carbon::today(); $phones = CrmPhoneFollowUp::where('business_id', $business->id) ->where('status', 'pending') ->where(function ($q) use ($cutoff) { $q->whereNull('last_follow_up_at') ->where('created_at', '<=', $cutoff) ->orWhere(function ($q2) use ($cutoff) { $q2->whereNotNull('last_follow_up_at') ->where('last_follow_up_at', '<=', $cutoff); }); }) ->where(function ($q) use ($today) { $q->whereNull('last_reminder_at') ->orWhereDate('last_reminder_at', '<', $today); }) ->get(); foreach ($phones as $phone) { $users = collect(); if (! empty($phone->assigned_to)) { $assigned = User::find($phone->assigned_to); if (! empty($assigned)) { $users->push($assigned); } } $creator = User::find($phone->created_by); if (! empty($creator)) { $users->push($creator); } $users = $users->unique('id'); if ($users->isEmpty()) { continue; } $name = $phone->contact_name ?: $phone->mobile_number; $body = __('crm::lang.phone_list_reminder_body', [ 'name' => $name, 'number' => $phone->mobile_number, 'days' => $settings['days'], ]); Notification::send($users, new PhoneListReminderNotification($phone, $body)); $phone->update(['last_reminder_at' => now()]); } } } }