from dostadmin import app_logger, db
from dostadmin.db_model.experiment import Experiment
from dostadmin.db_model.user_experiment import UserExperiment


class ExperimentService:
    def add_experiment_to_experience(self, experiences):
        for experience in experiences:
            try:
                user_experience = experience["experience"]
                experiment_id = experience["experiment_id"]
                group_name = experience["group_name"]

                user_experience.experiment_id = experiment_id
                user_experience.experiment_group_name = group_name

                self.add_user_experiment(user_experience, experiment_id, group_name)
            except Exception as e:
                app_logger.error(
                    f"Group Assignment: Exception occurred while assigning group for experience_id {user_experience.id}. Error: {e}"
                )
                continue
        db.session.commit()

    def add_user_experiment(self, experience, experiment_id, group_name):
        experiment = Experiment.query.get_by_id(experiment_id)
        user_experiment = UserExperiment(
            experience_id=experience.id,
            user_id=experience.user_id,
            phone=experience.phone,
            experiment_name=experiment.name,
            experiment_group_name=group_name,
        )
        db.session.add(user_experiment)
