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.
 
 
 
 

116 lines
3.9 KiB

<?php
namespace App\Http\Controllers;
use App\Constants\HttpStatus;
use App\Models\UaderMapucheFamiliares;
use App\Models\UaderMapuchePersona;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
/**
* Controlador para manejar la lógica de las rutas para obtener información de los familiares de una persona.
*/
class ApiFamilliaresController extends Controller
{
/**
* Función de ruta para obtener los familiares de una persona a partir del DNI o teléfono proporcionado en la solicitud.
*
* @param Request $request La solicitud HTTP que contiene los parámetros 'dni' o 'telefono'.
* @return \Illuminate\Http\JsonResponse Respuesta JSON con los datos de los familiares o un error.
*/
public function getFamiliares(Request $request)
{
if (! $request->has('dni') && ! $request->has('telefono')) {
return response()->json(
['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')],
HttpStatus::BAD_REQUEST
);
}
try {
if ($request->has('dni') && ! empty($request->get('dni'))) {
$persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni'));
if ($persona) {
return self::extraerFamiliaresJson($persona);
}
}
if ($request->has('telefono') && ! empty($request->get('telefono'))) {
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono'));
if ($persona) {
return self::extraerFamiliaresJson($persona);
}
}
return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
} catch (\Exception $e) {
Log::error(trans('persona.LOG_DATOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
/**
* Esta funcion es llamada por la función de ruta getFamiliares.
* Extrae la información de los familiares de una persona y la retorna en formato JSON.
*
* @param \App\Models\UaderMapuchePersona $persona La persona de la cual se van a extraer los familiares.
* @return \Illuminate\Http\JsonResponse Respuesta JSON con los datos de los familiares.
*/
public function extraerFamiliaresJson($persona)
{
$familiares = $persona->familiares;
$datos = [];
foreach ($familiares as $familiar) {
$datos[] = [
'dni' => $familiar->nro_docum,
'apellido' => ucwords(strtolower($familiar['desc_apell'])),
'nombres' => ucwords(strtolower($familiar['desc_nombre'])),
'parentezco' => $familiar->codc_paren,
'fnac' => $familiar->fec_nacim,
'discapacidad' => $familiar->sino_incap,
'a_cargo' => $familiar->sino_cargo,
];
}
return response()->json($datos);
}
/**
* Función de ruta para obtener los datos de un familiar específico a partir de su DNI.
*
* @param string $dni El DNI del familiar a buscar.
* @return \Illuminate\Http\JsonResponse Respuesta JSON con los datos del familiar o un código 404 si no se encuentra.
*/
public function familiarPorDni($dni)
{
if (UaderMapucheFamiliares::where('nro_docum', $dni)->exists()) {
$familiar = UaderMapucheFamiliares::where('nro_docum', $dni)->first();
return response()->json(
[
'apellido' => ucwords(strtolower($familiar->desc_apell)),
'nombres' => ucwords(strtolower($familiar->desc_nombre)),
'parentezco' => $familiar->codc_paren,
'fnac' => $familiar->fec_nacim,
]
);
} else {
return response()->json([], 404);
}
}
}