hasMany(UaderMapucheFamiliares::class, 'id_uader_mapu_pers', 'id'); } /** * Obtiene la localidad a la que pertenece una persona. * * Utiliza la relación 'hasOne' para recuperar el registro de la tabla 'mapuche_ciudades' * asociado al identificador de la localidad en la tabla actual. * * @return Illuminate\Database\Eloquent\Model|null El objeto MapucheCiudades * representando la localidad, o null si no se encuentra. */ public function localidad() { return $this->hasOne(MapucheCiudades::class, 'id', 'localidad_id'); } /** * Obtiene la declaración jurada asociada a una persona. * * Utiliza la relación 'hasOne' para recuperar el registro de la tabla 'uader_dj_persona' * asociado al identificador de la declaración jurada en la tabla actual. * * @return Illuminate\Database\Eloquent\Model|null El objeto UaderDjPersona * representando la declaración jurada, o null si no se encuentra. */ public function declaracion_jurada(){ return $this->hasOne(UaderDjPersona::class, 'id', 'id_dj_persona'); } /** * Obtiene la provincia a la que pertenece una persona. * * Utiliza la relación 'hasOne' para recuperar el registro de la tabla 'mapuche_provincias' * asociado al código de provincia en la tabla actual. * * @return Illuminate\Database\Eloquent\Model|null El objeto MapucheProvincias * representando la provincia, o null si no se encuentra. */ public function provincia() { return $this->hasOne(MapucheProvincias::class, 'codigo_pcia', 'codigo_provincia'); } /** * Busca los datos de una persona y su ultima declaracion juarada por su número de teléfono. * * Elimina los guiones y el prefijo '15' del número de teléfono antes de realizar la búsqueda. * Solo considera personas con estado de declaración jurada 'C' (Completa) o 'V' (Verificada). * Ordena los resultados por la fecha de cierre de la declaración jurada (descendente). * * @param string $telefono El número de teléfono de la persona a buscar. * @return UaderMapuchePersona|null El objeto UaderMapuchePersona * representando la persona encontrada, o null si no se encuentra. */ public static function BuscarPersonaPorTelefono($telefono) { $persona = DB::table('uader_mapuche_persona') ->join('uader_dj_persona', 'uader_mapuche_persona.id_dj_persona', '=', 'uader_dj_persona.id') ->selectRaw('uader_mapuche_persona.id_dj_persona as id_dj') ->whereRaw("'549'||REGEXP_REPLACE(telefono_celular, '-|-15','','g') = '$telefono'") ->whereIn('uader_dj_persona.estado', ['C', 'V']) ->orderBy('uader_dj_persona.fecha_cierre', 'desc') ->first(); if (empty($persona)) { return 0; } return UaderMapuchePersona::where('id_dj_persona', $persona->id_dj)->first(); } /** * Busca los datos de una persona y su ultima designación por su número de documento (DNI). * * Solo considera personas con estado de declaración jurada 'C' (Completa) o 'V' (Verificada). * Ordena los resultados por la fecha de cierre de la declaración jurada (descendente). * * @param string $dni El número de documento de la persona a buscar. * @return UaderMapuchePersona|null El objeto UaderMapuchePersona * representando la persona encontrada, o null si no se encuentra. */ public static function buscarPersonaPorDni($dni) { $persona = DB::table('uader_mapuche_persona') ->join('uader_dj_persona', 'uader_mapuche_persona.id_dj_persona', '=', 'uader_dj_persona.id') ->selectRaw('uader_mapuche_persona.id_dj_persona as id_dj') ->whereRaw("uader_mapuche_persona.nro_docum = '$dni'") ->whereIn('uader_dj_persona.estado', ['C', 'V']) ->orderBy('uader_dj_persona.fecha_cierre', 'desc') ->first(); if (empty($persona)) { return null; } return UaderMapuchePersona::where('id_dj_persona', $persona->id_dj)->first(); } }