#!/bin/bash

# Простой тест Emergency Service API
# Тестирование только работающих endpoints

# Цвета для вывода
GREEN='\033[0;32m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'

success() { echo -e "${GREEN}✅ $1${NC}"; }
error() { echo -e "${RED}❌ $1${NC}"; }
info() { echo -e "${BLUE}ℹ️  $1${NC}"; }

BASE_URL="http://127.0.0.1:8002"
USER_URL="http://127.0.0.1:8001"

# Получение токена
info "1. Получение токена авторизации..."
LOGIN_RESPONSE=$(curl -s -X POST "${USER_URL}/api/v1/auth/login" \
    -H "Content-Type: application/json" \
    -d '{"username":"apitestuser","password":"testpass123"}')

TOKEN=$(echo "$LOGIN_RESPONSE" | python3 -c "import sys,json; data=json.load(sys.stdin); print(data['access_token'])" 2>/dev/null)

if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then
    error "Ошибка получения токена"
    echo "$LOGIN_RESPONSE"
    exit 1
fi

success "Токен получен: ${TOKEN:0:20}..."

# Тест 1: Health Check
info "2. Проверка работы сервиса..."
HEALTH_RESPONSE=$(curl -s "${BASE_URL}/health")
if echo "$HEALTH_RESPONSE" | grep -q "healthy"; then
    success "Health Check прошел"
else
    error "Health Check не прошел: $HEALTH_RESPONSE"
fi

# Тест 2: Создание оповещения
info "3. Создание экстренного оповещения..."
ALERT_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/v1/alert" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $TOKEN" \
    -d '{
        "latitude": 55.7558,
        "longitude": 37.6176,
        "alert_type": "general",
        "message": "API тест - экстренное оповещение"
    }')

ALERT_ID=$(echo "$ALERT_RESPONSE" | python3 -c "import sys,json; data=json.load(sys.stdin); print(data['id'])" 2>/dev/null)

if [ -n "$ALERT_ID" ] && [ "$ALERT_ID" != "null" ]; then
    success "Оповещение создано с ID: $ALERT_ID"
else
    error "Ошибка создания оповещения: $ALERT_RESPONSE"
fi

# Тест 3: Получение статистики
info "4. Получение статистики..."
STATS_RESPONSE=$(curl -s -X GET "${BASE_URL}/api/v1/stats" \
    -H "Authorization: Bearer $TOKEN")

if echo "$STATS_RESPONSE" | grep -q "total_alerts"; then
    success "Статистика получена"
    echo "$STATS_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$STATS_RESPONSE"
else
    error "Ошибка получения статистики: $STATS_RESPONSE"
fi

# Тест 4: Поиск ближайших оповещений
info "5. Поиск ближайших оповещений..."
NEARBY_RESPONSE=$(curl -s -X GET "${BASE_URL}/api/v1/alerts/nearby?latitude=55.7558&longitude=37.6176&radius_km=10" \
    -H "Authorization: Bearer $TOKEN")

if echo "$NEARBY_RESPONSE" | grep -q "distance_km"; then
    success "Ближайшие оповещения найдены"
    echo "$NEARBY_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$NEARBY_RESPONSE"
else
    error "Ошибка поиска ближайших оповещений: $NEARBY_RESPONSE"
fi

# Тест 5: Отклик на оповещение (если есть ID)
if [ -n "$ALERT_ID" ] && [ "$ALERT_ID" != "null" ]; then
    info "6. Создание отклика на оповещение..."
    RESPONSE_DATA=$(curl -s -X POST "${BASE_URL}/api/v1/alert/${ALERT_ID}/respond" \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $TOKEN" \
        -d '{
            "response_type": "help_on_way",
            "message": "Еду на помощь!",
            "eta_minutes": 10
        }')
    
    if echo "$RESPONSE_DATA" | grep -q "response_type"; then
        success "Отклик на оповещение создан"
        echo "$RESPONSE_DATA" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE_DATA"
    else
        error "Ошибка создания отклика: $RESPONSE_DATA"
    fi
fi

info "Тестирование завершено!"