Files
ploi-core/app/Models/Package.php
Ralph J. Smit def9e3c722 Style
2023-09-28 20:50:07 +02:00

66 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use App\Casts\PermissionCast;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class Package extends Model
{
use HasFactory;
const CURRENCY_EURO = 'eur';
const CURRENCY_USD = 'usd';
const CURRENCY_NOK = 'nok';
const CURRENCY_AUD = 'aud';
const CURRENCY_CAD = 'cad';
const CURRENCY_GBP = 'gbp';
const CURRENCY_INR = 'inr';
const CURRENCY_THB = 'thb';
const CURRENCY_BRL = 'brl';
const CURRENCY_NZD = 'nz';
public $fillable = [
'name',
'stripe_plan_id', // This does not reflect an internal database relation, it reflects the plan ID from the PSP
'currency',
'price_hourly',
'price_monthly',
'price_yearly',
'maximum_sites',
'maximum_servers',
'site_permissions',
'server_permissions',
];
public $casts = [
'site_permissions' => PermissionCast::class,
'server_permissions' => PermissionCast::class,
];
public function users(): HasMany
{
return $this->hasMany(User::class);
}
public function providers(): BelongsToMany
{
return $this->belongsToMany(Provider::class)->using(PackageProvider::class);
}
public function providerPlans(): BelongsToMany
{
return $this->belongsToMany(ProviderPlan::class);
}
protected static function booted(): void
{
static::deleting(function (self $package) {
$package->users()->update(['package_id' => null]);
});
}
}