<?php
declare(strict_types=1);

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

$u = require_login();
require_admin($u);

$in = read_input();

$id   = isset($in['id']) ? (int)$in['id'] : 0;
$nombre = trim((string)($in['nombre_sector'] ?? ''));
$sectorizacion = isset($in['sectorizacion']) ? (int)$in['sectorizacion'] : 0;

if ($nombre === '') json_response(["ok" => false, "message" => "Nombre de sector es obligatorio."], 400);
if ($sectorizacion <= 0) json_response(["ok" => false, "message" => "Seleccione una sectorización válida."], 400);

$registrado_por = $u['rut'] ?? null;
if ($registrado_por === '') $registrado_por = null;

try {
  // Validar existencia sectorización
  $chk = $pdo->prepare("SELECT COUNT(*) FROM sectorizacion WHERE id = ?");
  $chk->execute([$sectorizacion]);
  if ((int)$chk->fetchColumn() === 0) {
    json_response(["ok" => false, "message" => "La sectorización seleccionada no existe."], 400);
  }

  if ($id > 0) {
    $stmt = $pdo->prepare("
      UPDATE sectores
      SET nombre_sector = ?, sectorizacion = ?, registrado_por = ?
      WHERE id = ?
    ");
    $stmt->execute([$nombre, $sectorizacion, $registrado_por, $id]);
  } else {
    $stmt = $pdo->prepare("
      INSERT INTO sectores (nombre_sector, sectorizacion, registrado_por)
      VALUES (?, ?, ?)
    ");
    $stmt->execute([$nombre, $sectorizacion, $registrado_por]);
    $id = (int)$pdo->lastInsertId();
  }

  fp_log_activity($pdo, $u, 'Configuración', 'Guardar sector', 'Se guardó/actualizó el sector ' . $nombre, 'sector', (string)$id);

  json_response(["ok" => true, "data" => ["id" => $id]]);
} catch (Throwable $e) {
  error_log("SECTORES SAVE ERROR: ".$e->getMessage());
  json_response(["ok" => false, "message" => "Error guardando sector."], 500);
}
