From 5171f01852ed62ab7ac8f9dad445075ec8bdbb88 Mon Sep 17 00:00:00 2001 From: AVMG20 Date: Sat, 26 Jun 2021 00:24:44 +0200 Subject: [PATCH] added suspended server notification --- app/Console/Commands/ChargeCreditsCommand.php | 52 ++++++++++++--- .../ServersSuspendedNotification.php | 63 +++++++++++++++++++ 2 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 app/Notifications/ServersSuspendedNotification.php diff --git a/app/Console/Commands/ChargeCreditsCommand.php b/app/Console/Commands/ChargeCreditsCommand.php index 220483ad..e3bd5e7d 100644 --- a/app/Console/Commands/ChargeCreditsCommand.php +++ b/app/Console/Commands/ChargeCreditsCommand.php @@ -2,13 +2,11 @@ namespace App\Console\Commands; -use App\Classes\Pterodactyl; use App\Models\Product; use App\Models\Server; use App\Models\User; -use Carbon\Carbon; +use App\Notifications\ServersSuspendedNotification; use Illuminate\Console\Command; -use Illuminate\Support\Collection; class ChargeCreditsCommand extends Command { @@ -26,6 +24,13 @@ class ChargeCreditsCommand extends Command */ protected $description = 'Charge all users with active servers'; + + /** + * A list of users that have to be notified + * @var array + */ + protected $usersToNotify = []; + /** * Create a new command instance. * @@ -43,7 +48,7 @@ class ChargeCreditsCommand extends Command */ public function handle() { - return Server::whereNull('suspended')->chunk(10, function ($servers) { + Server::whereNull('suspended')->chunk(10, function ($servers) { /** @var Server $server */ foreach ($servers as $server) { /** @var Product $product */ @@ -51,15 +56,46 @@ class ChargeCreditsCommand extends Command /** @var User $user */ $user = $server->user; - #charge credits / suspend server - if ($user->credits >= $product->getHourlyPrice()){ + #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 { - $this->line("server {$server->name} has been suspended! "); - $server->suspend(); + 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 = array(); + return true; } } diff --git a/app/Notifications/ServersSuspendedNotification.php b/app/Notifications/ServersSuspendedNotification.php new file mode 100644 index 00000000..71d6db07 --- /dev/null +++ b/app/Notifications/ServersSuspendedNotification.php @@ -0,0 +1,63 @@ +subject('Your servers have been suspended!') + ->greeting('Your servers have been suspended!') + ->line("To unsuspend your server/s you need to purchase more credits.") + ->action('Purchase credits', route('store.index')) + ->line('If you have any questions please let us know.'); + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } +}