/
DATKAI
/
ITCUP
Обзор
Документация
Войти
/
DATKAI
/
ITCUP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
app/Models/Asset.php
100 строк
2 KB
ITCUP Admin
feat(assets): менеджер бэкапов конфигураций для категорий оборудования
21 апр 2026, 21:53
21 апр 2026, 21:53
33e5814
Код
Авторство
О чём код?
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; class Asset extends Model { protected $fillable = [ 'inventory_number', 'name', 'asset_category_id', 'serial_number', 'manufacturer', 'model', 'status', 'location_id', 'assigned_to', 'purchase_date', 'warranty_expires', 'purchase_cost', 'custom_field_values', 'notes', // backup 'backup_enabled', 'backup_type', 'backup_host', 'backup_port', 'backup_username', 'backup_password', 'backup_path', 'backup_command', 'backup_retention_count', 'backup_extension', 'web_ui_url', 'last_backup_at', 'last_backup_status', 'last_backup_error', ]; protected $casts = [ 'custom_field_values' => 'array', 'purchase_date' => 'date', 'warranty_expires' => 'date', 'purchase_cost' => 'decimal:2', 'backup_enabled' => 'boolean', 'backup_password' => 'encrypted', 'last_backup_at' => 'datetime', ]; protected $hidden = [ 'backup_password', ]; public const STATUSES = [ 'in_use' => 'В работе', 'in_stock' => 'На складе', 'in_repair' => 'В ремонте', 'decommissioned' => 'Списано', ]; public function category(): BelongsTo { return $this->belongsTo(AssetCategory::class, 'asset_category_id'); } public function location(): BelongsTo { return $this->belongsTo(Location::class); } public function assignedUser(): BelongsTo { return $this->belongsTo(User::class, 'assigned_to'); } public function backups(): HasMany { return $this->hasMany(AssetBackup::class)->latest(); } public function isWarrantyExpired(): bool { return $this->warranty_expires && $this->warranty_expires->isPast(); } public function isWarrantyExpiringSoon(int $days = 30): bool { return $this->warranty_expires && !$this->warranty_expires->isPast() && $this->warranty_expires->diffInDays(now()) <= $days; } public function backupManagerAvailable(): bool { return $this->category?->has_backup_manager === true; } }