|
|
|
@ -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: |
|
|
|
// SUBRUTAS INVOCADAS POR LAS RUTAS: |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
|