Browse Source

Funciones de controlador para ruta de get sedes (ruta ya existe de commit anterior)

main
jirho 1 year ago
parent
commit
32fcbf0968
  1. 87
      src/app/Http/Controllers/ApiPersonaController.php

87
src/app/Http/Controllers/ApiPersonaController.php

@ -531,6 +531,93 @@ class ApiPersonaController extends Controller
}
}
/**
* Obtiene las sedes 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 `getSedesPor` con el tipo 'dni'.
* Si se proporciona un teléfono, se llama a `getSedesPor` 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 sedes o un mensaje de error.
*/
public static function getSedes(Request $request)
{
if (!$request->has("dni") && !$request->has("telefono")) {
return response()->json(
["error" => __("persona.DEBE_INGRESAR_DNI_O_TELEFONO")],
HttpStatus::BAD_REQUEST
);
}
if ($request->has("dni")) {
return self::getSedesPor("dni", $request->get("dni"));
}
if ($request->has("telefono")) {
return self::getSedesPor("telefono", $request->get("telefono"));
}
}
/**
* Obtiene las sedes 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 codigos de sede donde trabaja.
* 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 sedes o un mensaje de error.
* @throws InvalidArgumentException Si el tipo de búsqueda no es válido.
*/
private static function getSedesPor(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->getSedes(), 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
);
}
}
// SUBRUTAS INVOCADAS POR LAS RUTAS:
/**

Loading…
Cancel
Save