from services.ppt_generator.data_classes.project import Project, Slide
from services.ppt_generator.structure import PPTStructure
from tasks.celery_worker import celery
from utils.client_check import ClientConfig
from utils.logger import ServiceLogger

XCM_logger = ServiceLogger()
XCM_logger = XCM_logger.get_logger(__name__)
XCM_logger.info("Presentation tasks started successfully.")


@celery.task
def research_slide(
    project_id: str, section_number: int, slide_number: int, client: str
):
    "Research the slide."
    try:
        client_config = ClientConfig(client).get_client_config()
        project = Project.check_project_in_db(project_id=project_id)
        ppt_structure = PPTStructure(project=project, client=client_config)
        slide: Slide = ppt_structure.research_slide(
            section_number=section_number, slide_number=slide_number
        )
        return slide.json()

    except Exception as e:  # pylint: disable=broad-except
        XCM_logger.error(e, exc_info=True)
        return {"error": str(e)}
