From 9cf20969d7bc3f077183973efd9ca8f78dbd309f Mon Sep 17 00:00:00 2001 From: jirho Date: Tue, 24 Sep 2024 13:21:21 -0300 Subject: [PATCH] Configurada ruta del login, y modificada ruta de los familiares --- .../Controllers/ApiFamilliaresController.php | 150 ++++++++++-------- routes/api.php | 35 ++-- 2 files changed, 105 insertions(+), 80 deletions(-) diff --git a/app/Http/Controllers/ApiFamilliaresController.php b/app/Http/Controllers/ApiFamilliaresController.php index 2ab5250..614e023 100644 --- a/app/Http/Controllers/ApiFamilliaresController.php +++ b/app/Http/Controllers/ApiFamilliaresController.php @@ -2,95 +2,115 @@ namespace App\Http\Controllers; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; + use App\Models\UaderMapucheFamiliares; use App\Models\UaderMapuchePersona; -use Illuminate\Http\Request; +use App\Constants\HttpStatus; +/** + * Controlador para manejar la lógica de las rutas para obtener información de los familiares de una persona. + */ class ApiFamilliaresController extends Controller { /** - * Display a listing of the resource. + * 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 index() - { - return json_encode(['reply' => 'hola']); - } + public function getFamiliares(Request $request){ - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } + if(!$request->has('dni') && !$request->has('telefono')){ - /** - * Store a newly created resource in storage. - */ - public function store(Request $request) - { - $input = $request->input(); - $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($input['cel']); - if (!empty($persona)) { - $familiares = $persona->familiares; - $datos = array(); - foreach ($familiares as $familiar) { - $datos[] = array( - '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( + ['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); + } } - return response()->json($datos); - } else { - return response()->json(array(), 404); + + 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); } } /** - * Display the specified resource. + * 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 buscar($dni) + public function extraerFamiliaresJson($persona) { - $persona = UaderMapucheFamiliares::where('nro_docum', $dni)->first(); - if (!empty($persona)) { - $datos = array( - 'apellido' => ucwords(strtolower($persona->desc_apell)), - 'nombres' => ucwords(strtolower($persona->desc_nombre)), - 'parentezco' => $persona->codc_paren, - 'fnac' => $persona->fec_nacim, + + $familiares = $persona->familiares; + $datos = array(); + + foreach ($familiares as $familiar) { + + $datos[] = array( + '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); - } else { - return response()->json(array(), 404); } - } - /** - * Show the form for editing the specified resource. - */ - public function edit(UaderMapucheFamiliares $uaderMapucheFamiliares) - { - // + return response()->json($datos); } /** - * Update the specified resource in storage. + * 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 update(Request $request, UaderMapucheFamiliares $uaderMapucheFamiliares) + public function familiarPorDni($dni) { - // - } + if ( UaderMapucheFamiliares::where('nro_docum', $dni)->exists() ) { - /** - * Remove the specified resource from storage. - */ - public function destroy(UaderMapucheFamiliares $uaderMapucheFamiliares) - { - // + $familiar = UaderMapucheFamiliares::where('nro_docum', $dni)->first(); + + return response()->json( + array( + 'apellido' => ucwords(strtolower($familiar->desc_apell)), + 'nombres' => ucwords(strtolower($familiar->desc_nombre)), + 'parentezco' => $familiar->codc_paren, + 'fnac' => $familiar->fec_nacim, + ) + ); + + } else { + + return response()->json(array(), 404); + } } + } diff --git a/routes/api.php b/routes/api.php index 0ebeddb..49e958e 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,10 +1,10 @@ get('/user', function (Request $request) { - // return $request->user(); -// }); +Route::get('/', [ApiController::class, 'bienvenida'])->name('bienvenida'); +Route::post('login', [AuthController::class, 'login'])->name('login'); -Route::get('/', [ApiController::class, 'bienvenida'])->name('api.bienvenida'); -# Rutas de personas: +Route::middleware('jwt.auth')->group(function () { + + Route::post('logout', [AuthController::class, 'logout'])->name('logout'); + + # Rutas de personas: + Route::get('persona/datos', [ApiPersonaController::class, 'getDatos'])->name('persona.getDatos'); + Route::get('persona/horarios/unidadacademica', [ApiPersonaController::class, 'getHorariosPorUnidadAcademica'])->name('persona.horarios.unidadacademica'); + Route::get('persona/horarios/sede', [ApiPersonaController::class, 'getHorariosPorSede'])->name('persona.horarios.sede'); + Route::get('persona/direccion', [ApiPersonaController::class, 'getDireccion'])->name('persona.getDireccion'); + Route::get('persona/funciones/sede', [ApiPersonaController::class, 'getFuncionesPorSede'])->name('persona.funciones.sede'); + Route::get('persona/funciones/unidadacademica', [ApiPersonaController::class, 'getFuncionesPorUnidadAcademica'])->name('persona.funciones.unidadacademica'); + + # Rutas de familiares: + Route::get('familiar/{dni}', [ApiFamilliaresController::class, 'familiarPorDni'])->name('persona.familiar'); + Route::post('familiares', [ApiFamilliaresController::class, 'getFamiliares'])->name('persona.familiares'); +}); + -Route::get('persona/datos', [ApiPersonaController::class, 'getDatos'])->name('persona.getDatos'); -Route::get('persona/horarios/unidadacademica', [ApiPersonaController::class, 'getHorariosPorUnidadAcademica'])->name('persona.horarios.unidadacademica'); -Route::get('persona/horarios/sede', [ApiPersonaController::class, 'getHorariosPorSede'])->name('persona.horarios.sede'); -Route::get('persona/direccion', [ApiPersonaController::class, 'getDireccion'])->name('persona.getDireccion'); -Route::get('persona/funciones/sede', [ApiPersonaController::class, 'getFuncionesPorSede'])->name('persona.funciones.sede'); -Route::get('persona/funciones/unidadacademica', [ApiPersonaController::class, 'getFuncionesPorUnidadAcademica'])->name('persona.funciones.unidadacademica'); -# Rutas de familiares: -Route::get('familiar/{dni}', [ApiFamilliaresController::class, 'buscar'])->name('familiar.buscar'); -Route::apiResource('familiares', ApiFamilliaresController::class);