convertPdf method
- BuildContext context,
Metodo que genera y exporta un PDF con los tiempos de una sesión determinada.
Se obtiene la información del usuario, la sesión y el tipo de cubo correspondiente para luego generar y guardar un archivo PDF. Dependiendo de la opción de compartir seleccionada, se permite descargarlo o compartirlo.
Parámetros:
context
: Contexto de la aplicación para acceder a los datos y mostrar mensajes.shareOption
: Indica si el archivo debe ser descargado o compartido.
Características:
- Si no se encuentra el usuario, la sesión o el tipo de cubo, el proceso se detiene.
- Si no hay tiempos registrados, se muestra un mensaje de error.
- Si ocurre un error al generar el PDF, se muestra un mensaje en pantalla.
Implementation
Future<void> convertPdf(BuildContext context, ShareOption shareOption) async {
try {
// CONSEGUIR EL USUARIO ACTUAL
final currentUser = context.read<CurrentUser>().user;
final userDaoSb = UserDaoSb();
final idUser = await userDaoSb.getIdUserFromName(currentUser!.username);
// VERIFICAR QUE NO DE ERROR
if (idUser == -1) return;
// CONSEGUIR LA SESION Y EL TIPO DE CUBO ACTUAL
final currentSession = context.read<CurrentSession>();
final currentCube = context.read<CurrentCubeType>();
final cubeTypeDaoSb = CubeTypeDaoSb();
final cubeType = await cubeTypeDaoSb.getCubeTypeByNameAndIdUser(
currentCube.cubeType!.cubeName, idUser);
// VERIFICAR QUE NO DE ERROR
if (cubeType.idCube == -1) return;
final sessionDaoSb = SessionDaoSb();
final session = await sessionDaoSb.getSessionByUserCubeName(
idUser, currentSession.session!.sessionName, cubeType.idCube!);
// VERIFICAR QUE NO DE ERROR
if (session!.idSession == -1) return;
// CONSEGUIR TODOS LOS TIEMPOS
final timeTrainingDaoSb = TimeTrainingDaoSb();
final times = await timeTrainingDaoSb.getTimesOfSession(session.idSession);
if (times.isEmpty) {
AlertUtil.showSnackBarError(context, "no_times_found");
return;
} // VERIFICAR QUE NO ESTE VACIA
// SE GENERAL EL PDF
final pdf = await _generatePdf(currentSession, currentCube, times);
await _pdfExport(context, pdf, currentSession.session!.sessionName,
shareOption: shareOption);
} catch (e) {
DatabaseHelper.logger.e("Error al generar el PDF: $e");
AlertUtil.showSnackBarError(context, "pdf_generation_error");
}
}