<?php
require_once(__DIR__ . '/../db/conexion.php');
header('Content-Type: application/json');

$tipoSolicitado = isset($_GET['tipo']) ? $_GET['tipo'] : '';

$response = ['success' => false, 'vacantes' => []];

try {
    // Obtener vacantes disponibles
    $sqlVacantes = "
        SELECT p.Codigo, p.NombrePuesto, p.ORGPDV, p.tipoPosic, t.PDV AS NombrePDV
        FROM Posiciones p
        LEFT JOIN Plantilla pl ON pl.PosicionCode = p.Codigo
        INNER JOIN Tiendas t ON t.ORGAnizacionSOC = p.ORGPDV
        WHERE pl.PosicionCode IS NULL
    ";
    $resultVacantes = $conn->query($sqlVacantes);
    if (!$resultVacantes) {
        throw new Exception("Error al consultar vacantes: " . $conn->error);
    }

    $vacantes = [];
    while ($row = $resultVacantes->fetch_assoc()) {
        $tipoPosic = strtoupper(trim($row['tipoPosic']));
        $modalidad = $tipoPosic === 'ÚNICO' ? 'Tiempo completo' : ($tipoPosic === 'COMPUESTO' ? 'Medio tiempo' : 'Otro');
        $vacantes[] = [
            'codigo' => $row['Codigo'],
            'puesto' => $row['NombrePuesto'],
            'pdv' => $row['NombrePDV'],
            'tipoPosic' => $tipoPosic,
            'modalidad' => $modalidad
        ];
    }

    // Obtener tiendas de sectores tipo "Subdistr" (a excluir)
    $sqlSectores = "SELECT Sector, Tiendas FROM sectoresdPDVs";
    $resultSectores = $conn->query($sqlSectores);
    $matrizTiendas = [];
    $subdistrTiendas = [];

    while ($row = $resultSectores->fetch_assoc()) {
        $sector = strtoupper($row['Sector']);
        $tiendas = array_map('trim', explode(',', $row['Tiendas']));

        if (stripos($sector, 'MATRIZ') !== false) {
            $matrizTiendas = array_merge($matrizTiendas, $tiendas);
        }

        if (stripos($sector, 'SUBDISTR') !== false) {
            $subdistrTiendas = array_merge($subdistrTiendas, $tiendas);
        }
    }

    $matrizTiendas = array_map('strtoupper', $matrizTiendas);
    $subdistrTiendas = array_map('strtoupper', $subdistrTiendas);
    $puestosPDV = ['EJECUTIVO', 'GERENTE', 'SUBGERENTE'];

    $vacantesFiltradas = [];

    foreach ($vacantes as $v) {
        $pdv = strtoupper($v['pdv']);
        $puesto = strtoupper($v['puesto']);
        $tipoPosic = $v['tipoPosic'];

        // Omitir si es subdistr
        foreach ($subdistrTiendas as $omitida) {
            if (strpos($pdv, $omitida) !== false) {
                continue 2;
            }
        }

        // Clasificación
        $categoria = 'otros';
        if (in_array($pdv, $matrizTiendas)) {
            $categoria = 'administrativas';
        } elseif (array_filter($puestosPDV, fn($p) => strpos($puesto, $p) !== false)) {
            if ($tipoPosic === 'ÚNICO') {
                $categoria = 'completas';
            } elseif ($tipoPosic === 'COMPUESTO') {
                $categoria = 'medio';
            }
        }

        if ($categoria === $tipoSolicitado) {
            $vacantesFiltradas[] = $v;
        }
    }

    $response['success'] = true;
    $response['vacantes'] = $vacantesFiltradas;

} catch (Exception $e) {
    $response['error'] = $e->getMessage();
}

echo json_encode($response);
