Files
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

133 lines
3.1 KiB
PHP

<?php
namespace App\Models\Cadastro\Estabelecimento;
use App\Models\Ambulatorio\ParametrizacaoInfraestrutura as AmbulatorioParametrizacaoInfraestrutura;
use App\Models\Cadastro\Localizacao\Endereco;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use App\Models\ExameImagem\Agendamento\Agendamento;
use App\Models\ExameImagem\CotaPrestador;
use App\Models\ExameImagem\Jornada\Jornada;
use App\Models\ExameImagem\Parametrizacao;
use App\Models\ExameLaboratorial\Parametrizacao\Unidade as ExameLaboratorialUnidade;
use App\Models\ExameLaboratorial\Parametrizacao\UnidadeSolicitanteExame;
use App\Models\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Infraestrutura extends Model
{
use SoftDeletes;
protected $table = 'cadastro_infraestrutura';
protected $casts = [
'principal' => 'boolean',
'ativo' => 'boolean'
];
protected $fillable = [
'infraestrutura_id',
'principal',
'nome',
'telefone',
'ativo',
'endereco_id'
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
'deleted_at',
'deleted_lotacao_id',
'deleted_centro_custo_id',
'unidade_id',
'endereco_id',
];
protected $with = [
'endereco'
];
public function parametrizacaoExameImagem()
{
return $this->hasOne(Parametrizacao::class);
}
public function jornadaExameImagem()
{
return $this->hasMany(Jornada::class);
}
public function cotaPrestadorExameImagem()
{
return $this->hasOne(CotaPrestador::class);
}
public function unidade()
{
return $this->belongsTo(Unidade::class);
}
public function infraestrutura()
{
return $this->belongsTo(Infraestrutura::class);
}
public function exameLaboratorialUnidade()
{
return $this->hasOne(ExameLaboratorialUnidade::class);
}
public function exameLaboratorialUnidadeSolicitanteExame()
{
return $this->hasOne(UnidadeSolicitanteExame::class);
}
public function agendamentosExameImagem()
{
return $this->hasOne(Agendamento::class);
}
public function exameLaboratorialUnidadeCotas()
{
return $this->hasOne(Cota::class);
}
public function endereco()
{
return $this->belongsTo(Endereco::class);
}
public function centrosCusto()
{
return $this->hasMany(CentroCusto::class);
}
public function lotacoes()
{
return $this->hasMany(Lotacao::class);
}
public function ambulatorioParametrizacaoJornadaInfraestrutura()
{
return $this->hasOne(AmbulatorioParametrizacaoInfraestrutura::class);
}
public function getNomeAttribute($nome)
{
return $this->principal ? $this->unidade->nome_fantasia : $nome;
}
public function getIsAllowedToDeleteAttribute()
{
return $this->hasNoOne([
'centrosCusto',
'lotacoes',
]);
}
}