convertPdf method

Future<void> convertPdf(
  1. BuildContext context,
  2. ShareOption shareOption
)

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");
  }
}