|
|
|
@ -15,7 +15,7 @@ class UaderMapuchePersona extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
use HasFactory; |
|
|
|
use HasFactory; |
|
|
|
|
|
|
|
|
|
|
|
protected $table = 'uader_mapuche_persona'; |
|
|
|
protected $table = "uader_mapuche_persona"; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Obtiene la lista de familiares asociados a una persona. |
|
|
|
* Obtiene la lista de familiares asociados a una persona. |
|
|
|
@ -27,7 +27,11 @@ class UaderMapuchePersona extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function familiares() |
|
|
|
public function familiares() |
|
|
|
{ |
|
|
|
{ |
|
|
|
return $this->hasMany(UaderMapucheFamiliares::class, 'id_uader_mapu_pers', 'id'); |
|
|
|
return $this->hasMany( |
|
|
|
|
|
|
|
UaderMapucheFamiliares::class, |
|
|
|
|
|
|
|
"id_uader_mapu_pers", |
|
|
|
|
|
|
|
"id" |
|
|
|
|
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -41,7 +45,7 @@ class UaderMapuchePersona extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function localidad() |
|
|
|
public function localidad() |
|
|
|
{ |
|
|
|
{ |
|
|
|
return $this->hasOne(MapucheCiudades::class, 'id', 'localidad_id'); |
|
|
|
return $this->hasOne(MapucheCiudades::class, "id", "localidad_id"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -55,7 +59,7 @@ class UaderMapuchePersona extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function declaracion_jurada() |
|
|
|
public function declaracion_jurada() |
|
|
|
{ |
|
|
|
{ |
|
|
|
return $this->hasOne(UaderDjPersona::class, 'id', 'id_dj_persona'); |
|
|
|
return $this->hasOne(UaderDjPersona::class, "id", "id_dj_persona"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -69,7 +73,11 @@ class UaderMapuchePersona extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function provincia() |
|
|
|
public function provincia() |
|
|
|
{ |
|
|
|
{ |
|
|
|
return $this->hasOne(MapucheProvincias::class, 'codigo_pcia', 'codigo_provincia'); |
|
|
|
return $this->hasOne( |
|
|
|
|
|
|
|
MapucheProvincias::class, |
|
|
|
|
|
|
|
"codigo_pcia", |
|
|
|
|
|
|
|
"codigo_provincia" |
|
|
|
|
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -83,48 +91,76 @@ class UaderMapuchePersona extends Model |
|
|
|
* @return UaderMapuchePersona|null El objeto UaderMapuchePersona |
|
|
|
* @return UaderMapuchePersona|null El objeto UaderMapuchePersona |
|
|
|
* representando la persona encontrada, o null si no se encuentra. |
|
|
|
* representando la persona encontrada, o null si no se encuentra. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function BuscarPersonaPorTelefono($telefono) |
|
|
|
public static function buscarPersonaPorTelefono(string $telefono) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
return self::buscarPersona("telefono", $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 null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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). |
|
|
|
* Busca los datos de una persona y su ultima declaracion juarada por el DNI. |
|
|
|
* |
|
|
|
* |
|
|
|
* Solo considera personas con estado de declaración jurada 'C' (Completa) o 'V' (Verificada). |
|
|
|
* 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). |
|
|
|
* 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. |
|
|
|
* @param string $telefono El número de documento de la persona a buscar. |
|
|
|
* @return UaderMapuchePersona|null El objeto UaderMapuchePersona |
|
|
|
* @return UaderMapuchePersona|null El objeto UaderMapuchePersona |
|
|
|
* representando la persona encontrada, o null si no se encuentra. |
|
|
|
* representando la persona encontrada, o null si no se encuentra. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static function buscarPersonaPorDni($dni) |
|
|
|
public static function buscarPersonaPorDni(string $dni) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$persona = DB::table('uader_mapuche_persona') |
|
|
|
return self::buscarPersona("dni", $dni); |
|
|
|
->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']) |
|
|
|
* Busca una persona en el sistema según el tipo de filtro especificado (DNI o teléfono). |
|
|
|
->orderBy('uader_dj_persona.fecha_cierre', 'desc') |
|
|
|
* |
|
|
|
->first(); |
|
|
|
* La función realiza una búsqueda en la base de datos para encontrar una persona |
|
|
|
|
|
|
|
* que tenga una declaración jurada en estado "C" (cerrado) o "V" (validado). |
|
|
|
if (empty($persona)) { |
|
|
|
* Se aplica un filtro de búsqueda según el DNI o el teléfono proporcionado. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @param string $tipoFiltro El tipo de filtro a aplicar, puede ser "dni" o "telefono". |
|
|
|
|
|
|
|
* @param string $valor El valor del filtro (DNI o teléfono) que se utilizará para la búsqueda. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @return \App\Models\Persona|null Retorna el registro de la persona encontrada o null si no existe. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @throws \InvalidArgumentException Si el tipo de filtro no es soportado. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function buscarPersona(string $tipoFiltro, string $valor) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$declaracionesJuradas = self::join( |
|
|
|
|
|
|
|
"uader_dj_persona", |
|
|
|
|
|
|
|
"uader_mapuche_persona.id_dj_persona", |
|
|
|
|
|
|
|
"=", |
|
|
|
|
|
|
|
"uader_dj_persona.id" |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
->selectRaw("uader_mapuche_persona.id_dj_persona as id_dj") |
|
|
|
|
|
|
|
->whereIn("uader_dj_persona.estado", ["C", "V"]) |
|
|
|
|
|
|
|
->orderBy("uader_dj_persona.fecha_cierre", "desc"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Aplicar la lógica de búsqueda según el tipo de filtro |
|
|
|
|
|
|
|
switch ($tipoFiltro) { |
|
|
|
|
|
|
|
case "dni": |
|
|
|
|
|
|
|
$declaracionesJuradas->where("uader_mapuche_persona.nro_docum", $valor); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case "telefono": |
|
|
|
|
|
|
|
$declaracionesJuradas->whereRaw("'549'||REGEXP_REPLACE(telefono_celular, '-|-15','','g') = '$valor'"); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
throw new \InvalidArgumentException( |
|
|
|
|
|
|
|
"Filtro de búsqueda no soportado: $tipoFiltro" |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ultimaDeclaracionJurada = $declaracionesJuradas->first(); |
|
|
|
|
|
|
|
if (empty($ultimaDeclaracionJurada)) { |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return UaderMapuchePersona::where('id_dj_persona', $persona->id_dj)->first(); |
|
|
|
return self::where('id_dj_persona', $ultimaDeclaracionJurada->id_dj)->first(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|