From a6d7afc12d7b6fc0df4e8d64285dd52c7434e659 Mon Sep 17 00:00:00 2001 From: jirho Date: Fri, 10 May 2024 12:43:15 -0300 Subject: [PATCH] ruta de direccion por dni/telefono --- app/Http/Controllers/ApiPersonaController.php | 106 +++++++++++++----- routes/api.php | 4 +- 2 files changed, 76 insertions(+), 34 deletions(-) diff --git a/app/Http/Controllers/ApiPersonaController.php b/app/Http/Controllers/ApiPersonaController.php index c3f2c38..08d8643 100644 --- a/app/Http/Controllers/ApiPersonaController.php +++ b/app/Http/Controllers/ApiPersonaController.php @@ -27,8 +27,6 @@ class ApiPersonaController extends Controller try{ - throw new \Exception("prueba"); - if ($request->has('dni')) { $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); @@ -122,35 +120,46 @@ class ApiPersonaController extends Controller } } - public function buscar($dni) + public function getDireccion(Request $request) { - $persona = UaderMapuchePersona::buscarPersonaPorDni($dni); - if (!empty($persona)) { - $dj = UaderDjPersona::find($persona->id_dj_persona); - $datos = array( - 'id' => $dj->id_persona, - 'dni' => $persona->nro_docum, - 'apellido' => ucwords(strtolower(trim($persona->desc_appat))), - 'nombres' => ucwords(strtolower(trim($persona->desc_nombr))), - 'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)), - 'email' => strtolower(trim($persona->correo_electronico)), - 'domicilio' => array( - 'calle' => strtolower(trim($persona->calle)), - 'numero' => strtolower(trim($persona->numero)), - 'piso' => strtolower(trim($persona->piso)), - 'dpto_oficina' => strtolower(trim($persona->dpto_oficina)), - 'calles_entre' => strtolower(trim($persona->calles_entre)), - 'domicilio_referencia' => strtolower(trim($persona->domicilio_referencia)), - 'zona_paraje' => strtolower(trim($persona->zona_paraje)), - 'casa_nro' => strtolower(trim($persona->casa_nro)), - 'casa_manzana' => strtolower(trim($persona->casa_manzana)), - 'localidad' => ucfirst(strtolower(trim($persona->Localidad->desc_localidad))), - 'provincia' => trim($persona->Provincia->descripcion_pcia), - ) - ); - return response()->json($datos); - } else { - return response()->json(array(), 404); + /** + * Obtiene la direccion de una persona según el DNI o el número de teléfono. + * + * @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda. + * @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra. + */ + + 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')) { + + $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); + + if ($persona) { + return ApiPersonaController::extraerDireccion($persona); + } + } + + if ($request->has('telefono')) { + + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono')); + + if ($persona) { + return ApiPersonaController::extraerDireccion($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); } } @@ -221,7 +230,6 @@ class ApiPersonaController extends Controller } public static function extraerDatos($persona){ - /** * Extrae los datos necesarios de una persona para ser devueltos como respuesta JSON. * @@ -248,6 +256,42 @@ class ApiPersonaController extends Controller return response()->json($datos, HttpStatus::OK); } + public static function extraerDireccion($persona){ + /** + * Extrae los datos de la direccion de una persona para ser devueltos como respuesta JSON. + * + * @param App\Models\UaderMapuchePersona $persona La instancia de la persona de la cual se extraerán los datos. + * @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos extraídos de la persona. + **/ + + $declaracion_jurada = $persona->declaracion_jurada; + + if(!$declaracion_jurada){ + + return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + } + + $datos = array( + 'id' => $declaracion_jurada->id_persona, + 'nombre' => ucwords(strtolower(trim($persona->desc_nombr))) . ' ' .ucwords(strtolower(trim($persona->desc_appat))) ?? null, + 'domicilio' => array( + 'calle' => strtolower(trim($persona->calle)) ?? null, + 'numero' => strtolower(trim($persona->numero)) ?? null, + 'piso' => strtolower(trim($persona->piso)) ?? null, + 'dpto_oficina' => strtolower(trim($persona->dpto_oficina)) ?? null, + 'calles_entre' => strtolower(trim($persona->calles_entre)) ?? null, + 'domicilio_referencia' => strtolower(trim($persona->domicilio_referencia)) ?? null, + 'zona_paraje' => strtolower(trim($persona->zona_paraje)) ?? null, + 'casa_nro' => strtolower(trim($persona->casa_nro)) ?? null, + 'casa_manzana' => strtolower(trim($persona->casa_manzana)) ?? null, + 'localidad' => ucfirst(strtolower(trim($persona->Localidad->desc_localidad))) ?? null, + 'provincia' => trim($persona->Provincia->descripcion_pcia) ?? null, + ) + ); + + return response()->json($datos, HttpStatus::OK); + } + # FUNCION STANDALONE: public static function compararHorarios($a, $b) { return strcmp($a['hora_entra'], $b['hora_entra']); diff --git a/routes/api.php b/routes/api.php index a42c164..f88bbbe 100644 --- a/routes/api.php +++ b/routes/api.php @@ -26,11 +26,9 @@ Route::get('/', [ApiController::class, 'bienvenida'])->name('api.bienvenida'); # Rutas de personas: -# Ruta de datos basicos: Route::get('persona/datos', [ApiPersonaController::class, 'getDatos'])->name('persona.getDatos'); - -# Ruta de horarios (por unidad academica, funcion y tipo de horario): Route::get('persona/horarios', [ApiPersonaController::class, 'getHorarios'])->name('persona.getHorarios'); +Route::get('persona/direccion', [ApiPersonaController::class, 'getDireccion'])->name('persona.getDireccion'); # Rutas de familiares: Route::get('familiar/{dni}', [ApiFamilliaresController::class, 'buscar'])->name('familiar.buscar');