-- =====================================================
-- Módulo: Geolocalización Comunitaria
-- Crea categorías y puntos para activos/agentes comunitarios.
-- Ejecutar una vez en phpMyAdmin si la plataforma no crea las tablas automáticamente.
-- =====================================================

CREATE TABLE IF NOT EXISTS `geo_comunitaria_categorias` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `tipo` ENUM('activo','agente') NOT NULL DEFAULT 'activo',
  `nombre` VARCHAR(120) NOT NULL,
  `icono` VARCHAR(80) NOT NULL DEFAULT 'bi-geo-alt-fill',
  `color` VARCHAR(30) NOT NULL DEFAULT '#2563eb',
  `descripcion` TEXT DEFAULT NULL,
  `orden` INT(11) NOT NULL DEFAULT 0,
  `activo` TINYINT(1) NOT NULL DEFAULT 1,
  `creado_en` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ultima_actualizacion` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_geo_com_cat_tipo_nombre` (`tipo`, `nombre`),
  KEY `idx_geo_com_cat_tipo` (`tipo`),
  KEY `idx_geo_com_cat_activo` (`activo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `geo_comunitaria_puntos` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `tipo` ENUM('activo','agente') NOT NULL DEFAULT 'activo',
  `categoria_id` BIGINT(20) UNSIGNED DEFAULT NULL,
  `nombre` VARCHAR(180) NOT NULL,
  `rut_persona` VARCHAR(15) DEFAULT NULL,
  `contacto_nombre` VARCHAR(180) DEFAULT NULL,
  `telefono` VARCHAR(60) DEFAULT NULL,
  `correo` VARCHAR(140) DEFAULT NULL,
  `direccion` TEXT DEFAULT NULL,
  `sectorizacion` BIGINT(20) UNSIGNED DEFAULT NULL,
  `sector` BIGINT(20) UNSIGNED DEFAULT NULL,
  `descripcion` TEXT DEFAULT NULL,
  `observaciones` TEXT DEFAULT NULL,
  `latitud` DOUBLE NOT NULL,
  `longitud` DOUBLE NOT NULL,
  `estado` ENUM('activo','inactivo','borrador','pendiente') NOT NULL DEFAULT 'activo',
  `registrado_por` VARCHAR(15) DEFAULT NULL,
  `creado_en` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ultima_actualizacion` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_geo_com_p_tipo` (`tipo`),
  KEY `idx_geo_com_p_categoria` (`categoria_id`),
  KEY `idx_geo_com_p_rut` (`rut_persona`),
  KEY `idx_geo_com_p_sector` (`sector`),
  KEY `idx_geo_com_p_sectorizacion` (`sectorizacion`),
  KEY `idx_geo_com_p_estado` (`estado`),
  KEY `idx_geo_com_p_coords` (`latitud`, `longitud`),
  KEY `idx_geo_com_p_registrado_por` (`registrado_por`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT IGNORE INTO `geo_comunitaria_categorias` (`tipo`, `nombre`, `icono`, `color`, `descripcion`, `orden`, `activo`) VALUES
('activo','Junta de vecinos','bi-people-fill','#2563eb','Organización territorial comunitaria',10,1),
('activo','Almacén / comercio local','bi-shop','#f59e0b','Comercio local útil para la vida cotidiana',20,1),
('activo','Colegio / escuela','bi-mortarboard-fill','#7c3aed','Establecimiento educacional',30,1),
('activo','Establecimiento de salud','bi-hospital-fill','#dc2626','CESFAM, posta, estación médica u otro punto sanitario',40,1),
('activo','Sede comunitaria','bi-house-heart-fill','#059669','Infraestructura social o comunitaria',50,1),
('activo','Club deportivo','bi-trophy-fill','#16a34a','Organización o espacio deportivo',60,1),
('activo','Iglesia / espiritualidad','bi-stars','#9333ea','Espacio religioso o espiritual',70,1),
('activo','Espacio público','bi-tree-fill','#0f766e','Plaza, cancha, punto de encuentro o área verde',80,1),
('activo','Otro activo comunitario','bi-pin-map-fill','#64748b','Otro recurso reconocido por la comunidad',999,1),
('agente','Dirigente comunitario','bi-person-badge-fill','#2563eb','Persona reconocida como líder comunitario',10,1),
('agente','Apoyo espiritual / reza','bi-stars','#9333ea','Persona que acompaña, reza o apoya espiritualmente',20,1),
('agente','Oficio / reparación','bi-tools','#ea580c','Persona con oficio útil para la comunidad',30,1),
('agente','Cuidador/a comunitario/a','bi-heart-pulse-fill','#dc2626','Persona que apoya cuidados comunitarios o familiares',40,1),
('agente','Monitor/a social','bi-person-hearts','#0f766e','Persona que vincula, acompaña o informa a vecinos',50,1),
('agente','Otro agente comunitario','bi-person-fill-add','#64748b','Otro agente reconocido por la comunidad',999,1);
