$saidaVacina->id, 'entrada_vacina_id' => $saidaVacina->entrada_vacina_id, 'data_saida' => Carbon::createFromFormat('Y-m-d', $saidaVacina->saida->data_saida)->format('d/m/Y'), 'motivo' => self::getMotivos()->firstWhere('id', $saidaVacina->saida->motivo_id) ? self::getMotivos()->firstWhere('id', $saidaVacina->saida->motivo_id)->nome : '', 'quantidade' => $saidaVacina->quantidade, 'observacao' => $saidaVacina->saida->observacao, 'material' => $saidaVacina->vacina->nome, 'lote' => $saidaVacina->entradaVacinaOrigem->lote, 'validade' => $saidaVacina->entradaVacinaOrigem->data_validade_lote->format('d/m/Y'), ]); $entradaVacina = DB::table('imunizacao_entrada_vacina') ->select([ 'cadastro_unidade.nome_fantasia AS unidade', 'cadastro_infraestrutura.telefone', 'cadastro_infraestrutura.endereco_id', 'cadastro_lotacao.usuario_id', DB::raw(" CASE WHEN cadastro_infraestrutura.principal THEN cadastro_unidade.nome_fantasia ELSE cadastro_infraestrutura.nome END AS infraestrutura_nome "), ]) ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_lotacao', 'cadastro_lotacao.infraestrutura_id', 'cadastro_infraestrutura.id') ->where('imunizacao_entrada_vacina.id', $resultado['entrada_vacina_id']) ->first(); $endereco = Endereco::findOrFail($entradaVacina->endereco_id)->completo; $usuario = Usuario::findOrFail($saidaVacina->lotacao->usuario_id)->nome; $resultado['endereco'] = $endereco; $resultado['usuario'] = $usuario; return $resultado->merge($entradaVacina); } private static function getMotivos() { return DB::table('imunizacao_saida_motivo') ->select([ 'id', 'nome', ]) ->orderBy('nome') ->get(); } public function __invoke($id) { $data = self::getTemplate($id); return Pdf1::generate(self::TITLE, self::TEMPLATE, [ 'data_saida' => $data['data_saida'], 'motivo' => $data['motivo'], 'quantidade' => $data['quantidade'], 'observacao' => $data['observacao'], 'material' => $data['material'], 'lote' => $data['lote'], 'validade' => $data['validade'], 'unidade' => $data['unidade'], 'local_atendimento' => $data['infraestrutura_nome'], 'telefone' => MaskUtil::getPhoneMasked($data['telefone']), 'endereco' => $data['endereco'], 'usuario' => $data['usuario'], ]); } }