from app.main.util.json_objects.games.leadedge.le_company_result_dto import LECompanyResultDTO
from app.main.util.json_objects.games.leadedge.le_company_scenario_dto import LECompanyScenarioDTO
from app.main.util.json_objects.json_serializable import JsonSerializable


class LERoundScenarioDTO(JsonSerializable):

    def __init__(self):
        JsonSerializable.__init__(self)
        self.id = None
        self.name = None
        self.is_equilibrium = None
        self.is_decision = None
        self.le_round_id = None
        self.le_company_owner_id = None
        self.scenarios = None
        self.results = None

    def init(self, round_scenario):
        self.id = round_scenario.id
        self.name = round_scenario.name
        self.is_equilibrium = round_scenario.is_equilibrium
        self.is_decision = round_scenario.is_decision
        self.le_round_id = round_scenario.le_round_id
        self.le_company_owner_id = round_scenario.le_company_owner_id
        results_dict = {}
        self.results = []
        for company_result in round_scenario.results:
            company_result_dto = LECompanyResultDTO()
            company_result_dto.init(company_result)
            self.results.append(company_result_dto)
            results_dict[company_result.company_id] = company_result
        self.scenarios = []
        for company_scenario in round_scenario.scenarios:
            company_scenario_dto = LECompanyScenarioDTO()
            if company_scenario.company_id in results_dict:
                company_result = results_dict[company_scenario.company_id]
                company_scenario_dto.init(company_scenario, company_result.total_rd_expenses, company_result.net_cash)
            else:
                company_scenario_dto.init(company_scenario, 1000, 17642222)
            self.scenarios.append(company_scenario_dto)


