has('em_atendimento') && request()->em_atendimento == true) { $declaracoes = $this->getDeclaracoesNaoSalvas($atendimentoId); AtendimentoService::saveLogImpressao(request()->atendimento_id, AtendimentoImpressaoTipo::DECLARACAO_COMPARECIMENTO); } else { $declaracoes = $this->getDeclaracoes($atendimentoId); } return Pdf1::generate(self::TITLE, self::TEMPLATE, compact('declaracoes')); } private function getDeclaracoesNaoSalvas($pacienteId) { $paciente = Paciente::findOrFail($pacienteId); $lotacao = Lotacao::findOrFail(auth()->payload()->get('lotacao_id')); $centroCusto = CentroCusto::findOrFail(auth()->payload()->get('centro_custo_id')); $declaracoes[] = [ 'paciente' => [ 'nome' => $paciente->cidadao->nome, 'nome_social' => $paciente->cidadao->nome_social, ], 'nome_acompanhante' => request()->nome_acompanhante, 'motivo_comparecimento' => request()->motivo_comparecimento, 'data' => Carbon::now()->format('d/m/Y'), 'entrada' => request()->entrada, 'saida' => request()->saida, 'unidade' => $centroCusto->infraestrutura->unidade->nome_fantasia, 'infraestrutura' => $centroCusto->infraestrutura->nome, 'turno' => !isset(request()->turno['nome']) ? null : Str::lower(request()->turno['nome']), 'informacoes_administrativas' => [ 'usuario_nome' => $lotacao->usuario->cidadao->nome, 'ocupacao_descricao' => $lotacao->ocupacao->codigo . ' - ' . $lotacao->ocupacao->nome, 'documento' => $lotacao->usuario->registro_tipo_id ? ($lotacao->usuario->registro_tipo_id === TipoRegistroUsuario::OUTRO ? $lotacao->usuario->registro_tipo_outro : $lotacao->usuario->registroTipo->sigla ) . ": {$lotacao->usuario->registro_numero}" : 'Conselho profissional: NÃO INFORMADO', ], ]; $data = [ 'declaracoes' => $declaracoes, ]; return $data; } private function getDeclaracoes($atendimentoId) { $atendimento = Atendimento::findOrFail($atendimentoId); $declaracoes = []; $paraAssinaturaEletronica = request()->para_assinatura_eletronica === true || (DataUtil::isStringBoolean(request()->para_assinatura_eletronica) && DataUtil::isStringTrue(request()->para_assinatura_eletronica)); $atendimento->declaracoesComparecimento() ->where(fn ($q) => $q ->whereDoesntHave('soap') ->orWhereHas('soap', fn ($q) => $q ->where('is_rascunho', false) ) ) ->orderByDesc('created_at') ->get(['id']) ->each(function ($declaracao) use (&$declaracoes) { $declaracoes[] = GerenciamentoDiarioService::getDeclaracaoComparecimentoPrintData($declaracao->id); }); $data = [ 'declaracoes' => $declaracoes, 'paraAssinar' => $paraAssinaturaEletronica, ]; return $data; } }