<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

require_once(__DIR__ . '/../config.php');
require __DIR__ . '/../../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

$slug_tienda = $_POST['slug_tienda'] ?? '';
if (!$slug_tienda || !isset($_FILES['archivo'])) {
    echo json_encode(['success' => false, 'error' => 'Faltan datos']);
    exit;
}

$tmpName = $_FILES['archivo']['tmp_name'];
try {
    $spreadsheet = IOFactory::load($tmpName);
    $sheet = $spreadsheet->getActiveSheet();
    $rows = $sheet->toArray();

    $baseDir = __DIR__ . "/contactos_tiendas";
    if (!is_dir($baseDir)) mkdir($baseDir, 0777, true);

    $carpeta = "$baseDir/$slug_tienda";
    if (!is_dir($carpeta)) mkdir($carpeta, 0777, true);

    $archivo = "$carpeta/contactos.json";
    $contactosExistentes = file_exists($archivo)
        ? json_decode(file_get_contents($archivo), true)
        : [];

    $telefonosExistentes = array_column($contactosExistentes, 'telefono');

    $insertados = 0;
    $duplicados = 0;

    $header = array_map('strtolower', array_map('trim', $rows[0]));
    $iNombre = array_search('nombre', $header);
    $iTelefono = array_search('teléfono', $header);
    if ($iTelefono === false) $iTelefono = array_search('telefono', $header);

    if ($iNombre === false || $iTelefono === false) {
        echo json_encode(['success' => false, 'error' => 'Columnas "Nombre" y "Teléfono" requeridas']);
        exit;
    }

    for ($i = 1; $i < count($rows); $i++) {
        $fila = $rows[$i];
        $nombre = trim($fila[$iNombre] ?? '');
        $telefono = trim($fila[$iTelefono] ?? '');

        if (!$telefono) continue;

        // Evitar duplicados
        if (in_array($telefono, $telefonosExistentes)) {
            $duplicados++;
            continue;
        }

        // Agregar a JSON
        $contactosExistentes[] = ['nombre' => $nombre ?: 'Sin nombre', 'telefono' => $telefono];
        $telefonosExistentes[] = $telefono;

        // Guardar en base de datos
        $stmt = $mysqli->prepare("SELECT id FROM contactos WHERE telefono = ? AND slug_tienda = ?");
        $stmt->bind_param("ss", $telefono, $slug_tienda);
        $stmt->execute();
        $stmt->store_result();

        if ($stmt->num_rows === 0) {
            $stmt->close();
            $stmtInsert = $mysqli->prepare("INSERT INTO contactos (slug_tienda, telefono, nombre) VALUES (?, ?, ?)");
            $stmtInsert->bind_param("sss", $slug_tienda, $telefono, $nombre);
            $stmtInsert->execute();
            $stmtInsert->close();
            $insertados++;
        } else {
            $stmt->close();
            $duplicados++;
        }
    }

    file_put_contents($archivo, json_encode($contactosExistentes, JSON_PRETTY_PRINT));

    echo json_encode([
        'success' => true,
        'insertados' => $insertados,
        'duplicados' => $duplicados
    ]);
} catch (Exception $e) {
    echo json_encode(['success' => false, 'error' => 'Error al leer Excel: ' . $e->getMessage()]);
}
