where('status', '=', 'pending') ->orderBy('created_at', 'ASC') ->limit($this->option('limit'), 1000) ->get() ; $results = []; if (! empty($notifications)) { foreach ($notifications as $n) { if (! isset($results[$n->contact_id])) { $results[$n->contact_id] = [ 'contact' => $n->contact->toArray(), 'tasks' => [] ]; } //else { $history = $n->task_history; $task = $history->task; if (! isset($results[$n->contact_id]['tasks'][$task->id])) { $results[$n->contact_id]['tasks'][$task->id] = [ 'history' => [] ]; } array_push($results[$n->contact_id]['tasks'][$task->id]['history'], $history->toArray()); //} } } if (count($results) > 0) { foreach ($results as $r) { $this->info('Sending notifications to '.$r['contact']['email']); try { Mail::to($r['contact']['email'])->send(new TaskNotification($r)); Notification::where('contact_id', '=', $r['contact']['id'])->update( ['status' => 'sent'] ); } catch (Exception $e) { Notification::where('contact_id', '=', $r['contact']['id'])->update( ['status' => 'error'] ); } } } } }