Files
rkm-conectasus-ci-sandbox/api/app/Models/PainelSenha/Fila.php
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

176 lines
4.7 KiB
PHP

<?php
namespace App\Models\PainelSenha;
use App\Models\Ambulatorio\Atendimento as AmbulatorioAtendimento;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Models\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Fila extends Model
{
use SoftDeletes;
protected $table = 'painel_senha_fila';
protected $fillable = [
'centro_custo_id',
'opcao_entrada_id',
'opcao_entrada_destino_id',
'prioridade_id',
'status_id',
'paciente_id',
'senha',
'evadido',
'motivo_evasao',
'motivo_cancelamento_evasao',
'finalizado',
'emitido_em',
'atualizado_em',
'reaberto_em',
'reabertura_lotacao_id',
];
protected $appends = [
'data_emissao',
'hora_emissao',
];
protected $hidden = [
'centroCusto',
'opcaoEntrada',
'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',
];
public static function boot()
{
parent::boot();
self::created(function($model) {
$model = (object) $model->fresh()->getRawOriginal();
FilaHistorico::create([
'fila_id' => $model->id,
'centro_custo_id' => $model->centro_custo_id,
'opcao_entrada_id' => $model->opcao_entrada_id,
'opcao_entrada_destino_id' => $model->opcao_entrada_destino_id,
'prioridade_id' => $model->prioridade_id,
'status_id' => $model->status_id,
'senha' => $model->senha,
'evadido' => $model->evadido,
'motivo_evasao' => $model->motivo_evasao,
'motivo_cancelamento_evasao' => $model->motivo_cancelamento_evasao,
'finalizado' => $model->finalizado,
'emitido_em' => $model->emitido_em,
'atualizado_em' => $model->atualizado_em,
]);
});
self::updated(function($model) {
$model = (object) $model->fresh()->getRawOriginal();
FilaHistorico::create([
'fila_id' => $model->id,
'centro_custo_id' => $model->centro_custo_id,
'opcao_entrada_id' => $model->opcao_entrada_id,
'opcao_entrada_destino_id' => $model->opcao_entrada_destino_id,
'prioridade_id' => $model->prioridade_id,
'status_id' => $model->status_id,
'senha' => $model->senha,
'evadido' => $model->evadido,
'motivo_evasao' => $model->motivo_evasao,
'motivo_cancelamento_evasao' => $model->motivo_cancelamento_evasao,
'finalizado' => $model->finalizado,
'emitido_em' => $model->emitido_em,
'atualizado_em' => $model->atualizado_em,
]);
});
}
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function opcaoEntrada()
{
return $this->belongsTo(OpcaoEntrada::class)->withTrashed();
}
public function opcaoEntradaDestino()
{
return $this->belongsTo(OpcaoEntrada::class)->withTrashed();
}
public function status()
{
return $this->belongsTo(Status::class);
}
public function prioridade()
{
return $this->belongsTo(Prioridade::class);
}
public function reaberturaLotacao()
{
return $this->belongsTo(Lotacao::class);
}
public function historico()
{
return $this->hasMany(FilaHistorico::class);
}
public function ambulatorioAtendimento()
{
return $this->hasOne(AmbulatorioAtendimento::class);
}
public function getSenhaAttribute($value)
{
return $this->opcaoEntrada->sigla . $value;
}
public function getDataEmissaoAttribute()
{
return $this->created_at->format('d/m/Y');
}
public function getHoraEmissaoAttribute()
{
return $this->created_at->format('H:i:s');
}
public function chamadas()
{
return $this->hasMany(Chamada::class)->where('status_id', $this->status_id);
}
public function getIsAllowedToDeleteAttribute()
{
return $this->centroCusto()
->exists();
}
public function getOpcaoEntradaAtualAttribute()
{
return $this->opcaoEntradaDestino ?? $this->opcaoEntrada;
}
public function paciente()
{
return $this->belongsTo(Paciente::class)->withTrashed();
}
}