from app.main.data_model.games.leadedge.le_company import LECompany
from app.main.data_model.games.leadedge.le_round import LERound
from app.main.data_model.games.leadedge.le_static_company import LEStaticCompany


class LECompanyRepository:

    def __init__(self, session):
        self.session = session

    def get_company_by_id(self, company_id):
        leadedge_company = self.session.query(LECompany).filter(LECompany.id == company_id).first()
        return leadedge_company

    def get_companies_by_game_session_id(self, game_session_id):
        leadedge_companies = self.session.query(LECompany).filter(LECompany.game_session_id == game_session_id).all()
        return leadedge_companies

    def get_company_by_name_and_game_session_id(self, company_name, game_session_id):
        leadedge_company = self.session.query(LECompany).filter(
            LECompany.name == company_name,
            LECompany.game_session_id == game_session_id
        ).first()
        return leadedge_company

    def get_static_companies(self):
        leadedge_static_companies = self.session.query(LEStaticCompany).all()
        return leadedge_static_companies

    def get_companies_by_round_id(self, round_id):
        le_round = self.session.query(LERound).filter(LERound.id == round_id).first()
        return self.session.query(LECompany).filter(
            LECompany.game_session_id == le_round.game_session_id
        ).all()

    def delete_company(self, company_id):
        self.session.query(LECompany).filter(LECompany.id == company_id).delete()
        self.session.flush()

