Files
KarbonDatacenter/app/Models/DataCentre.php
2026-06-24 20:32:14 +08:00

70 lines
1.8 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\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\Activitylog\Support\LogOptions;
use Spatie\Activitylog\Models\Concerns\LogsActivity;
class DataCentre extends Model
{
use HasFactory, SoftDeletes, LogsActivity;
protected $fillable = [
'nama_pusat_data',
'tajuk_permohonan',
'lokasi_pusat_data',
'alamat',
'keluasan_tapak',
'it_load',
'status',
'current_consultant_id',
];
protected function casts(): array
{
return [
'keluasan_tapak' => 'decimal:2',
'it_load' => 'decimal:2',
];
}
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logOnly(['nama_pusat_data', 'tajuk_permohonan', 'status', 'current_consultant_id', 'it_load', 'keluasan_tapak'])
->logOnlyDirty()
->dontLogEmptyChanges()
->useLogName('pusat_data');
}
public function currentConsultant(): BelongsTo
{
return $this->belongsTo(Consultant::class, 'current_consultant_id');
}
public function assignments(): HasMany
{
return $this->hasMany(DataCentreConsultantAssignment::class)->latest('start_date');
}
public function activeAssignment()
{
return $this->hasOne(DataCentreConsultantAssignment::class)->where('is_active', true);
}
public function submissions(): HasMany
{
return $this->hasMany(Submission::class);
}
public function scopeAktif($query)
{
return $query->where('status', 'aktif');
}
}