Send notification when server is created for user

This commit is contained in:
Dane Everitt 2016-10-14 15:58:52 -04:00
parent a115c71433
commit c989dd0cc2
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
3 changed files with 71 additions and 17 deletions

View file

@ -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
];
}
} }

View 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!');
}
}

View file

@ -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' => [