<?php
require_once __DIR__ . '/../conexion.php';
require_once __DIR__ . '/../_helpers.php';
require_once __DIR__ . '/../auth/guard.php';


$u = require_login();
require_module_access($u, "familias");
header('Content-Type: application/json');

$sectorizacionId = $_GET['sectorizacion'] ?? null;
$sectorId        = $_GET['sector'] ?? null;

if (!$sectorizacionId || !$sectorId) {
  http_response_code(400);
  echo json_encode([
    'ok' => false,
    'message' => 'Sectorización y sector son obligatorios'
  ]);
  exit;
}

try {
  /* ============================
     MAPAS OFICIALES DE ABREVIACIÓN
     (según tabla enviada)
  ============================ */

  $MAP_SECTORIZACION = [
    'OTRO SECTOR' => 'NEG',
    'SECTOR B'    => 'AMA',
    'SECTOR A'    => 'VER'
  ];

  $MAP_SECTOR = [
    'Llay Llay'          => 'LLY',
    'La Redonda'         => 'LRE',
    'Catemu'             => 'CAT',
    'San Felipe'         => 'SNF',
    'Llayquen'           => 'LLA',
    'Lo Campo'           => 'LCP',
    'El Mirador'         => 'EMR',
    'Lo Blanco'          => 'LBO',
    'San Roque'          => 'SRQ',
    'La Pirca B'         => 'LPB',
    'La Pirca A'         => 'LPA',
    'Viña Errázuriz'     => 'VEZ',
    'La Cabaña'          => 'LCA',
    'Panquehue Centro'   => 'PCO',
    'Palomar Interior'   => 'PIR',
    'Palomar'            => 'PAL',
    'Colunquen'          => 'COL',
    'El Escorial'        => 'ESC'
  ];

  /* ============================
     1. Obtener nombres desde BD
  ============================ */

  $stmt = $pdo->prepare("SELECT nombre_sectorizacion FROM sectorizacion WHERE id = ?");
  $stmt->execute([$sectorizacionId]);
  $sz = $stmt->fetch(PDO::FETCH_ASSOC);
  if (!$sz) throw new Exception("Sectorización no encontrada");

  $stmt = $pdo->prepare("SELECT nombre_sector FROM sectores WHERE id = ?");
  $stmt->execute([$sectorId]);
  $sec = $stmt->fetch(PDO::FETCH_ASSOC);
  if (!$sec) throw new Exception("Sector no encontrado");

  $nombreSz  = trim($sz['nombre_sectorizacion']);
  $nombreSec = trim($sec['nombre_sector']);

  if (!isset($MAP_SECTORIZACION[$nombreSz])) {
    throw new Exception("Abreviación no definida para sectorización: $nombreSz");
  }

  if (!isset($MAP_SECTOR[$nombreSec])) {
    throw new Exception("Abreviación no definida para sector: $nombreSec");
  }

  $abbrSz  = $MAP_SECTORIZACION[$nombreSz];
  $abbrSec = $MAP_SECTOR[$nombreSec];

  /* ============================
     2. Buscar último correlativo
  ============================ */

  $stmt = $pdo->prepare("
   SELECT codigo_familia
    FROM familias
    WHERE sectorizacion = ?
      AND sector = ?
      AND codigo_familia LIKE ?
    ORDER BY codigo_familia DESC
    LIMIT 1
  ");

  $like = "{$abbrSz}-{$abbrSec}-%";
  $stmt->execute([$sectorizacionId, $sectorId, $like]);
  $last = $stmt->fetch(PDO::FETCH_ASSOC);

  $next = 1;
  if ($last) {
    $parts = explode('-', $last['codigo_familia']);
    $next = intval(end($parts)) + 1;
  }

  $codigo = sprintf("%s-%s-%03d", $abbrSz, $abbrSec, $next);

  echo json_encode([
    'ok' => true,
    'codigo' => $codigo
  ]);

} catch (Throwable $e) {
  http_response_code(500);
  echo json_encode([
    'ok' => false,
    'message' => $e->getMessage()
  ]);
}
