From 04baad9c797596987344994499db8c8ad42cfe56 Mon Sep 17 00:00:00 2001 From: jirho Date: Mon, 7 Oct 2024 16:11:09 -0300 Subject: [PATCH] Formateo del controlador en general y funciones para ruta de obtener codigos de unidades academicas por dni/telefono --- .../Http/Controllers/ApiPersonaController.php | 787 ++++++++++++------ 1 file changed, 523 insertions(+), 264 deletions(-) diff --git a/src/app/Http/Controllers/ApiPersonaController.php b/src/app/Http/Controllers/ApiPersonaController.php index 58d1222..9407e6f 100644 --- a/src/app/Http/Controllers/ApiPersonaController.php +++ b/src/app/Http/Controllers/ApiPersonaController.php @@ -2,10 +2,13 @@ namespace App\Http\Controllers; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpKernel\Exception\HttpException; +use InvalidArgumentException; +use Illuminate\Support\Facades\Log; +use Illuminate\Http\Request; use App\Constants\HttpStatus; use App\Models\UaderMapuchePersona; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Log; class ApiPersonaController extends Controller { @@ -18,39 +21,43 @@ class ApiPersonaController extends Controller */ public function getDatos(Request $request) { - - if (! $request->has('dni') && ! $request->has('telefono')) { + if (!$request->has("dni") && !$request->has("telefono")) { return response()->json( - ['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], + ["error" => trans("persona.DEBE_INGRESAR_DNI_O_TELEFONO")], HttpStatus::BAD_REQUEST ); } try { - - if ($request->has('dni')) { - - $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); + if ($request->has("dni")) { + $persona = UaderMapuchePersona::buscarPersonaPorDni( + $request->get("dni") + ); if ($persona) { return ApiPersonaController::extraerDatosJson($persona); } } - - if ($request->has('telefono')) { - $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono')); + if ($request->has("telefono")) { + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono( + $request->get("telefono") + ); if ($persona) { return ApiPersonaController::extraerDatosJson($persona); } } - return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::NOT_FOUND); - + return response()->json( + ["error" => trans("persona.NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } catch (\Exception $e) { + Log::error(trans("persona.LOG_DATOS") . $e->getMessage()); - Log::error(trans('persona.LOG_DATOS').$e->getMessage()); - - return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR); + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); } } @@ -67,68 +74,85 @@ class ApiPersonaController extends Controller */ public function getHorariosPorSede(Request $request) { - - if (! $request->has('telefono') && ! $request->has('dni')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST); + if (!$request->has("telefono") && !$request->has("dni")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_DNI_O_TELEFONO")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('sede')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_SEDE')], HttpStatus::BAD_REQUEST); + if (!$request->has("sede")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_SEDE")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('funcion')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_FUNCION')], HttpStatus::BAD_REQUEST); + if (!$request->has("funcion")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_FUNCION")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('dia')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_DIA')], HttpStatus::BAD_REQUEST); + if (!$request->has("dia")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_DIA")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('tipo_horario')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_TIPO_HORARIO')], HttpStatus::BAD_REQUEST); + if (!$request->has("tipo_horario")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_TIPO_HORARIO")], + HttpStatus::BAD_REQUEST + ); } try { - - if ($request->has('dni')) { - - $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); + if ($request->has("dni")) { + $persona = UaderMapuchePersona::buscarPersonaPorDni( + $request->get("dni") + ); if ($persona) { - return ApiPersonaController::extraerHorariosPorSede( $persona, - $request->get('sede'), - $request->get('funcion'), - $request->get('dia'), - $request->get('tipo_horario') + $request->get("sede"), + $request->get("funcion"), + $request->get("dia"), + $request->get("tipo_horario") ); } } - if ($request->has('telefono')) { - - $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono')); + if ($request->has("telefono")) { + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono( + $request->get("telefono") + ); if ($persona) { - return ApiPersonaController::extraerHorariosPorSede( $persona, - $request->get('sede'), - $request->get('funcion'), - $request->get('dia'), - $request->get('tipo_horario') + $request->get("sede"), + $request->get("funcion"), + $request->get("dia"), + $request->get("tipo_horario") ); } } - return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::NOT_FOUND); - + return response()->json( + ["error" => trans("persona.NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } catch (\Exception $e) { + Log::error(trans("persona.LOG_HORARIOS") . $e->getMessage()); - Log::error(trans('persona.LOG_HORARIOS').$e->getMessage()); - - return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR); + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); } } @@ -145,68 +169,85 @@ class ApiPersonaController extends Controller */ public function getHorariosPorUnidadAcademica(Request $request) { - - if (! $request->has('telefono') && ! $request->has('dni')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST); + if (!$request->has("telefono") && !$request->has("dni")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_DNI_O_TELEFONO")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('unidad_academica')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_UNIDAD_ACADEMICA')], HttpStatus::BAD_REQUEST); + if (!$request->has("unidad_academica")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_UNIDAD_ACADEMICA")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('funcion')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_FUNCION')], HttpStatus::BAD_REQUEST); + if (!$request->has("funcion")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_FUNCION")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('dia')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_DIA')], HttpStatus::BAD_REQUEST); + if (!$request->has("dia")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_DIA")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('tipo_horario')) { - return response()->json(['error' => trans('persona.DEBE_INGRESAR_TIPO_HORARIO')], HttpStatus::BAD_REQUEST); + if (!$request->has("tipo_horario")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_TIPO_HORARIO")], + HttpStatus::BAD_REQUEST + ); } try { - - if ($request->has('dni')) { - - $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); + if ($request->has("dni")) { + $persona = UaderMapuchePersona::buscarPersonaPorDni( + $request->get("dni") + ); if ($persona) { - return ApiPersonaController::extraerHorariosPorUnidadAcademica( $persona, - $request->get('unidad_academica'), - $request->get('funcion'), - $request->get('dia'), - $request->get('tipo_horario') + $request->get("unidad_academica"), + $request->get("funcion"), + $request->get("dia"), + $request->get("tipo_horario") ); } } - if ($request->has('telefono')) { - - $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono')); + if ($request->has("telefono")) { + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono( + $request->get("telefono") + ); if ($persona) { - return ApiPersonaController::extraerHorariosPorUnidadAcademica( $persona, - $request->get('unidad_academica'), - $request->get('funcion'), - $request->get('dia'), - $request->get('tipo_horario') + $request->get("unidad_academica"), + $request->get("funcion"), + $request->get("dia"), + $request->get("tipo_horario") ); } } - return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::NOT_FOUND); - + return response()->json( + ["error" => trans("persona.NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } catch (\Exception $e) { + Log::error(trans("persona.LOG_HORARIOS") . $e->getMessage()); - Log::error(trans('persona.LOG_HORARIOS').$e->getMessage()); - - return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR); + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); } } @@ -225,38 +266,45 @@ class ApiPersonaController extends Controller * @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); + 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 ($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 ($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); - + return response()->json( + ["error" => trans("persona.NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } catch (\Exception $e) { + Log::error(trans("persona.LOG_DATOS") . $e->getMessage()); - Log::error(trans('persona.LOG_DATOS').$e->getMessage()); - - return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR); + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); } } @@ -269,44 +317,58 @@ class ApiPersonaController extends Controller */ public function getFuncionesPorUnidadAcademica(Request $request) { - - if (! $request->has('unidad_academica')) { - - return response()->json(['error' => trans('persona.DEBE_INGRESAR_UNIDAD_ACADEMICA')], HttpStatus::BAD_REQUEST); + if (!$request->has("unidad_academica")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_UNIDAD_ACADEMICA")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('dni') && ! $request->has('telefono')) { - - return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_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')) { - - $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); + if ($request->has("dni")) { + $persona = UaderMapuchePersona::buscarPersonaPorDni( + $request->get("dni") + ); if ($persona) { - return ApiPersonaController::extraerFuncionesPorUnidadAcademica($persona, $request->get('unidad_academica')); + return ApiPersonaController::extraerFuncionesPorUnidadAcademica( + $persona, + $request->get("unidad_academica") + ); } } - if ($request->has('telefono')) { - - $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono')); + if ($request->has("telefono")) { + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono( + $request->get("telefono") + ); if ($persona) { - return ApiPersonaController::extraerFuncionesPorUnidadAcademica($persona, $request->get('unidad_academica')); + return ApiPersonaController::extraerFuncionesPorUnidadAcademica( + $persona, + $request->get("unidad_academica") + ); } } - return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::NOT_FOUND); - + return response()->json( + ["error" => trans("persona.NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } catch (\Exception $e) { + Log::error(trans("persona.LOG_DATOS") . $e->getMessage()); - Log::error(trans('persona.LOG_DATOS').$e->getMessage()); - - return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR); + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); } } @@ -319,44 +381,153 @@ class ApiPersonaController extends Controller */ public function getFuncionesPorSede(Request $request) { - - if (! $request->has('sede')) { - - return response()->json(['error' => trans('persona.DEBE_INGRESAR_SEDE')], HttpStatus::BAD_REQUEST); + if (!$request->has("sede")) { + return response()->json( + ["error" => trans("persona.DEBE_INGRESAR_SEDE")], + HttpStatus::BAD_REQUEST + ); } - if (! $request->has('dni') && ! $request->has('telefono')) { - - return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_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')) { - - $persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni')); + if ($request->has("dni")) { + $persona = UaderMapuchePersona::buscarPersonaPorDni( + $request->get("dni") + ); if ($persona) { - return ApiPersonaController::extraerFuncionesPorSede($persona, $request->get('sede')); + return ApiPersonaController::extraerFuncionesPorSede( + $persona, + $request->get("sede") + ); } } - if ($request->has('telefono')) { - - $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono')); + if ($request->has("telefono")) { + $persona = UaderMapuchePersona::BuscarPersonaPorTelefono( + $request->get("telefono") + ); if ($persona) { - return ApiPersonaController::extraerFuncionesPorSede($persona, $request->get('sede')); + return ApiPersonaController::extraerFuncionesPorSede( + $persona, + $request->get("sede") + ); } } - return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::NOT_FOUND); - + 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 + ); + } + } + + /** + * Obtiene las unidades académicas asociadas a una persona. + * + * Este método verifica si se ha proporcionado un DNI o un teléfono en la solicitud. + * Si ninguno de los dos está presente, se devuelve un error de solicitud incorrecta. + * Si se proporciona un DNI, se llama al método `getUnidadesAcademicasPor` con el tipo 'dni'. + * Si se proporciona un teléfono, se llama a `getUnidadesAcademicasPor` con el tipo 'telefono'. + * + * @param Request $request La solicitud que contiene los parámetros de búsqueda (dni o teléfono). + * @return JsonResponse La respuesta en formato JSON con las unidades académicas o un mensaje de error. + */ + public static function getUnidadesAcademicas(Request $request) + { + if (!$request->has("dni") && !$request->has("telefono")) { + return response()->json( + ["error" => __("persona.DEBE_INGRESAR_DNI_O_TELEFONO")], + HttpStatus::BAD_REQUEST + ); + } - Log::error(trans('persona.LOG_DATOS').$e->getMessage()); + if ($request->has("dni")) { + return self::getUnidadesAcademicasPor("xx", $request->get("dni")); + } - return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR); + if ($request->has("telefono")) { + return self::getUnidadesAcademicasPor( + "telefono", + $request->get("telefono") + ); + } + } + + /** + * Obtiene las unidades académicas de una persona según el tipo de búsqueda. + * + * Este método realiza la búsqueda de una persona utilizando el DNI o el teléfono, dependiendo + * del tipo especificado. Si la persona se encuentra, se devuelve su información sobre unidades + * académicas. Si no se encuentra o si el tipo de búsqueda no es válido, se devuelve un error correspondiente. + * + * @param string $tipo El tipo de búsqueda, que puede ser 'dni' o 'telefono'. + * @param string $valor El valor correspondiente al tipo de búsqueda (DNI o número de teléfono). + * @return JsonResponse La respuesta en formato JSON con las unidades académicas o un mensaje de error. + * @throws InvalidArgumentException Si el tipo de búsqueda no es válido. + */ + private static function getUnidadesAcademicasPor( + string $tipo, + string $valor + ) { + try { + if ($tipo === "dni") { + $persona = UaderMapuchePersona::buscarPersonaPorDni($valor); + } elseif ($tipo === "telefono") { + $persona = UaderMapuchePersona::buscarPersonaPorTelefono( + $valor + ); + } else { + throw new InvalidArgumentException( + "Tipo de búsqueda no válido. Debe ser 'dni' o 'telefono'." + ); + } + + if ($persona) { + return response()->json( + $persona->getUnidadesAcademicas(), + HttpStatus::OK + ); + } + + return response()->json( + ["error" => __("persona.NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); + } catch (NotFoundHttpException $e) { + return response()->json( + ["error" => trans($e->getMessage())], + HttpStatus::NOT_FOUND + ); + } catch (HttpException $e) { + return response()->json( + ["error" => trans("persona.ERROR")], + $e->getStatusCode() + ); + } catch (InvalidArgumentException $e) { + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); + } catch (Exception $e) { + return response()->json( + ["error" => trans("persona.ERROR")], + HttpStatus::INTERNAL_SERVER_ERROR + ); } } @@ -372,17 +543,30 @@ class ApiPersonaController extends Controller * @param string $tipoHorario El tipo de horario para filtrar los horarios. * @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona, la función y los horarios correspondientes a la sede especificada. */ - public function extraerHorariosPorSede($persona, $sede, $funcion, $dia, $tipoHorario) - { - + public function extraerHorariosPorSede( + $persona, + $sede, + $funcion, + $dia, + $tipoHorario + ) { $declaracion_jurada = $persona->declaracion_jurada; - if (! $declaracion_jurada) { - return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + if (!$declaracion_jurada) { + return response()->json( + ["error" => trans("persona.DECLARACION_JURADA_NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } - $cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get(); + $cargos = $declaracion_jurada + ->CargosGrupo() + ->where("estado", "A") + ->get(); if (empty($cargos)) { - return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.NO_TIENE_DESIGNACIONES")], + HttpStatus::NOT_FOUND + ); } $horarios = []; @@ -390,33 +574,33 @@ class ApiPersonaController extends Controller $unidadAcademica = null; foreach ($cargos as $cargo) { - if ($unidadAcademica == null) { $unidadAcademica = $cargo->Sede->ua_guarani; } - if ($cargo->id_funcion == $funcion && $cargo->Sede->uacad == $sede) { - + if ( + $cargo->id_funcion == $funcion && + $cargo->Sede->uacad == $sede + ) { // Si vino foreach ($cargo->GrupoHorario as $grupo_horario) { - foreach ($grupo_horario->Horarios as $horario) { - - if ($horario->dia_semanal == $dia && $horario->tipo_horario == $tipoHorario) { - + if ( + $horario->dia_semanal == $dia && + $horario->tipo_horario == $tipoHorario + ) { $aux_horario = [ - 'tipo_horario' => $horario->tipo_horario, - 'hora_entra' => $horario->hora_entra, - 'hora_sale' => $horario->hora_sale, + "tipo_horario" => $horario->tipo_horario, + "hora_entra" => $horario->hora_entra, + "hora_sale" => $horario->hora_sale, ]; - if (! in_array($aux_horario, $horarios)) { - + if (!in_array($aux_horario, $horarios)) { $horarios[] = [ - 'tipo_horario' => $horario->tipo_horario, - 'hora_entra' => $horario->hora_entra, - 'hora_sale' => $horario->hora_sale, + "tipo_horario" => $horario->tipo_horario, + "hora_entra" => $horario->hora_entra, + "hora_sale" => $horario->hora_sale, ]; } } @@ -426,21 +610,27 @@ class ApiPersonaController extends Controller } if (empty($horarios)) { - return response()->json(['error' => trans('persona.SIN_HORARIOS')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.SIN_HORARIOS")], + HttpStatus::NOT_FOUND + ); } // Ordenar el arreglo de horarios usando la función de comparación - usort($horarios, [ApiPersonaController::class, 'compararHorarios']); + usort($horarios, [ApiPersonaController::class, "compararHorarios"]); $datos = [ - 'id' => $declaracion_jurada->id_persona, - 'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))), - 'funcion' => [ - 'tipo' => $funcion, - 'unidad_academica' => $unidadAcademica, - 'sede' => $sede, + "id" => $declaracion_jurada->id_persona, + "nombre" => + ucwords(strtolower(trim($persona->desc_nombr))) . + " " . + ucwords(strtolower(trim($persona->desc_appat))), + "funcion" => [ + "tipo" => $funcion, + "unidad_academica" => $unidadAcademica, + "sede" => $sede, ], - 'horarios' => $horarios, + "horarios" => $horarios, ]; return response()->json($datos, HttpStatus::OK); @@ -456,17 +646,30 @@ class ApiPersonaController extends Controller * @param string $tipoHorario El tipo de horario para filtrar los horarios. * @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona, la función y los horarios correspondientes a la unidad académica especificada. */ - public function extraerHorariosPorUnidadAcademica($persona, $unidadAcademica, $funcion, $dia, $tipoHorario) - { - + public function extraerHorariosPorUnidadAcademica( + $persona, + $unidadAcademica, + $funcion, + $dia, + $tipoHorario + ) { $declaracion_jurada = $persona->declaracion_jurada; - if (! $declaracion_jurada) { - return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + if (!$declaracion_jurada) { + return response()->json( + ["error" => trans("persona.DECLARACION_JURADA_NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } - $cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get(); + $cargos = $declaracion_jurada + ->CargosGrupo() + ->where("estado", "A") + ->get(); if (empty($cargos)) { - return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.NO_TIENE_DESIGNACIONES")], + HttpStatus::NOT_FOUND + ); } $horarios = []; @@ -474,33 +677,33 @@ class ApiPersonaController extends Controller $sede = null; foreach ($cargos as $cargo) { - if ($sede == null) { $sede = $cargo->Sede->uacad; } - if ($cargo->id_funcion == $funcion && $cargo->Sede->ua_guarani == $unidadAcademica) { - + if ( + $cargo->id_funcion == $funcion && + $cargo->Sede->ua_guarani == $unidadAcademica + ) { // Si vino foreach ($cargo->GrupoHorario as $grupo_horario) { - foreach ($grupo_horario->Horarios as $horario) { - - if ($horario->dia_semanal == $dia && $horario->tipo_horario == $tipoHorario) { - + if ( + $horario->dia_semanal == $dia && + $horario->tipo_horario == $tipoHorario + ) { $aux_horario = [ - 'tipo_horario' => $horario->tipo_horario, - 'hora_entra' => $horario->hora_entra, - 'hora_sale' => $horario->hora_sale, + "tipo_horario" => $horario->tipo_horario, + "hora_entra" => $horario->hora_entra, + "hora_sale" => $horario->hora_sale, ]; - if (! in_array($aux_horario, $horarios)) { - + if (!in_array($aux_horario, $horarios)) { $horarios[] = [ - 'tipo_horario' => $horario->tipo_horario, - 'hora_entra' => $horario->hora_entra, - 'hora_sale' => $horario->hora_sale, + "tipo_horario" => $horario->tipo_horario, + "hora_entra" => $horario->hora_entra, + "hora_sale" => $horario->hora_sale, ]; } } @@ -510,21 +713,27 @@ class ApiPersonaController extends Controller } if (empty($horarios)) { - return response()->json(['error' => trans('persona.SIN_HORARIOS')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.SIN_HORARIOS")], + HttpStatus::NOT_FOUND + ); } // Ordenar el arreglo de horarios usando la función de comparación - usort($horarios, [ApiPersonaController::class, 'compararHorarios']); + usort($horarios, [ApiPersonaController::class, "compararHorarios"]); $datos = [ - 'id' => $declaracion_jurada->id_persona, - 'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))), - 'funcion' => [ - 'tipo' => $funcion, - 'unidad_academica' => $unidadAcademica, - 'sede' => $sede, + "id" => $declaracion_jurada->id_persona, + "nombre" => + ucwords(strtolower(trim($persona->desc_nombr))) . + " " . + ucwords(strtolower(trim($persona->desc_appat))), + "funcion" => [ + "tipo" => $funcion, + "unidad_academica" => $unidadAcademica, + "sede" => $sede, ], - 'horarios' => $horarios, + "horarios" => $horarios, ]; return response()->json($datos, HttpStatus::OK); @@ -538,20 +747,30 @@ class ApiPersonaController extends Controller */ public static function extraerDatosJson($persona) { - $declaracion_jurada = $persona->declaracion_jurada; - if (! $declaracion_jurada) { - - return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + if (!$declaracion_jurada) { + return response()->json( + ["error" => trans("persona.DECLARACION_JURADA_NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } $datos = [ - '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, + "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); @@ -565,29 +784,43 @@ class ApiPersonaController extends Controller **/ public static function extraerDireccion($persona) { - $declaracion_jurada = $persona->declaracion_jurada; - if (! $declaracion_jurada) { - - return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + if (!$declaracion_jurada) { + return response()->json( + ["error" => trans("persona.DECLARACION_JURADA_NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } $datos = [ - 'id' => $declaracion_jurada->id_persona, - 'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))) ?? null, - 'domicilio' => [ - '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, + "id" => $declaracion_jurada->id_persona, + "nombre" => + ucwords(strtolower(trim($persona->desc_nombr))) . + " " . + ucwords(strtolower(trim($persona->desc_appat))) ?? + null, + "domicilio" => [ + "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, ], ]; @@ -602,53 +835,67 @@ class ApiPersonaController extends Controller * @param string $unidadAcademica El código de la unidad académica para filtrar las funciones. * @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona y las funciones correspondientes a la unidad académica especificada. */ - public static function extraerFuncionesPorUnidadAcademica($persona, $unidadAcademica) - { - + public static function extraerFuncionesPorUnidadAcademica( + $persona, + $unidadAcademica + ) { $declaracion_jurada = $persona->declaracion_jurada; - if (! $declaracion_jurada) { - return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + if (!$declaracion_jurada) { + return response()->json( + ["error" => trans("persona.DECLARACION_JURADA_NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } - $cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get(); + $cargos = $declaracion_jurada + ->CargosGrupo() + ->where("estado", "A") + ->get(); if (empty($cargos)) { - return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.NO_TIENE_DESIGNACIONES")], + HttpStatus::NOT_FOUND + ); } $cargosUnidadAcademica = []; foreach ($cargos as $cargo) { - if ($cargo->Sede->ua_guarani == $unidadAcademica) { - $cargosUnidadAcademica[] = $cargo; } } if (empty($cargosUnidadAcademica)) { - return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES_UA')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.NO_TIENE_DESIGNACIONES_UA")], + HttpStatus::NOT_FOUND + ); } $funciones = []; $funcion = null; foreach ($cargosUnidadAcademica as $cargoUnidadAcademica) { - $funcion = [ - 'tipo' => $cargoUnidadAcademica->id_funcion, - 'unidad_academica' => $unidadAcademica, - 'sede' => $cargoUnidadAcademica->Sede->uacad, + "tipo" => $cargoUnidadAcademica->id_funcion, + "unidad_academica" => $unidadAcademica, + "sede" => $cargoUnidadAcademica->Sede->uacad, ]; - if (! in_array($funcion, $funciones)) { // para que no se repitan las funciones por cargo + if (!in_array($funcion, $funciones)) { + // para que no se repitan las funciones por cargo $funciones[] = $funcion; } } $datos = [ - 'id' => $declaracion_jurada->id_persona, - 'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))), - 'funciones' => $funciones, + "id" => $declaracion_jurada->id_persona, + "nombre" => + ucwords(strtolower(trim($persona->desc_nombr))) . + " " . + ucwords(strtolower(trim($persona->desc_appat))), + "funciones" => $funciones, ]; return response()->json($datos, HttpStatus::OK); @@ -664,24 +911,30 @@ class ApiPersonaController extends Controller */ public static function extraerFuncionesPorSede($persona, $sede) { - $declaracion_jurada = $persona->declaracion_jurada; - if (! $declaracion_jurada) { - return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); + if (!$declaracion_jurada) { + return response()->json( + ["error" => trans("persona.DECLARACION_JURADA_NO_ENCONTRADA")], + HttpStatus::NOT_FOUND + ); } - $cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get(); + $cargos = $declaracion_jurada + ->CargosGrupo() + ->where("estado", "A") + ->get(); if (empty($cargos)) { - return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.NO_TIENE_DESIGNACIONES")], + HttpStatus::NOT_FOUND + ); } $cargosSedes = []; $unidadAcademica = null; foreach ($cargos as $cargo) { - if ($cargo->Sede->uacad == $sede) { - $cargosSedes[] = $cargo; if ($unidadAcademica == null) { @@ -691,29 +944,35 @@ class ApiPersonaController extends Controller } if (empty($cargosSedes)) { - return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES_SEDE')], HttpStatus::NOT_FOUND); + return response()->json( + ["error" => trans("persona.NO_TIENE_DESIGNACIONES_SEDE")], + HttpStatus::NOT_FOUND + ); } $funciones = []; $funcion = null; foreach ($cargosSedes as $cargoSede) { - $funcion = [ - 'tipo' => $cargoSede->id_funcion, - 'unidad_academica' => $unidadAcademica, - 'sede' => $sede, + "tipo" => $cargoSede->id_funcion, + "unidad_academica" => $unidadAcademica, + "sede" => $sede, ]; - if (! in_array($funcion, $funciones)) { // para que no se repitan las funciones por tarea o designacion + if (!in_array($funcion, $funciones)) { + // para que no se repitan las funciones por tarea o designacion $funciones[] = $funcion; } } $datos = [ - 'id' => $declaracion_jurada->id_persona, - 'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))), - 'funciones' => $funciones, + "id" => $declaracion_jurada->id_persona, + "nombre" => + ucwords(strtolower(trim($persona->desc_nombr))) . + " " . + ucwords(strtolower(trim($persona->desc_appat))), + "funciones" => $funciones, ]; return response()->json($datos, HttpStatus::OK); @@ -732,6 +991,6 @@ class ApiPersonaController extends Controller */ public static function compararHorarios($a, $b) { - return strcmp($a['hora_entra'], $b['hora_entra']); + return strcmp($a["hora_entra"], $b["hora_entra"]); } }