12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace App\Models\Pterodactyl;
- use App\Classes\PterodactylClient;
- use Illuminate\Database\Eloquent\Factories\HasFactory;
- use Illuminate\Database\Eloquent\Model;
- class Nest extends Model
- {
- use HasFactory;
- public $incrementing = false;
- public $fillable = [
- 'id',
- 'name',
- 'description',
- 'disabled',
- ];
- public static function boot()
- {
- parent::boot(); // TODO: Change the autogenerated stub
- static::deleting(function (Nest $nest) {
- $nest->eggs()->each(function (Egg $egg) {
- $egg->delete();
- });
- });
- }
- public static function syncNests()
- {
- $client = app(PterodactylClient::class);
- $nests = $client->getNests();
- //map response
- $nests = array_map(function ($nest) {
- return [
- 'id' => $nest['attributes']['id'],
- 'name' => $nest['attributes']['name'],
- 'description' => $nest['attributes']['description'],
- ];
- }, $nests);
- foreach ($nests as $nest) {
- self::query()->updateOrCreate([
- 'id' => $nest['id'],
- ], [
- 'name' => $nest['name'],
- 'description' => $nest['description'],
- 'disabled' => false,
- ]);
- }
- self::removeDeletedNests($nests);
- }
- /**
- * @description remove nests that have been deleted on pterodactyl
- *
- * @param array $nests
- */
- private static function removeDeletedNests(array $nests): void
- {
- $ids = array_map(function ($data) {
- return $data['id'];
- }, $nests);
- self::all()->each(function (Nest $nest) use ($ids) {
- if (! in_array($nest->id, $ids)) {
- $nest->delete();
- }
- });
- }
- public function eggs()
- {
- return $this->hasMany(Egg::class);
- }
- }
|