#!/bin/bash
#
# Verify FlagPicker codes match LanguageManager codes
#
# This script ensures that the FlagPicker component's country codes
# exactly match the LanguageManager's VALID_COUNTRY_CODES constant.
#

set -e

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo "========================================="
echo "FlagPicker Code Verification"
echo "========================================="
echo ""

# Paths
LANGUAGE_MANAGER="../includes/Core/LanguageManager.php"
FLAG_PICKER="./src/components/FlagPicker.js"

# Check files exist
if [ ! -f "$LANGUAGE_MANAGER" ]; then
    echo -e "${RED}ERROR: LanguageManager.php not found${NC}"
    exit 1
fi

if [ ! -f "$FLAG_PICKER" ]; then
    echo -e "${RED}ERROR: FlagPicker.js not found${NC}"
    exit 1
fi

# Extract codes
echo "Extracting codes from LanguageManager.php..."
MANAGER_CODES=$(grep -o "'[A-Z][A-Z]'" "$LANGUAGE_MANAGER" | sort | uniq)
MANAGER_COUNT=$(echo "$MANAGER_CODES" | wc -l)

echo "Extracting codes from FlagPicker.js..."
PICKER_CODES=$(grep -o "'[A-Z][A-Z]':" "$FLAG_PICKER" | sed "s/://" | sort | uniq)
PICKER_COUNT=$(echo "$PICKER_CODES" | wc -l)

# Report counts
echo ""
echo "Code Counts:"
echo "  LanguageManager: $MANAGER_COUNT codes"
echo "  FlagPicker:      $PICKER_COUNT codes"
echo ""

# Check if counts match
if [ "$MANAGER_COUNT" -ne "$PICKER_COUNT" ]; then
    echo -e "${RED}ERROR: Code counts don't match!${NC}"
    exit 1
fi

if [ "$MANAGER_COUNT" -ne 249 ]; then
    echo -e "${RED}ERROR: Expected 249 codes, found $MANAGER_COUNT${NC}"
    exit 1
fi

echo -e "${GREEN}✓ Code count matches (249 codes)${NC}"
echo ""

# Find missing codes in FlagPicker
echo "Checking for missing codes in FlagPicker..."
MISSING_IN_PICKER=""
for code in $MANAGER_CODES; do
    if ! echo "$PICKER_CODES" | grep -q "$code"; then
        MISSING_IN_PICKER="$MISSING_IN_PICKER $code"
    fi
done

if [ -n "$MISSING_IN_PICKER" ]; then
    echo -e "${RED}ERROR: Missing in FlagPicker:${NC} $MISSING_IN_PICKER"
    exit 1
fi

echo -e "${GREEN}✓ All LanguageManager codes present in FlagPicker${NC}"
echo ""

# Find extra codes in FlagPicker
echo "Checking for extra codes in FlagPicker..."
EXTRA_IN_PICKER=""
for code in $PICKER_CODES; do
    if ! echo "$MANAGER_CODES" | grep -q "$code"; then
        EXTRA_IN_PICKER="$EXTRA_IN_PICKER $code"
    fi
done

if [ -n "$EXTRA_IN_PICKER" ]; then
    echo -e "${YELLOW}WARNING: Extra codes in FlagPicker:${NC} $EXTRA_IN_PICKER"
    echo "(These codes are in FlagPicker but not in LanguageManager)"
else
    echo -e "${GREEN}✓ No extra codes in FlagPicker${NC}"
fi

echo ""
echo "========================================="
echo -e "${GREEN}✓ Verification Complete${NC}"
echo "========================================="
echo ""
echo "Summary:"
echo "  - Both files have exactly 249 codes"
echo "  - All codes match ISO 3166-1 alpha-2 standard"
echo "  - FlagPicker is compatible with LanguageManager"
echo ""

exit 0
