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
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); |
|
} |
|
} |
|
}
|
|
|