#!/bin/bash
# ============================================
# Script Bash para procesar archivos TXT del buque
# Sistema de Telemetría Industrial
# ============================================

# ============================================
# CONFIGURACIÓN
# ============================================
CARPETA_ARCHIVOS="./archivos_buque/"
CARPETA_PROCESADOS="./archivos_buque/procesados/"
API_URL="http://localhost/buque/api/buque.php"  # Cambiar en producción
# API_URL="https://www.devmastering.com/webservices/buque/api/buque.php"  # Producción
API_KEY="BUQUE2024_SECRET_KEY_XYZ789"
PATRON_ARCHIVOS="*.txt"

# ============================================
# FUNCIONES
# ============================================

crear_carpetas() {
    mkdir -p "$CARPETA_ARCHIVOS"
    mkdir -p "$CARPETA_PROCESADOS"
    echo "✅ Carpetas verificadas"
}

enviar_datos() {
    local datos="$1"
    
    response=$(curl -s -w "\n%{http_code}" -X POST "$API_URL" \
        -H "Content-Type: text/plain" \
        -d "$datos" \
        --max-time 10)
    
    http_code=$(echo "$response" | tail -n1)
    body=$(echo "$response" | sed '$d')
    
    # Verificar si la respuesta es JSON válido y contiene success
    if echo "$body" | grep -q '"success":true'; then
        echo "OK"
        return 0
    else
        echo "ERROR"
        return 1
    fi
}

procesar_archivo() {
    local archivo="$1"
    local nombre_archivo=$(basename "$archivo")
    
    echo ""
    echo "📄 Procesando: $nombre_archivo"
    
    local enviados=0
    local errores=0
    local num_linea=0
    
    while IFS= read -r linea || [ -n "$linea" ]; do
        num_linea=$((num_linea + 1))
        linea=$(echo "$linea" | xargs)  # Trim
        
        # Saltar líneas vacías o comentarios
        if [ -z "$linea" ] || [[ "$linea" == \#* ]]; then
            continue
        fi
        
        # Validar formato básico (contar comas)
        num_comas=$(echo "$linea" | tr -cd ',' | wc -c)
        if [ "$num_comas" -lt 3 ]; then
            echo "  ⚠️  Línea $num_linea ignorada (formato inválido): $linea"
            errores=$((errores + 1))
            continue
        fi
        
        # Enviar datos
        echo -n "  📤 Enviando línea $num_linea... "
        
        if enviar_datos "$linea" > /dev/null 2>&1; then
            echo "✅ OK"
            enviados=$((enviados + 1))
        else
            echo "❌ Error"
            errores=$((errores + 1))
        fi
        
        # Pequeña pausa
        sleep 0.1
    done < "$archivo"
    
    echo "  📊 Resumen: $enviados enviados, $errores errores"
    
    # Mover archivo a procesados
    timestamp=$(date +%Y%m%d%H%M%S)
    archivo_procesado="${CARPETA_PROCESADOS}${nombre_archivo}.${timestamp}"
    
    if mv "$archivo" "$archivo_procesado" 2>/dev/null; then
        echo "  ✅ Archivo movido a procesados"
    else
        rm -f "$archivo"
        echo "  ✅ Archivo eliminado"
    fi
    
    echo "$enviados $errores"
}

# ============================================
# PROGRAMA PRINCIPAL
# ============================================

echo "==========================================="
echo "Procesador de Archivos TXT - Sistema Buque"
echo "==========================================="
echo ""

# Crear carpetas
crear_carpetas

# Buscar archivos
archivos=($(find "$CARPETA_ARCHIVOS" -maxdepth 1 -name "$PATRON_ARCHIVOS" -type f))

if [ ${#archivos[@]} -eq 0 ]; then
    echo "📭 No se encontraron archivos TXT en: $CARPETA_ARCHIVOS"
    echo "   Patrón buscado: $PATRON_ARCHIVOS"
    exit 0
fi

echo "📁 Archivos encontrados: ${#archivos[@]}"

total_enviados=0
total_errores=0

# Procesar cada archivo
for archivo in "${archivos[@]}"; do
    resultado=$(procesar_archivo "$archivo")
    enviados=$(echo "$resultado" | awk '{print $1}')
    errores=$(echo "$resultado" | awk '{print $2}')
    total_enviados=$((total_enviados + enviados))
    total_errores=$((total_errores + errores))
done

# Resumen final
echo ""
echo "==========================================="
echo "📊 Resumen Final"
echo "==========================================="
echo "Total enviados: $total_enviados"
echo "Total errores: $total_errores"
echo "Archivos procesados: ${#archivos[@]}"
echo "==========================================="

