#!/bin/bash

# Test script for dispatcher ground users list endpoint
# Tests that ground staff are properly returned by base code

BASE_URL="https://api.captaindecision.com"
ADMIN_EMAIL="admin.test@slipstream.local"
ADMIN_PASSWORD="Test@123"

echo "========================================="
echo "DISPATCHER ON DUTY - Ground Users List"
echo "========================================="
echo ""

# Step 1: Admin login
echo "Step 1: Admin login..."
ADMIN_LOGIN=$(curl -s -X POST "$BASE_URL/auth/login.php" \
  -H "Content-Type: application/json" \
  -d "{\"email\":\"$ADMIN_EMAIL\",\"password\":\"$ADMIN_PASSWORD\"}")

ADMIN_TOKEN=$(echo "$ADMIN_LOGIN" | grep -o '"token":"[^"]*' | sed 's/"token":"//')

if [ -z "$ADMIN_TOKEN" ]; then
    echo "FAIL: Admin login failed"
    echo "Response: $ADMIN_LOGIN"
    exit 1
fi
echo "OK: Admin logged in"
echo ""

# Step 2: Test missing base_code parameter
echo "Step 2: Test missing base_code parameter..."
NO_PARAM=$(curl -s -X GET "$BASE_URL/dispatcher-on-duty/list-ground-users.php" \
  -H "Authorization: Bearer $ADMIN_TOKEN")

if echo "$NO_PARAM" | grep -q '"error".*base_code'; then
    echo "PASS: Correctly rejects missing base_code"
else
    echo "FAIL: Should reject missing base_code"
    echo "Response: $NO_PARAM"
fi
echo ""

# Step 3: Test invalid base_code parameter
echo "Step 3: Test invalid base_code parameter..."
INVALID_CODE=$(curl -s -X GET "$BASE_URL/dispatcher-on-duty/list-ground-users.php?base_code=invalid@123" \
  -H "Authorization: Bearer $ADMIN_TOKEN")

if echo "$INVALID_CODE" | grep -q '"error".*format'; then
    echo "PASS: Correctly rejects invalid base_code format"
else
    echo "FAIL: Should reject invalid base_code"
    echo "Response: $INVALID_CODE"
fi
echo ""

# Step 4: Test with valid base code (GMFF)
echo "Step 4: Query ground staff for base GMFF..."
GMFF_USERS=$(curl -s -X GET "$BASE_URL/dispatcher-on-duty/list-ground-users.php?base_code=GMFF" \
  -H "Authorization: Bearer $ADMIN_TOKEN")

if echo "$GMFF_USERS" | grep -q '"success":true'; then
    echo "PASS: Query successful for GMFF"
    
    # Check response structure
    if echo "$GMFF_USERS" | grep -q '"users"'; then
        echo "PASS: Response includes users array"
        
        # Check if users have required fields
        if echo "$GMFF_USERS" | grep -q '"user_id"'; then
            echo "PASS: Response includes user_id field"
        else
            echo "WARN: Response missing user_id field"
        fi
        
        if echo "$GMFF_USERS" | grep -q '"full_name"'; then
            echo "PASS: Response includes full_name field"
        else
            echo "WARN: Response missing full_name field"
        fi
        
        if echo "$GMFF_USERS" | grep -q '"email"'; then
            echo "PASS: Response includes email field"
        fi
        
        # Show sample response
        echo "Sample response:"
        echo "$GMFF_USERS" | head -30
    else
        echo "FAIL: Response missing users array"
        echo "Response: $GMFF_USERS"
    fi
else
    echo "FAIL: Query failed for GMFF"
    echo "Response: $GMFF_USERS"
fi
echo ""

# Step 5: Test with different base code
echo "Step 5: Query ground staff for base LFML..."
LFML_USERS=$(curl -s -X GET "$BASE_URL/dispatcher-on-duty/list-ground-users.php?base_code=LFML" \
  -H "Authorization: Bearer $ADMIN_TOKEN")

if echo "$LFML_USERS" | grep -q '"success":true'; then
    echo "PASS: Query successful for LFML"
    echo "$LFML_USERS" | grep -o '"user_id"' | wc -l | xargs echo "Found users:"
else
    echo "FAIL: Query failed for LFML"
fi
echo ""

echo "========================================="
echo "Ground users list endpoint tests complete"
echo "========================================="
