#!/bin/bash
# Script de verificación de archivos obsoletos por módulo
# Uso: ./scripts/verify_obsolete_files.sh Configuration

MODULE=$1

if [ -z "$MODULE" ]; then
    echo "❌ Error: Debes especificar un módulo"
    echo "Uso: $0 <NombreModulo>"
    echo "Ejemplo: $0 Configuration"
    exit 1
fi

echo "🔍 Verificando archivos obsoletos en módulo: $MODULE"
echo "=========================================="

# 1. Verificar Controller en rutas móviles (DEBE dar 0)
echo ""
echo "📱 1. Verificando si Controller está en rutas MÓVILES (debe ser 0):"
MOBILE_ROUTES=$(grep -r "${MODULE}Controller" routes/api/ 2>/dev/null | wc -l | tr -d ' ')
if [ "$MOBILE_ROUTES" -eq 0 ]; then
    echo "   ✅ OK: No está en rutas móviles"
else
    echo "   ⚠️  ADVERTENCIA: Encontrado en $MOBILE_ROUTES rutas móviles"
    grep -r "${MODULE}Controller" routes/api/ 2>/dev/null
fi

# 2. Verificar UtilResponse en Actions (DEBE dar 0)
echo ""
echo "🧹 2. Verificando uso de UtilResponse en Actions (debe ser 0):"
UTIL_IN_ACTIONS=$(grep -r "UtilResponse" app/Actions/${MODULE}/ 2>/dev/null | wc -l | tr -d ' ')
if [ "$UTIL_IN_ACTIONS" -eq 0 ]; then
    echo "   ✅ OK: No usa UtilResponse legacy"
else
    echo "   ❌ ERROR: Aún usa UtilResponse en Actions"
    grep -r "UtilResponse" app/Actions/${MODULE}/ 2>/dev/null
fi

# 3. Verificar uso de Repository (DEBE tener referencias)
echo ""
echo "📦 3. Verificando uso del Repository:"
REPO_USAGE=$(grep -r "${MODULE}Repository" app/Actions/${MODULE}/ 2>/dev/null | wc -l | tr -d ' ')
if [ "$REPO_USAGE" -gt 0 ]; then
    echo "   ✅ OK: Repository usado por Actions ($REPO_USAGE referencias)"
else
    echo "   ⚠️  ADVERTENCIA: Repository no usado por Actions"
fi

# 4. Verificar ApiResponseTrait en Actions (DEBE tener referencias)
echo ""
echo "🎯 4. Verificando uso de ApiResponseTrait:"
API_TRAIT_USAGE=$(grep -r "ApiResponseTrait\|extends BaseAction" app/Actions/${MODULE}/ 2>/dev/null | wc -l | tr -d ' ')
if [ "$API_TRAIT_USAGE" -gt 0 ]; then
    echo "   ✅ OK: Usa ApiResponseTrait/BaseAction"
else
    echo "   ❌ ERROR: No usa ApiResponseTrait/BaseAction"
fi

# 5. PHPStan verification
echo ""
echo "🔬 5. Verificando con PHPStan:"
if [ -d "app/Actions/${MODULE}" ]; then
    vendor/bin/phpstan analyse app/Actions/${MODULE}/ --level=5 --no-progress 2>&1 | tail -n 3
else
    echo "   ⚠️  No existe directorio app/Actions/${MODULE}/"
fi

echo ""
echo "=========================================="
echo "✅ Verificación completada"
