from services.odoo_services import OdooService
import os
from dotenv import load_dotenv

# Load the environment variables from .env file
load_dotenv()

BASE_URL = os.getenv('BASE_URL')

class GetSurveyService:
    @staticmethod
    def get_survey_service(survey_id=None):
        #Get survey from Odoo when survey id is provided
        if survey_id:
            survey = OdooService.search('survey.survey',[[['id', '=', survey_id],['survey_type','=','survey']]]) #
            
            survey_details = OdooService.readAll('survey.survey', survey)
            
            if survey_details:
                survey_detail = survey_details[0]
                survey_uuid = survey_detail['access_token']
                survey_public_url =  f"{BASE_URL}/{survey_uuid}"
                  
                return {
                    'survey_id': survey_detail['id'],
                    'survey_name': survey_detail['title'],
                    'survey_public_url': survey_public_url,
                    'number_of_questions': len(survey_detail['question_ids']),
                }
                
        else:
            surveyes = OdooService.search('survey.survey',[[['survey_type','=','survey']]]) #
            
            survey_details = OdooService.readAll('survey.survey', surveyes)
            
            survey_response = []
            for survey_detail in survey_details:
                survey_id = survey_detail['id'] if survey_detail else None
                survey_name = survey_detail['title']
                survey_uuid = survey_detail['access_token']
                survey_public_url =  f"{BASE_URL}/{survey_uuid}"
                number_of_questions = len(survey_detail['question_ids'])

                survey_response.append({
                    'survey_id': survey_id,
                    'survey_name': survey_name,
                    'survey_public_url': survey_public_url,
                    'number_of_questions': number_of_questions
                })
            
            return survey_response
        
        return None