from app.main.services.common.moderator_service import ModeratorService

import logging
logger = logging.getLogger()


class ModeratorOrchestrator:

    def __init__(self, session):
        self.session = session
        self.moderator_service = ModeratorService(self.session)

    def get_courses(self, user_id):
        logger.info("ModeratorOrchestrator get_courses")
        return self.moderator_service.get_courses(user_id)

    def add_course(self, user_id, course_data):
        logger.info("ModeratorOrchestrator add_course")
        return self.moderator_service.add_course(user_id, course_data)

    def edit_course(self, user_id, course_data):
        logger.info("ModeratorOrchestrator edit_course")
        return self.moderator_service.edit_course(user_id, course_data)

    def add_module(self, user_id, module_data):
        logger.info("ModeratorOrchestrator add_module")
        return self.moderator_service.add_module(user_id, module_data)

    def add_documents(self, user_id,documents_data):
        logger.info("ModeratorOrchestrator add_documents")
        return self.moderator_service.add_documents(user_id, documents_data)

    def add_notion(self, user_id,notion_data):
        logger.info("ModeratorOrchestrator add_notion")
        return self.moderator_service.add_notion(user_id, notion_data)

    def add_quiz(self, user_id, quiz_data):
        logger.info("ModeratorOrchestrator add_quiz")
        return self.moderator_service.add_quiz(user_id, quiz_data)

    def get_course_categories(self):
        logger.info("ModeratorOrchestrator get_course_categories")
        return self.moderator_service.get_course_categories()

    def get_games(self, user_id):
        logger.info("ModeratorOrchestrator get_games")
        return self.moderator_service.get_games(user_id)

    def add_game(self, user_id, game_data):
        logger.info("ModeratorOrchestrator add_game")
        return self.moderator_service.add_game(user_id, game_data)

    def get_stratedge_configurations(self, user_id):
        logger.info("ModeratorOrchestrator get_stratedge_configurations")
        return self.moderator_service.get_stratedge_configurations(user_id)

    def add_training_session(self, user_id, training_session_data):
        logger.info("ModeratorOrchestrator add_training_session")
        return self.moderator_service.add_training_session(user_id, training_session_data)

    def get_last_comments(self, user_id):
        logger.info("ModeratorOrchestrator get_last_comments")
        return self.moderator_service.get_last_comments(user_id)

    def get_course_elements(self, course_id):
        logger.info("ModeratorOrchestrator get_course_cloneable_elements")
        return self.moderator_service.get_course_cloneable_elements(course_id)

    def get_discussions(self, training_session_id):
        logger.info("ModeratorOrchestrator get_discussions")
        return self.moderator_service.get_discussions(training_session_id)

    def clone_elements(self, user_id, elements_data):
        logger.info("ModeratorOrchestrator clone_elements")
        return self.moderator_service.clone_elements(user_id, elements_data)

    def edit_module(self, user_id, module_data):
        logger.info("ModeratorOrchestrator edit_module")
        return self.moderator_service.edit_module(user_id, module_data)

    def edit_documents(self, user_id, documents_data):
        logger.info("ModeratorOrchestrator edit_documents")
        return self.moderator_service.edit_documents(user_id, documents_data)

    def edit_game_config(self, user_id, game_config_data):
        logger.info("ModeratorOrchestrator edit_game_config")
        return self.moderator_service.edit_game_config(user_id, game_config_data)

    def edit_quiz(self, user_id, quiz_data):
        logger.info("ModeratorOrchestrator edit_quiz")
        return self.moderator_service.edit_quiz(user_id, quiz_data)

    def edit_notion(self, user_id, notion_data):
        logger.info("ModeratorOrchestrator edit_notion")
        return self.moderator_service.edit_notion(user_id, notion_data)

    def edit_attached_document(self, user_id, attached_document_data):
        logger.info("ModeratorOrchestrator edit_attached_document")
        return self.moderator_service.edit_attached_document(user_id, attached_document_data)

    def edit_question(self, user_id, question_data):
        logger.info("ModeratorOrchestrator edit_question")
        return self.moderator_service.edit_question(user_id, question_data)

    def edit_question_option(self, user_id, question_option_data):
        logger.info("ModeratorOrchestrator edit_question_option")
        return self.moderator_service.edit_question_option(user_id, question_option_data)

    def delete_module(self, user_id, module_id):
        logger.info("ModeratorOrchestrator delete_module")
        return self.moderator_service.delete_module(user_id, module_id)

    def delete_documents(self, user_id, documents_id):
        logger.info("ModeratorOrchestrator delete_documents")
        return self.moderator_service.delete_documents(user_id, documents_id)

    def delete_game_config(self, user_id, game_config_id):
        logger.info("ModeratorOrchestrator delete_game_config")
        return self.moderator_service.delete_game_config(user_id, game_config_id)

    def delete_quiz(self, user_id, quiz_id):
        logger.info("ModeratorOrchestrator delete_quiz")
        return self.moderator_service.delete_quiz(user_id, quiz_id)

    def delete_question(self, user_id, question_id):
        logger.info("ModeratorOrchestrator delete_question")
        return self.moderator_service.delete_question(user_id, question_id)

    def delete_question_option(self, user_id, question_option_id):
        logger.info("ModeratorOrchestrator delete_question_option")
        return self.moderator_service.delete_question_option(user_id, question_option_id)

    def delete_notion(self, user_id, notion_id):
        logger.info("ModeratorOrchestrator delete_notion")
        return self.moderator_service.delete_notion(user_id, notion_id)

    def delete_attached_document(self, user_id, attached_document_id):
        logger.info("ModeratorOrchestrator delete_attached_document")
        return self.moderator_service.delete_attached_document(user_id, attached_document_id)

    def get_course_training_sessions(self, course_id):
        logger.info("ModeratorOrchestrator get_course_training_sessions")
        return self.moderator_service.get_course_training_sessions(course_id)

    def edit_training_session(self, user_id, training_session_data):
        logger.info("ModeratorOrchestrator edit_training_session")
        return self.moderator_service.edit_training_session(user_id, training_session_data)

    def delete_training_session(self, user_id, training_session_id):
        logger.info("ModeratorOrchestrator delete_training_session")
        return self.moderator_service.delete_training_session(user_id, training_session_id)

    def delete_course(self, user_id, course_id):
        logger.info("ModeratorOrchestrator delete_course")
        return self.moderator_service.delete_course(user_id, course_id)

    def get_training_session_dashboards(self, training_session_id):
        logger.info("ModeratorOrchestrator get_training_session_dashboards")
        return self.moderator_service.get_training_session_dashboards(training_session_id)

    def get_export_training_session_dashboards(self, training_session_id):
        logger.info("ModeratorOrchestrator get_export_training_session_dashboards")
        return self.moderator_service.get_export_training_session_dashboards(training_session_id)

    def get_participants(self, training_session_id):
        logger.info("ModeratorOrchestrator get_participants")
        return self.moderator_service.get_students(training_session_id)

    def get_course_content(self, course_id):
        logger.info("ModeratorOrchestrator get_course_content")
        return self.moderator_service.get_course_content(course_id)

    def edit_participant_activeness(self, participant_data):
        logger.info("ModeratorOrchestrator edit_participant_activeness")
        return self.moderator_service.edit_participant_activeness(participant_data)

    def save_comment(self, user_id, comment_data):
        logger.info("ModeratorOrchestrator save_comment")
        return self.moderator_service.save_comment(user_id, comment_data)

    def delete_comment(self, comment_data):
        logger.info("ModeratorOrchestrator delete_comment")
        return self.moderator_service.delete_comment(comment_data)

    def add_attached_document(self, user_id, attached_document_data):
        logger.info("ModeratorOrchestrator add_attached_document")
        return self.moderator_service.add_attached_document(user_id, attached_document_data)

    def add_question(self, user_id, question_data):
        logger.info("ModeratorOrchestrator add_question")
        return self.moderator_service.add_question(user_id, question_data)

    def add_question_option(self, user_id, question_option_data):
        logger.info("ModeratorOrchestrator add_question_option")
        return self.moderator_service.add_question_option(user_id, question_option_data)

    def get_is_client_expired(self, user_id):
        logger.info("ModeratorOrchestrator get_is_client_expired")
        return self.moderator_service.get_is_client_expired(user_id)

    def edit_elements_orders(self, user_id, order_data):
        logger.info("ModeratorOrchestrator edit_elements_orders")
        return self.moderator_service.edit_elements_orders(user_id, order_data)

    def get_kpis(self, user_id, course_id):
        logger.info("ModeratorOrchestrator get_kpis")
        return self.moderator_service.get_kpis(user_id, course_id)

    def relance_participant(self, user_id, training_session_id, participant_id):
        logger.info("ModeratorOrchestrator relance_participant")
        return self.moderator_service.relance_participant(user_id, training_session_id, participant_id)




