from app.main.services.games.pv_game_service import PVGameService

import logging
logger = logging.getLogger()


class PVGameOrchestrator:

    def __init__(self, session):
        self.session = session
        self.pv_game_service = PVGameService(session)

    def update_center(self, user_id, center_data):
        logger.info("PVGameOrchestrator update_center  user_id: {}".format(user_id))
        return self.pv_game_service.update_center(user_id, center_data)

    def get_center_data(self, user_id, game_session_id):
        logger.info("PVGameOrchestrator get_center_data  user_id: {}, game_session_id: {}".format(user_id, game_session_id))
        return self.pv_game_service.get_center_data(user_id, game_session_id)

    def save_decisions(self, user_id, decisions_data):
        logger.info("PVGameOrchestrator save_decisions  user_id: {}".format(user_id))
        return self.pv_game_service.save_decisions(user_id, decisions_data)

    def save_decision_details(self, user_id, decision_details_data):
        logger.info("PVGameOrchestrator save_decision_details  user_id: {}".format(user_id))
        return self.pv_game_service.save_decision_details(user_id, decision_details_data)

    def get_decision_details(self, user_id, center_id, day_id):
        logger.info("PVGameOrchestrator get_decision_details user_id: {}, center_id: {}, day_id: {} ".format(user_id, center_id, day_id))
        return self.pv_game_service.get_decision_details(user_id, center_id, day_id)

    def get_score(self, user_id, center_id):
        logger.info("PVGameOrchestrator get_score user_id: {}, center_id: {}".format(user_id, center_id))
        return self.pv_game_service.get_score(user_id, center_id)

    def get_scores(self, user_id, game_session_id):
        logger.info("PVGameOrchestrator get_scores  user_id: {}, game_session_id: {}".format(user_id, game_session_id))
        return self.pv_game_service.get_scores(user_id, game_session_id)

    def get_historic_scores(self, user_id, center_id):
        logger.info("PVGameOrchestrator get_historic_scores user_id: {}, center_id: {}".format(user_id, center_id))
        return self.pv_game_service.get_historic_scores(user_id, center_id)

    def get_badges_status(self, user_id, center_id):
        logger.info("PVGameOrchestrator get_badges_status user_id: {}, center_id: {}".format(user_id, center_id))
        return self.pv_game_service.get_badges_status(center_id)

    def close_day(self, user_id, center_id, day_id):
        logger.info("PVGameOrchestrator close_day user_id: {}, center_id: {}, day_id: {} ".format(user_id, center_id, day_id))
        return self.pv_game_service.close_day(user_id, center_id, day_id)

    def activate_imputability_badge(self, user_id, center_id, level):
        logger.info("PVGameOrchestrator activate_imputability_badge user_id: {}, center_id: {}, level: {} ".format(user_id, center_id, level))
        return self.pv_game_service.activate_imputability_badge(user_id, center_id, level)

    def manual_open_day(self, user_id, game_session_id, day_id):
        logger.info("PVGameOrchestrator manual_open_day user_id: {}, game_session_id: {}, day_id: {} ".format(user_id, game_session_id, day_id))
        return self.pv_game_service.manual_open_day(user_id, game_session_id, day_id)

    def manual_force_open_all_days(self, user_id, game_session_id):
        logger.info("PVGameOrchestrator manual_force_open_all_days user_id: {}, game_session_id: {}".format(user_id, game_session_id))
        return self.pv_game_service.manual_force_open_all_days(user_id, game_session_id)

    def manual_close_day(self, user_id, game_session_id, day_id):
        logger.info("PVGameOrchestrator manual_close_day user_id: {}, game_session_id: {}, day_id: {} ".format(user_id,
                                                                                                              game_session_id,
                                                                                                              day_id))
        return self.pv_game_service.manual_close_day(user_id, game_session_id, day_id)



