Files
docker-rconfig/app/Models/Device.php
2024-10-19 18:23:55 +00:00

109 lines
2.5 KiB
PHP

<?php
namespace App\Models;
use App\Casts\EncryptStringCast;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Device extends BaseModel
{
use HasFactory;
protected $casts = [
'device_password' => EncryptStringCast::class,
'device_enable_password' => EncryptStringCast::class,
];
public $fillable = [
'device_name',
'device_ip',
'device_port_override',
'device_username',
'device_password',
'device_enable_password',
'device_cred_id',
'device_main_prompt',
'device_enable_prompt',
'device_category_id',
'device_template',
'device_model',
'device_version',
'last_config_at'
];
//Make it available in the json response
protected $appends = ['view_url'];
// view url for search results
protected function viewUrl(): Attribute
{
return Attribute::make(
get: fn () => '/device/view/' . $this->id,
);
}
/**
* Get the vendor record associated with the device.
*/
public function vendor()
{
return $this->belongsToMany('App\Models\Vendor');
}
/**
* Get the cat record associated with the device.
*/
public function category()
{
return $this->belongsToMany('App\Models\Category');
}
/**
* Get the tag record associated with the device.
*/
public function tag()
{
return $this->belongsToMany('App\Models\Tag');
}
/**
* Get the Template record associated with the device.
*/
public function template()
{
return $this->belongsToMany('App\Models\Template');
}
public function lastConfig()
{
return $this->hasOne('App\Models\Config')->latestOfMany();
// order by by how ever you need it ordered to get the latest
}
/**
* Get the good config record associated with the device.
*/
public function config_good()
{
return $this->hasMany('App\Models\Config')->where('configs.download_status', '=', '1');
}
/**
* Get the bad config record associated with the device.
*/
public function config_unknown()
{
return $this->hasMany('App\Models\Config')->where('configs.download_status', '=', '2');
}
/**
* Get the bad config record associated with the device.
*/
public function config_bad()
{
return $this->hasMany('App\Models\Config')->where('configs.download_status', '=', '0');
}
}