You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.1 KiB
130 lines
5.1 KiB
<?php |
|
|
|
namespace App\Models; |
|
|
|
use DB; |
|
use Illuminate\Database\Eloquent\Factories\HasFactory; |
|
use Illuminate\Database\Eloquent\Model; |
|
|
|
/** |
|
* Modelo Eloquent para la tabla `uader_mapuche_persona`. |
|
|
|
* Este modelo representa los datos de las personas en el sistema Mapuche. |
|
*/ |
|
class UaderMapuchePersona extends Model |
|
{ |
|
use HasFactory; |
|
|
|
protected $table = 'uader_mapuche_persona'; |
|
|
|
/** |
|
* Obtiene la lista de familiares asociados a una persona. |
|
* |
|
* Utiliza la relación 'hasMany' para recuperar los registros de la tabla 'uader_mapuche_familiares' |
|
* relacionados con el identificador de la persona en la tabla actual. |
|
* |
|
* @return Illuminate\Database\Eloquent\Collection Una colección de objetos UaderMapucheFamiliares. |
|
*/ |
|
public function familiares() |
|
{ |
|
return $this->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 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). |
|
* |
|
* 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(); |
|
} |
|
}
|
|
|