#!/usr/bin/env python3
import json
import sys
import requests
from datetime import date, datetime
import time

# Настройки для тестирования
BASE_URL = "http://localhost:8000"  # URL API Gateway
TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyOSIsImVtYWlsIjoidGVzdDJAZXhhbXBsZS5jb20iLCJleHAiOjE3NTg4NjY5ODJ9._AXkBLeMI4zxC9shFUS3744miuyO8CDnJD1X1AqbLsw"

# Функция для добавления записи в календарь через мобильный эндпоинт
def create_mobile_calendar_entry():
    url = f"{BASE_URL}/api/v1/calendar/entries/mobile"
    
    # Данные для создания записи в формате мобильного приложения
    today_str = date.today().isoformat()
    
    data = {
        "date": today_str,
        "type": "MENSTRUATION",
        "flow_intensity": 3,  # medium
        "symptoms": ["CRAMPS", "HEADACHE"],
        "mood": "HAPPY",
        "notes": "Тестовая запись из мобильного приложения"
    }
    
    headers = {
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json"
    }
    
    print(f"\n=== Тест мобильного эндпоинта ===")
    print(f"Отправка запроса POST на {url}")
    print(f"Данные: {json.dumps(data, indent=2, ensure_ascii=False)}")
    
    response = requests.post(url, json=data, headers=headers)
    
    print(f"Код ответа: {response.status_code}")
    
    if response.status_code == 201:
        print("✓ Запрос успешно выполнен")
        print(f"Ответ: {json.dumps(response.json(), indent=2, ensure_ascii=False)}")
        return True
    else:
        print(f"✗ Ошибка при выполнении запроса: {response.text}")
        return False

# Функция для получения записей календаря
def get_calendar_entries():
    url = f"{BASE_URL}/api/v1/entries"
    
    headers = {
        "Authorization": f"Bearer {TOKEN}"
    }
    
    print(f"\n=== Получение записей календаря ===")
    print(f"Отправка запроса GET на {url}")
    
    response = requests.get(url, headers=headers)
    
    print(f"Код ответа: {response.status_code}")
    
    if response.status_code == 200:
        print("✓ Запрос успешно выполнен")
        entries = response.json()
        print(f"Количество записей: {len(entries)}")
        return True
    else:
        print(f"✗ Ошибка при выполнении запроса: {response.text}")
        return False

if __name__ == "__main__":
    print("Тестирование API календаря для мобильного приложения")
    
    # Проверяем, что сервисы запущены
    try:
        health_check = requests.get(f"{BASE_URL}/api/v1/gateway/health")
        if health_check.status_code != 200:
            print("API Gateway недоступен. Убедитесь, что сервисы запущены.")
            sys.exit(1)
    except requests.exceptions.ConnectionError:
        print("Не удалось подключиться к API Gateway. Убедитесь, что сервисы запущены.")
        sys.exit(1)
    
    # Запускаем тесты
    success = True
    
    # Тест 1: Создание записи в календаре через мобильный эндпоинт
    if not create_mobile_calendar_entry():
        success = False
    
    # Тест 2: Проверка получения записей
    if not get_calendar_entries():
        success = False
    
    # Выводим общий результат
    if success:
        print("\n✅ Все тесты пройдены успешно!")
        sys.exit(0)
    else:
        print("\n❌ Некоторые тесты не пройдены.")
        sys.exit(1)