# src/utils/helpers.py

import pandas as pd
import logging
from src.utils.logger import setup_logger

logger = setup_logger(__name__)


def read_excel(file_path: str) -> pd.DataFrame:
    """
    Reads an Excel file and returns a pandas DataFrame.

    :param file_path: Path to the Excel file.
    :return: pandas DataFrame.
    """
    try:
        df = pd.read_excel(file_path, sheet_name=None)  # Read all sheets
        logger.info(f"Excel file '{file_path}' read successfully.")
        return df
    except Exception as e:
        logger.error(f"Error reading Excel file '{file_path}': {e}")
        raise IOError(f"Error reading Excel file: {e}")


def save_pdf(file_path: str, content: str):
    """
    Saves content to a PDF file using ReportLab.

    :param file_path: Path to save the PDF.
    :param content: Content to write into the PDF.
    """
    try:
        from reportlab.lib.pagesizes import letter
        from reportlab.pdfgen import canvas

        c = canvas.Canvas(file_path, pagesize=letter)
        width, height = letter
        textobject = c.beginText(50, height - 50)
        textobject.setFont("Helvetica", 12)

        for line in content.split('\n'):
            textobject.textLine(line)
        c.drawText(textobject)
        c.showPage()
        c.save()
        logger.info(f"PDF saved successfully at {file_path}.")
    except ImportError:
        logger.error("ReportLab library is not installed.")
        raise
    except Exception as e:
        logger.error(f"Failed to save PDF: {e}")
        raise