[ 'id' => $cadastro->endereco->id ?? null, 'logradouro_tipo_id' => $cadastro->endereco->logradouro->tipo->id ?? null, 'logradouro_tipo' => $cadastro->endereco->logradouro->tipo->descricao ?? null, 'bairro_id' => $cadastro->endereco->logradouro->bairro->id ?? null, 'logradouro_cep' => $cadastro ? MaskUtil::getCepMasked($cadastro->endereco->logradouro->cep) : null, 'loteamento' => $cadastro->endereco->loteamento ?? null, 'complemento' => $cadastro->endereco->complemento ?? null, 'referencia' => $cadastro->endereco->referencia ?? null, 'latitude' => $cadastro->endereco->latitude ?? null, 'longitude' => $cadastro->endereco->longitude ?? null, 'logradouro' => $cadastro ? [ 'municipio' => [ 'estado' => [ 'uf' => $cadastro->endereco->logradouro->municipio->estado->uf ?? null, ], 'nome' => $cadastro->endereco->logradouro->municipio->nome ?? null, ], 'bairro' => [ 'nome' => $cadastro->endereco->logradouro->bairro->nome ?? null, ], 'tipo' => [ 'descricao' => $cadastro->endereco->logradouro->tipo->descricao ?? null, ], 'nome' => $cadastro->endereco->logradouro->nome ?? null, 'id' => $cadastro->endereco->logradouro->id ?? null, 'cep' => $cadastro ? MaskUtil::getCepMasked($cadastro->endereco->logradouro->cep) : null, ] : null, 'numero' => $cadastro->endereco->numero ?? null, 'sem_numero' => $cadastro->endereco->sem_numero ?? null, 'latitude' => $cadastro->endereco->latitude ?? null, 'longitude' => $cadastro->endereco->longitude ?? null, ], 'residentes' => $cadastro ? self::getResidentes($cadastro->id) : [], ]; } public static function getResidentes($id) { return DB::table('cadastro_cidadao') ->select([ 'cadastro_cidadao.id AS id', 'cadastro_cidadao.nome AS nome', 'cadastro_cidadao.nome_social AS nome_social', 'cadastro_cidadao.cns', 'atencao_basica_cadastro_parentesco_responsavel.descricao AS parentesco', DB::raw(' ( CASE WHEN cadastro_cidadao.nome_mae IS NULL THEN "Não informado" ELSE cadastro_cidadao.nome_mae END ) AS nome_mae' ), DB::raw('LPAD(cadastro_paciente.prontuario,7,0) AS prontuario'), DB::raw('IF (cadastro_cidadao.data_nascimento IS NULL, "Não informada", DATE_FORMAT(cadastro_cidadao.data_nascimento, "%d/%m/%Y")) AS data_nascimento'), DB::raw('COALESCE(atencao_basica_cadastro_parentesco_responsavel.descricao, "-") AS parentesco'), ]) ->join('cadastro_paciente', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id') ->leftJoin('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id') ->leftJoin('atencao_basica_cadastro_parentesco_responsavel', 'atencao_basica_cadastro_parentesco_responsavel.id', 'atencao_basica_cadastro_individual.parentesco_responsavel_id') ->where('cadastro_cidadao.domicilio_id', $id) ->whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_obito') ->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id'); }) ->get(); } }