-- --------------------------------------------------------
-- Versión del servidor:         8.4.3 - MySQL Community Server - GPL
-- SO del servidor:              Win64
-- HeidiSQL Versión:             12.8.0.6908
-- --------------------------------------------------------



-- Volcando estructura de base de datos para soporte_db
CREATE DATABASE IF NOT EXISTS `soporte_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `soporte_db`;

-- Volcando estructura para tabla soporte_db.adjuntos
CREATE TABLE IF NOT EXISTS `adjuntos` (
  `id_adjunto` int NOT NULL AUTO_INCREMENT,
  `id_ticket` int NOT NULL,
  `id_comentario` int DEFAULT NULL,
  `nombre_archivo` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `ruta_archivo` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `fecha_subida` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_adjunto`),
  KEY `id_ticket` (`id_ticket`),
  KEY `id_comentario` (`id_comentario`),
  CONSTRAINT `adjuntos_ibfk_1` FOREIGN KEY (`id_ticket`) REFERENCES `tickets` (`id_ticket`),
  CONSTRAINT `adjuntos_ibfk_2` FOREIGN KEY (`id_comentario`) REFERENCES `comentarios` (`id_comentario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.adjuntos: ~0 rows (aproximadamente)
DELETE FROM `adjuntos`;

-- Volcando estructura para tabla soporte_db.agentes
CREATE TABLE IF NOT EXISTS `agentes` (
  `id_agente` int NOT NULL AUTO_INCREMENT,
  `id_usuario` int NOT NULL,
  `puesto` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `fecha_contratacion` date DEFAULT NULL,
  PRIMARY KEY (`id_agente`),
  UNIQUE KEY `id_usuario` (`id_usuario`),
  CONSTRAINT `agentes_ibfk_1` FOREIGN KEY (`id_usuario`) REFERENCES `usuarios` (`id_usuario`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.agentes: ~4 rows (aproximadamente)
DELETE FROM `agentes`;
INSERT INTO `agentes` (`id_agente`, `id_usuario`, `puesto`, `fecha_contratacion`) VALUES
	(1, 3, 'Agente de Soporte', '2025-08-29'),
	(2, 4, 'Agente de Soporte', '2025-08-29'),
	(3, 5, 'Supervisor', '2025-08-29'),
	(4, 2, 'Administrador', '2025-08-29');

-- Volcando estructura para tabla soporte_db.archivos_adjuntos
CREATE TABLE IF NOT EXISTS `archivos_adjuntos` (
  `id_adjunto` int NOT NULL AUTO_INCREMENT,
  `id_ticket` int NOT NULL,
  `id_comentario` int DEFAULT NULL,
  `nombre_original` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `nombre_guardado` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `ruta_archivo` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `tipo_mime` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
  `fecha_subida` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_adjunto`),
  KEY `id_ticket` (`id_ticket`),
  CONSTRAINT `archivos_adjuntos_ibfk_1` FOREIGN KEY (`id_ticket`) REFERENCES `tickets` (`id_ticket`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.archivos_adjuntos: ~0 rows (aproximadamente)
DELETE FROM `archivos_adjuntos`;
INSERT INTO `archivos_adjuntos` (`id_adjunto`, `id_ticket`, `id_comentario`, `nombre_original`, `nombre_guardado`, `ruta_archivo`, `tipo_mime`, `fecha_subida`) VALUES
	(1, 2, 5, 'SuperStore DataSet.xlsx', 'ticket2_692233043c3376.31290327.xlsx', 'uploads/ticket2_692233043c3376.31290327.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', '2025-11-22 22:02:44');

-- Volcando estructura para tabla soporte_db.clientes
CREATE TABLE IF NOT EXISTS `clientes` (
  `id_cliente` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
  `correo_electronico` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
  `telefono` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `empresa` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `pais` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `ciudad` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `whatsapp` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `telegram` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  `fecha_registro` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_cliente`),
  UNIQUE KEY `correo_electronico` (`correo_electronico`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.clientes: ~0 rows (aproximadamente)
DELETE FROM `clientes`;
INSERT INTO `clientes` (`id_cliente`, `nombre`, `correo_electronico`, `telefono`, `empresa`, `pais`, `ciudad`, `whatsapp`, `telegram`, `activo`, `fecha_registro`) VALUES
	(1, 'CARLOS RAMIREZ', 'carlosramirez@correo.com', '12121213', 'EMPRESA 1', 'PERÚ', 'ICA', '966666666', 'X12', 1, '2025-11-14 07:05:26'),
	(2, 'MARIA SOLIS', 'mariasolis@correo.com', '23232323', 'EMPRESA2', 'PERÚ', 'LIMA', NULL, NULL, 1, '2025-11-22 21:54:21');

-- Volcando estructura para tabla soporte_db.comentarios
CREATE TABLE IF NOT EXISTS `comentarios` (
  `id_comentario` int NOT NULL AUTO_INCREMENT,
  `id_ticket` int NOT NULL,
  `id_autor` int NOT NULL,
  `tipo_autor` enum('Agente','Cliente') COLLATE utf8mb4_general_ci NOT NULL,
  `comentario` text COLLATE utf8mb4_general_ci NOT NULL,
  `fecha_creacion` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `es_privado` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id_comentario`),
  KEY `id_ticket` (`id_ticket`),
  CONSTRAINT `comentarios_ibfk_1` FOREIGN KEY (`id_ticket`) REFERENCES `tickets` (`id_ticket`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.comentarios: ~7 rows (aproximadamente)
DELETE FROM `comentarios`;
INSERT INTO `comentarios` (`id_comentario`, `id_ticket`, `id_autor`, `tipo_autor`, `comentario`, `fecha_creacion`, `es_privado`) VALUES
	(1, 1, 1, 'Cliente', 'Ticket creado con la siguiente descripción:\n\nno se puede emitir facturas', '2025-11-14 07:06:34', 0),
	(2, 2, 2, 'Cliente', 'Ticket creado con la siguiente descripción:\n\nEl sistema no permite generar facturación electrónica, sale error', '2025-11-22 21:57:55', 0),
	(3, 2, 4, 'Agente', 'Ticket reasignado de \'Nadie\' a \'Soporte de campo 2\' por Administrador del Negocio.', '2025-11-22 21:59:43', 1),
	(4, 2, 4, 'Agente', 'Estado cambiado a \'En Progreso\' por Administrador del Negocio.\n\nEstoy procediendo a realizar la atención de la tarea indicada', '2025-11-22 22:01:18', 0),
	(5, 2, 4, 'Agente', 'Se realizó la prueba de validación 1- resuelto', '2025-11-22 22:02:44', 0),
	(6, 2, 4, 'Agente', 'Estado cambiado a \'Resuelto\' por Administrador del Negocio.\n\nLa tarea ha sido resuelta. El ciente realiza las validaciones del caso. Todo conforme', '2025-11-22 22:03:53', 0),
	(7, 2, 4, 'Agente', 'Se registró el pago del ticket por Administrador del Negocio con los siguientes detalles:\n- Monto: PEN 150.00\n- Medio de Pago: Efectivo\n- Estado: Pagado', '2025-11-22 22:05:34', 1);

-- Volcando estructura para tabla soporte_db.roles
CREATE TABLE IF NOT EXISTS `roles` (
  `id_rol` int NOT NULL AUTO_INCREMENT,
  `nombre_rol` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
  `descripcion` text COLLATE utf8mb4_general_ci,
  PRIMARY KEY (`id_rol`),
  UNIQUE KEY `nombre_rol` (`nombre_rol`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.roles: ~3 rows (aproximadamente)
DELETE FROM `roles`;
INSERT INTO `roles` (`id_rol`, `nombre_rol`, `descripcion`) VALUES
	(1, 'Administrador', 'Acceso total al sistema, gestión de usuarios y configuraciones.'),
	(2, 'Agente de Soporte', 'Puede gestionar tickets asignados y ver los de su equipo.'),
	(3, 'Supervisor', 'Puede ver todos los tickets y generar reportes, pero no gestiona usuarios.');

-- Volcando estructura para tabla soporte_db.tickets
CREATE TABLE IF NOT EXISTS `tickets` (
  `id_ticket` int NOT NULL AUTO_INCREMENT,
  `id_cliente` int NOT NULL,
  `id_agente_asignado` int DEFAULT NULL,
  `id_tipo_caso` int DEFAULT NULL,
  `asunto` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `descripcion` text COLLATE utf8mb4_general_ci,
  `estado` enum('Abierto','En Progreso','En Espera','Resuelto','Cerrado','Anulado') COLLATE utf8mb4_general_ci DEFAULT 'Abierto',
  `prioridad` enum('Baja','Media','Alta','Urgente') COLLATE utf8mb4_general_ci DEFAULT 'Media',
  `fecha_vencimiento` datetime DEFAULT NULL,
  `costo` decimal(10,2) DEFAULT '0.00',
  `moneda` varchar(3) COLLATE utf8mb4_general_ci DEFAULT 'USD',
  `estado_facturacion` enum('Pendiente','Facturado','Pagado') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'Pendiente',
  `fecha_creacion` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ultima_actualizacion` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `medio_pago` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id_ticket`),
  KEY `id_cliente` (`id_cliente`),
  KEY `id_agente_asignado` (`id_agente_asignado`),
  KEY `id_tipo_caso` (`id_tipo_caso`),
  CONSTRAINT `tickets_ibfk_1` FOREIGN KEY (`id_cliente`) REFERENCES `clientes` (`id_cliente`),
  CONSTRAINT `tickets_ibfk_2` FOREIGN KEY (`id_agente_asignado`) REFERENCES `agentes` (`id_agente`),
  CONSTRAINT `tickets_ibfk_3` FOREIGN KEY (`id_tipo_caso`) REFERENCES `tiposdecaso` (`id_tipo_caso`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.tickets: ~2 rows (aproximadamente)
DELETE FROM `tickets`;
INSERT INTO `tickets` (`id_ticket`, `id_cliente`, `id_agente_asignado`, `id_tipo_caso`, `asunto`, `descripcion`, `estado`, `prioridad`, `fecha_vencimiento`, `costo`, `moneda`, `estado_facturacion`, `fecha_creacion`, `ultima_actualizacion`, `medio_pago`) VALUES
	(1, 1, NULL, 5, 'SISTEMA DE VENTAS - NO EMITE FACTURA', 'no se puede emitir facturas', 'Abierto', 'Alta', NULL, 0.00, 'USD', 'Pendiente', '2025-11-14 07:06:34', '2025-11-14 07:06:34', NULL),
	(2, 2, 2, 5, 'SISTEMA DE VENTAS - NO SE PUEDE FACTURAR', 'El sistema no permite generar facturación electrónica, sale error', 'Resuelto', 'Alta', NULL, 150.00, 'PEN', 'Pagado', '2025-11-22 21:57:55', '2025-11-22 22:05:34', 'Efectivo');

-- Volcando estructura para tabla soporte_db.tiposdecaso
CREATE TABLE IF NOT EXISTS `tiposdecaso` (
  `id_tipo_caso` int NOT NULL AUTO_INCREMENT,
  `nombre_tipo` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
  `descripcion` text COLLATE utf8mb4_general_ci,
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id_tipo_caso`),
  UNIQUE KEY `nombre_tipo` (`nombre_tipo`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Volcando datos para la tabla soporte_db.tiposdecaso: ~5 rows (aproximadamente)
DELETE FROM `tiposdecaso`;
INSERT INTO `tiposdecaso` (`id_tipo_caso`, `nombre_tipo`, `descripcion`, `activo`) VALUES
	(1, 'SERVIDORES DE DATOS', 'MANTENIMIENTO A SERVIDORES', 1),
	(2, 'INSTALACIÓN DE REDES', 'INSTALACIONES DE INFRAESTRUCTURA', 1),
	(3, 'MANTENIMIENTO DE IMPRESORAS', 'MANTENIMIENTO', 1),
	(4, 'MANTENIMIENTO DE EQUIPO DE CÓMPUTO', 'MANTENIMIENTO', 1),
	(5, 'APLICACIONES', 'APLICACIONES VARIOS', 1);

