Files
keystone/app/Models/Organisation.php
Harry Bayliss 5b977c1f41
Some checks failed
CI / Lint (push) Failing after 22s
CI / Tests (push) Failing after 33s
wowowowowo
2026-05-28 15:15:41 +01:00

84 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Str;
class Organisation extends Model
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory;
protected $guarded = [];
public function owner(): BelongsTo
{
return $this->belongsTo(User::class, 'owner_id');
}
public function members(): BelongsToMany
{
return $this->belongsToMany(User::class)
->withPivot('role')
->as('membership')
->using(OrganisationUser::class)
->withTimestamps();
}
public function invitations(): HasMany
{
return $this->hasMany(OrganisationInvitation::class);
}
public function servers(): HasMany
{
return $this->hasMany(Server::class);
}
public function applications(): HasMany
{
return $this->hasMany(Application::class);
}
public function services(): HasMany
{
return $this->hasMany(Service::class);
}
public function registries(): HasMany
{
return $this->hasMany(Registry::class);
}
public function sourceProviders(): HasMany
{
return $this->hasMany(SourceProvider::class);
}
public function providers(): HasMany
{
return $this->hasMany(Provider::class);
}
public function networks(): HasMany
{
return $this->hasMany(Network::class);
}
public static function createUniqueSlug(string $name): string
{
$slug = Str::slug($name);
$count = 2;
while (Organisation::where('slug', $slug)->exists()) {
$slug = Str::slug($name).'-'.$count++;
}
return $slug;
}
}