55 lines
2.2 KiB
PHP
55 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Resources\Nas;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
|
|
|
class NasResource extends JsonResource
|
|
{
|
|
public function toArray(Request $request): array
|
|
{
|
|
$data = $this->resource->attributesToArray();
|
|
if ($this->resource instanceof \App\Models\NasMikrotik) $data['effective_backend_mode'] = $this->resource->effectiveBackendMode();
|
|
unset($data['api_password'], $data['radius_secret'], $data['community'], $data['auth_password'], $data['privacy_password'], $data['password']);
|
|
|
|
$data['tenant'] = $this->whenLoaded('tenant', fn () => [
|
|
'id' => $this->tenant->id,
|
|
'tenant_code' => $this->tenant->tenant_code,
|
|
'tenant_name' => $this->tenant->tenant_name,
|
|
]);
|
|
$data['scripts'] = $this->whenLoaded('scripts', fn () => $this->scripts->map(fn ($policy) => [
|
|
'id' => $policy->id,
|
|
'code' => $policy->code,
|
|
'name' => $policy->name,
|
|
'service_type' => $policy->service_type,
|
|
'event' => $policy->event,
|
|
'current_version' => $policy->current_version,
|
|
'latest_version' => $policy->relationLoaded('latestVersion') && $policy->latestVersion ? [
|
|
'id' => $policy->latestVersion->id,
|
|
'version' => $policy->latestVersion->version,
|
|
] : null,
|
|
'pivot' => [
|
|
'event' => $policy->pivot->event,
|
|
'nas_script_policy_version_id' => $policy->pivot->nas_script_policy_version_id,
|
|
'enabled' => (bool) $policy->pivot->enabled,
|
|
],
|
|
]));
|
|
|
|
foreach ([
|
|
'api_password' => 'has_api_password',
|
|
'radius_secret' => 'has_radius_secret',
|
|
'community' => 'has_community',
|
|
'auth_password' => 'has_auth_password',
|
|
'privacy_password' => 'has_privacy_password',
|
|
'password' => 'has_password',
|
|
] as $column => $flag) {
|
|
if (array_key_exists($column, $this->resource->getAttributes())) {
|
|
$data[$flag] = filled($this->resource->getRawOriginal($column));
|
|
}
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
}
|