TenantAtlas/app/Models/Policy.php
2025-12-25 01:20:04 +01:00

59 lines
1.2 KiB
PHP

<?php
namespace App\Models;
use App\Support\Concerns\InteractsWithODataTypes;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Policy extends Model
{
use HasFactory;
use InteractsWithODataTypes;
protected $guarded = [];
protected $casts = [
'metadata' => 'array',
'last_synced_at' => 'datetime',
'ignored_at' => 'datetime',
];
public function tenant(): BelongsTo
{
return $this->belongsTo(Tenant::class);
}
public function versions(): HasMany
{
return $this->hasMany(PolicyVersion::class);
}
public function backupItems(): HasMany
{
return $this->hasMany(BackupItem::class);
}
public function scopeActive($query)
{
return $query->whereNull('ignored_at');
}
public function scopeIgnored($query)
{
return $query->whereNotNull('ignored_at');
}
public function ignore(): void
{
$this->update(['ignored_at' => now()]);
}
public function unignore(): void
{
$this->update(['ignored_at' => null]);
}
}