{$server->getKeyName()} = $client->generateId($size = 21); }); static::deleting(function (Server $server) { $response = Pterodactyl::client()->delete("/application/servers/{$server->pterodactyl_id}"); if ($response->failed() && !is_null($server->pterodactyl_id)) { //only return error when it's not a 404 error if ($response['errors'][0]['status'] != '404') { throw new Exception($response['errors'][0]['code']); } } }); } /** * @return bool */ public function isSuspended() { return !is_null($this->suspended); } /** * @return PromiseInterface|Response */ public function getPterodactylServer() { return Pterodactyl::client()->get("/application/servers/{$this->pterodactyl_id}"); } /** * * @throws Exception */ public function suspend() { $response = Pterodactyl::suspendServer($this); if ($response->successful()) { $this->update([ 'suspended' => now() ]); } return $this; } /** * @throws Exception */ public function unSuspend() { $response = Pterodactyl::unSuspendServer($this); if ($response->successful()) { $this->update([ 'suspended' => null ]); } return $this; } /** * @return HasOne */ public function product() { return $this->hasOne(Product::class, 'id', 'product_id'); } /** * @return BelongsTo */ public function user() { return $this->belongsTo(User::class, 'user_id', 'id'); } }