From fdf5688ec1acf370f174ee68d1b52b821b64d6e3 Mon Sep 17 00:00:00 2001 From: jirho Date: Thu, 9 May 2024 16:53:30 -0300 Subject: [PATCH] ruta para obtener datos basicos de persona segun dni o telefono --- app/Http/Controllers/ApiPersonaController.php | 105 ++++++++++++------ routes/api.php | 17 ++- 2 files changed, 84 insertions(+), 38 deletions(-) diff --git a/app/Http/Controllers/ApiPersonaController.php b/app/Http/Controllers/ApiPersonaController.php index 9d989c3..780b7b4 100644 --- a/app/Http/Controllers/ApiPersonaController.php +++ b/app/Http/Controllers/ApiPersonaController.php @@ -5,17 +5,81 @@ namespace App\Http\Controllers; use App\Models\UaderMapuchePersona; use App\Models\UaderDjPersona; use Illuminate\Http\Request; +use App\Constants\HttpStatus; +use Illuminate\Support\Facades\Log; class ApiPersonaController extends Controller { - /** - * Display a listing of the resource. - */ - public function index() + + public function getDatos(Request $request) { - return json_encode(['reply' => 'hola']); + if ($request->has('dni')) { + return ApiPersonaController::rutaGetDatosPorDni($request->get('dni')); + } + + if ($request->has('telefono')) { + return ApiPersonaController::rutaGetDatosPorTelefono($request->get('telefono')); + } + + return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST); + } + + public static function rutaGetDatosPorDni($dni){ + + try{ + + $persona = UaderMapuchePersona::buscarPersonaPorDni($dni); + + if ($persona) { + + return ApiPersonaController::extraerDatos($persona); + } + + return response()->json(['error' => trans('persona.NO_ENCONTRADA_POR_DNI')], HttpStatus::NOT_FOUND); + + } catch (\Exception $e) { + Log::error(trans('persona.LOG_POR_DNI') . $e->getMessage()); + return response()->json(['error' => trans('persona.ERROR_POR_DNI')], HttpStatus::INTERNAL_SERVER_ERROR); + } + } + + public static function rutaGetDatosPorTelefono($telefono){ + + try{ + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($telefono); + + if ($persona) { + return ApiPersonaController::extraerDatos($persona); + } + + return response()->json(['error' => trans('persona.NO_ENCONTRADA_POR_TELEFONO')], HttpStatus::NOT_FOUND); + + } catch (\Exception $e) { + Log::error(trans('persona.LOG_POR_TELEFONO') . $e->getMessage()); + return response()->json(['error' => trans('persona.ERROR_POR_TELEFONO')], HttpStatus::INTERNAL_SERVER_ERROR); + } } + public static function extraerDatos($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 ?? null, # id persona de la tabla 'uader_persona' + 'dni' => $persona->nro_docum ?? null, + 'apellido' => ucwords(strtolower(trim($persona->desc_appat))) ?? null, + 'nombres' => ucwords(strtolower(trim($persona->desc_nombr))) ?? null, + 'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)) ?? null, + 'email' => strtolower(trim($persona->correo_electronico)) ?? null, + ); + + return response()->json($datos, HttpStatus::OK); + } public function store(Request $request) { @@ -109,35 +173,4 @@ class ApiPersonaController extends Controller } } - /** - * Display the specified resource. - */ - public function show(UaderDjPersona $uaderDjPersona) - { - // - } - - /** - * Show the form for editing the specified resource. - */ - public function edit(UaderDjPersona $uaderDjPersona) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, UaderDjPersona $uaderDjPersona) - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(UaderDjPersona $uaderDjPersona) - { - // - } } diff --git a/routes/api.php b/routes/api.php index 05ffbb5..a02a390 100644 --- a/routes/api.php +++ b/routes/api.php @@ -4,6 +4,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use App\Http\Controllers\ApiPersonaController; use App\Http\Controllers\ApiFamilliaresController; +use App\Http\Controllers\ApiController; /* |-------------------------------------------------------------------------- @@ -19,7 +20,19 @@ use App\Http\Controllers\ApiFamilliaresController; // Route::middleware('auth:sanctum')->get('/user', function (Request $request) { // return $request->user(); // }); -Route::get('persona/{dni}', [ApiPersonaController::class, 'buscar'])->name('persona.buscar'); + + +Route::get('/', [ApiController::class, 'bienvenida'])->name('api.bienvenida'); + +# Rutas de personas: + +# Rutas de datos basicos: +Route::get('persona/datos', [ApiPersonaController::class, 'getDatos'])->name('persona.getDatos'); + +# Rutas de horarios (por unidad academica, funcion y tipo de horario): +Route::post('persona/horarios/dni/{dni}', [ApiPersonaController::class, 'getHorariosPorTelefono'])->name('persona.getHorariosPorDni'); +Route::post('persona/horarios/telefono/{telefono}', [ApiPersonaController::class, 'getDatosPorTelefono'])->name('persona.getHorariosPorTelefono'); + +# Rutas de familiares: Route::get('familiar/{dni}', [ApiFamilliaresController::class, 'buscar'])->name('familiar.buscar'); -Route::apiResource('persona', ApiPersonaController::class); Route::apiResource('familiares', ApiFamilliaresController::class);