Send notification when server is created for user
This commit is contained in:
parent
a115c71433
commit
c989dd0cc2
3 changed files with 71 additions and 17 deletions
|
@ -57,7 +57,7 @@ class AccountCreated extends Notification implements ShouldQueue
|
||||||
*/
|
*/
|
||||||
public function via($notifiable)
|
public function via($notifiable)
|
||||||
{
|
{
|
||||||
return ['mail', 'database'];
|
return ['mail'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,17 +74,4 @@ class AccountCreated extends Notification implements ShouldQueue
|
||||||
->action('Setup Your Account', url('/auth/password/reset/' . $this->token . '?email=' . $notifiable->email));
|
->action('Setup Your Account', url('/auth/password/reset/' . $this->token . '?email=' . $notifiable->email));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the array representation of the notification.
|
|
||||||
*
|
|
||||||
* @param mixed $notifiable
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function toArray($notifiable)
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'email' => $notifiable->email,
|
|
||||||
'token' => $this->token
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
56
app/Notifications/ServerCreated.php
Normal file
56
app/Notifications/ServerCreated.php
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Pterodactyl\Notifications;
|
||||||
|
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Notifications\Notification;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Notifications\Messages\MailMessage;
|
||||||
|
|
||||||
|
class ServerCreated extends Notification implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Queueable;
|
||||||
|
|
||||||
|
public $server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new notification instance.
|
||||||
|
*
|
||||||
|
* @param array $server
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(array $server)
|
||||||
|
{
|
||||||
|
$this->server = (object) $server;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the notification's delivery channels.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function via($notifiable)
|
||||||
|
{
|
||||||
|
return ['mail'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the mail representation of the notification.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||||
|
*/
|
||||||
|
public function toMail($notifiable)
|
||||||
|
{
|
||||||
|
return (new MailMessage)
|
||||||
|
->line('A new server as been assigned to your account.')
|
||||||
|
->line('Server Name: ' . $this->server->name)
|
||||||
|
->line('Memory: ' . $this->server->memory . ' MB')
|
||||||
|
->line('Node: ' . $this->server->node)
|
||||||
|
->line('Type: ' . $this->server->service . ' - ' . $this->server->option)
|
||||||
|
->action('Peel Off the Protective Wrap', route('server.index', $this->server->uuidShort))
|
||||||
|
->line('Please let us know if you have any additional questions or concerns!');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -32,6 +32,7 @@ use Log;
|
||||||
use Pterodactyl\Models;
|
use Pterodactyl\Models;
|
||||||
use Pterodactyl\Services\UuidService;
|
use Pterodactyl\Services\UuidService;
|
||||||
use Pterodactyl\Services\DeploymentService;
|
use Pterodactyl\Services\DeploymentService;
|
||||||
|
use Pterodactyl\Notifications\ServerCreated;
|
||||||
|
|
||||||
use Pterodactyl\Exceptions\DisplayException;
|
use Pterodactyl\Exceptions\DisplayException;
|
||||||
use Pterodactyl\Exceptions\AccountNotFoundException;
|
use Pterodactyl\Exceptions\AccountNotFoundException;
|
||||||
|
@ -113,9 +114,9 @@ class ServerRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_int($data['owner'])) {
|
if (is_int($data['owner'])) {
|
||||||
$user = Models\User::select('id')->where('id', $data['owner'])->first();
|
$user = Models\User::select('id', 'email')->where('id', $data['owner'])->first();
|
||||||
} else {
|
} else {
|
||||||
$user = Models\User::select('id')->where('email', $data['owner'])->first();
|
$user = Models\User::select('id', 'email')->where('email', $data['owner'])->first();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
|
@ -229,7 +230,7 @@ class ServerRepository
|
||||||
// Add Server to the Database
|
// Add Server to the Database
|
||||||
$server = new Models\Server;
|
$server = new Models\Server;
|
||||||
$genUuid = $uuid->generate('servers', 'uuid');
|
$genUuid = $uuid->generate('servers', 'uuid');
|
||||||
$genShortUuid = $uuid->generateShort('servers', 'uuidShort', $generatedUuid);
|
$genShortUuid = $uuid->generateShort('servers', 'uuidShort', $genUuid);
|
||||||
$server->fill([
|
$server->fill([
|
||||||
'uuid' => $genUuid,
|
'uuid' => $genUuid,
|
||||||
'uuidShort' => $genShortUuid,
|
'uuidShort' => $genShortUuid,
|
||||||
|
@ -274,6 +275,16 @@ class ServerRepository
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Queue Notification Email
|
||||||
|
$user->notify((new ServerCreated([
|
||||||
|
'name' => $server->name,
|
||||||
|
'memory' => $server->memory,
|
||||||
|
'node' => $node->name,
|
||||||
|
'service' => $service->name,
|
||||||
|
'option' => $option->name,
|
||||||
|
'uuidShort' => $server->uuidShort
|
||||||
|
])));
|
||||||
|
|
||||||
$client = Models\Node::guzzleRequest($node->id);
|
$client = Models\Node::guzzleRequest($node->id);
|
||||||
$client->request('POST', '/servers', [
|
$client->request('POST', '/servers', [
|
||||||
'headers' => [
|
'headers' => [
|
||||||
|
|
Loading…
Reference in a new issue