from flask import request, jsonify
import os
import requests
import globs

api_key = os.getenv('api_key')
base_url = os.getenv('base_url')  # URL сервера, например, 'https://api.notisend.ru/v1/email/'
token = os.getenv('token')  # Ваш токен

def save_db():
    err = 0

    # Проверяем наличие глобальных переменных и инициализируем их, если они отсутствуют
    if not hasattr(globs, 'name'):
        globs.name = None
    if not hasattr(globs, 'email'):
        globs.email = None
    if not hasattr(globs, 'phone'):
        globs.phone = None
    if not hasattr(globs, 'grup_id'):
        globs.grup_id = None
    if not hasattr(globs, 'pr1'):
        globs.pr1 = None
    if not hasattr(globs, 'pr2'):
        globs.pr2 = None
    if not hasattr(globs, 'server_response'):
        globs.server_response = None

    if api_key == request.args.get('api'):
        # Получаем данные из глобальных переменных
        names = globs.name
        emails = globs.email
        phones = globs.phone
        grups_id = globs.grup_id  # Это List ID
        pr1s = globs.pr1
        pr2s = globs.pr2

        # Проверка значений переменных
        if not all([names, emails, phones, grups_id, pr1s, pr2s]):
            response_data = {
                "status": "error",
                "err": 0,
                "message": "Some required data is missing",
                "server_response": None
            }
            return jsonify(response_data)

        # Создаем данные для отправки
        data = {
            'list_id': grups_id,
            'email': emails,
            'values': [
                {'value': names, 'parameter_id': 'name'},
                {'value': phones, 'parameter_id': 'phone'},
                {'value': pr1s, 'parameter_id': 'utm1'},
                {'value': pr2s, 'parameter_id': 'utm2'}
            ]
        }

        # Отправляем запрос
        headers = {
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        }
        response = requests.post(f"{base_url}lists/{data['list_id']}/recipients", json=data, headers=headers)

        # Сохраняем ответ от сервера в глобальную переменную
        globs.server_response = response.text

        # Проверяем статус ответа
        if response.status_code == 200:
            err = 1
            response_message = "Operation completed successfully"
        else:
            response_message = f"Error: {response.status_code} - {response.text}"
            err = 0
    else:
        response_message = "Invalid API key"

    response_data = {
        "status": "success" if err == 1 else "error",
        "err": err,
        "message": response_message,
        "server_response": globs.server_response if err == 1 else None
    }

    return jsonify(response_data)