chunk(10, function ($servers) { /** @var Server $server */ foreach ($servers as $server) { /** @var Product $product */ $product = $server->product; /** @var User $user */ $user = $server->user; //charge credits / suspend server if ($user->credits >= $product->getHourlyPrice()) { $this->line("{$user->name} Current credits: {$user->credits} Credits to be removed: {$product->getHourlyPrice()}"); $user->decrement('credits', $product->getHourlyPrice()); } else { try { //suspend server $this->line("{$server->name} from user: {$user->name} has been suspended!"); $server->suspend(); //add user to notify list if (!in_array($user, $this->usersToNotify)) { array_push($this->usersToNotify, $user); } } catch (\Exception $exception) { $this->error($exception->getMessage()); } } } }); return $this->notifyUsers(); } /** * @return bool */ public function notifyUsers() { if (!empty($this->usersToNotify)) { /** @var User $user */ foreach ($this->usersToNotify as $user) { $this->line("Notified user: {$user->name}"); $user->notify(new ServersSuspendedNotification()); } } //reset array $this->usersToNotify = []; return true; } }