/*
 Navicat Premium Data Transfer

 Source Server         : cartec_preca
 Source Server Type    : MySQL
 Source Server Version : 80037 (8.0.37-google)
 Source Host           : 34.21.100.208:3306
 Source Schema         : revisa

 Target Server Type    : MySQL
 Target Server Version : 80037 (8.0.37-google)
 File Encoding         : 65001

 Date: 29/12/2025 13:36:26
*/


-- ----------------------------
-- Table structure for Actividades
-- ----------------------------
CREATE TABLE `Actividades` (
  `id_actividad` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  `estado` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`id_actividad`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Centro_Costos
-- ----------------------------
CREATE TABLE `Centro_Costos` (
  `id_centro_costo` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  `rut_cliente` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id_centro_costo`),
  KEY `rut_cliente_2` (`rut_cliente`),
  CONSTRAINT `rut_cliente_2` FOREIGN KEY (`rut_cliente`) REFERENCES `Clientes` (`rut_cliente`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Clientes
-- ----------------------------
CREATE TABLE `Clientes` (
  `rut_cliente` varchar(10) NOT NULL,
  `nombre` varchar(50) DEFAULT NULL,
  `comuna` varchar(50) DEFAULT NULL,
  `direccion` varchar(100) DEFAULT NULL,
  `id_plan_comercial` int DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `telefono` varchar(100) DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`rut_cliente`),
  KEY `id_plan_comercial` (`id_plan_comercial`),
  CONSTRAINT `id_plan_comercial` FOREIGN KEY (`id_plan_comercial`) REFERENCES `Planes_Comerciales` (`id_plan_comercial`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Clientes_Vehiculos
-- ----------------------------
CREATE TABLE `Clientes_Vehiculos` (
  `id_clientes_vehiculos` int NOT NULL AUTO_INCREMENT,
  `rut_cliente` varchar(10) DEFAULT NULL,
  `patente` varchar(10) DEFAULT NULL,
  `fecha` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_clientes_vehiculos`),
  KEY `rut_cliente2` (`rut_cliente`),
  KEY `patente2` (`patente`),
  CONSTRAINT `patente2` FOREIGN KEY (`patente`) REFERENCES `Vehiculos` (`patente`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `rut_cliente2` FOREIGN KEY (`rut_cliente`) REFERENCES `Clientes` (`rut_cliente`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Contactos
-- ----------------------------
CREATE TABLE `Contactos` (
  `rut_contacto` varchar(10) NOT NULL,
  `nombre` varchar(50) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `rut_cliente` varchar(10) DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`rut_contacto`),
  KEY `rut_cliente` (`rut_cliente`),
  CONSTRAINT `rut_cliente` FOREIGN KEY (`rut_cliente`) REFERENCES `Clientes` (`rut_cliente`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Debug
-- ----------------------------
CREATE TABLE `Debug` (
  `id_debug` int NOT NULL AUTO_INCREMENT,
  `campo` varchar(255) DEFAULT NULL,
  `valor` varchar(255) DEFAULT NULL,
  `imagen` blob,
  PRIMARY KEY (`id_debug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Diagnosticos
-- ----------------------------
CREATE TABLE `Diagnosticos` (
  `id_diagnostico` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  `estado` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`id_diagnostico`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Estados_Gps
-- ----------------------------
CREATE TABLE `Estados_Gps` (
  `id_estado_gps` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id_estado_gps`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Gps
-- ----------------------------
CREATE TABLE `Gps` (
  `imei` decimal(20,0) NOT NULL,
  `marca` varchar(50) DEFAULT NULL,
  `modelo` varchar(100) DEFAULT NULL,
  `id_estado_gps` int DEFAULT NULL,
  `id_tipo_gps` int DEFAULT NULL,
  `firmware` varchar(100) DEFAULT NULL,
  `fecha_act_firmware` datetime DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`imei`),
  KEY `id_estado_gps` (`id_estado_gps`),
  KEY `id_tipo_gps` (`id_tipo_gps`),
  CONSTRAINT `id_estado_gps` FOREIGN KEY (`id_estado_gps`) REFERENCES `Estados_Gps` (`id_estado_gps`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `id_tipo_gps` FOREIGN KEY (`id_tipo_gps`) REFERENCES `Tipos_Gps` (`id_tipo_gps`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Gps_Sims
-- ----------------------------
CREATE TABLE `Gps_Sims` (
  `id_gps_sims` int NOT NULL AUTO_INCREMENT,
  `imei` decimal(20,0) DEFAULT NULL,
  `iccid` decimal(20,0) DEFAULT NULL,
  `fecha` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `estado` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`id_gps_sims`),
  KEY `imei2` (`imei`),
  KEY `iccid` (`iccid`),
  CONSTRAINT `iccid` FOREIGN KEY (`iccid`) REFERENCES `Sims` (`iccid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `imei2` FOREIGN KEY (`imei`) REFERENCES `Gps` (`imei`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Imagenes
-- ----------------------------
CREATE TABLE `Imagenes` (
  `id_imagen_serv` int NOT NULL AUTO_INCREMENT,
  `id_servicio` int DEFAULT NULL,
  `diag1` longblob,
  `diag2` longblob,
  `diag3` longblob,
  `diag4` longblob,
  `diag5` longblob,
  `diag6` longblob,
  `trab1` longblob,
  `trab2` longblob,
  `trab3` longblob,
  PRIMARY KEY (`id_imagen_serv`),
  KEY `Imagenes_FK` (`id_servicio`),
  CONSTRAINT `Imagenes_FK` FOREIGN KEY (`id_servicio`) REFERENCES `Servicios` (`id_servicio`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1359 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Logs
-- ----------------------------
CREATE TABLE `Logs` (
  `id_log` int NOT NULL AUTO_INCREMENT,
  `modulo` varchar(50) DEFAULT NULL,
  `accion` varchar(50) DEFAULT NULL,
  `fecha` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `id_user` int DEFAULT NULL,
  PRIMARY KEY (`id_log`),
  KEY `id_user` (`id_user`),
  CONSTRAINT `id_user` FOREIGN KEY (`id_user`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for OT
-- ----------------------------
CREATE TABLE `OT` (
  `id_ot` int NOT NULL AUTO_INCREMENT,
  `fecha` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `rut_cliente` varchar(10) DEFAULT NULL,
  `rut_tecnico` varchar(15) DEFAULT NULL,
  `empresa` varchar(100) DEFAULT 'entel',
  `taller` varchar(256) DEFAULT 'Entel Follow',
  `rut_contacto` varchar(10) DEFAULT NULL,
  `imgfirma` longblob,
  `hora_llegada` varchar(10) DEFAULT NULL,
  `hora_salida` varchar(10) DEFAULT NULL,
  `direccion_instalacion` varchar(100) DEFAULT NULL,
  `comuna_instalacion` varchar(100) DEFAULT NULL,
  `telefono_instalacion` varchar(100) DEFAULT NULL,
  `email_instalacion` varchar(100) DEFAULT NULL,
  `estado_ot` varchar(100) NOT NULL,
  `obser_ot` varchar(1000) DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  `motivo` varchar(100) DEFAULT 'Instalación GPS FollowMyCar',
  `logo_taller` varchar(200) DEFAULT 'https://cartec.cl/wp-content/uploads/2020/05/logo11-01-1-large.png',
  `logo_servicio` varchar(200) DEFAULT 'https://cartec.cl/wp-content/uploads/2020/09/follow-logo.png',
  `fecha_serv` date DEFAULT NULL,
  PRIMARY KEY (`id_ot`),
  UNIQUE KEY `id_ot` (`id_ot`),
  KEY `rut_tecnico` (`rut_tecnico`),
  KEY `rut_contacto` (`rut_contacto`),
  KEY `rut_cliente3` (`rut_cliente`),
  CONSTRAINT `rut_cliente3` FOREIGN KEY (`rut_cliente`) REFERENCES `Clientes` (`rut_cliente`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `rut_contacto` FOREIGN KEY (`rut_contacto`) REFERENCES `Contactos` (`rut_contacto`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `rut_tecnico` FOREIGN KEY (`rut_tecnico`) REFERENCES `Tecnicos` (`rut_tecnico`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1652 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for OT_Actividades
-- ----------------------------
CREATE TABLE `OT_Actividades` (
  `id_ot_actividad` int NOT NULL AUTO_INCREMENT,
  `id_servicio` int DEFAULT NULL,
  `id_actividad` int DEFAULT NULL,
  `observacion` varchar(1000) DEFAULT NULL,
  `imei_retirado` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id_ot_actividad`),
  KEY `id_actividad` (`id_actividad`),
  KEY `OT_Actividades_FK` (`id_servicio`),
  CONSTRAINT `id_actividad` FOREIGN KEY (`id_actividad`) REFERENCES `Actividades` (`id_actividad`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `OT_Actividades_FK` FOREIGN KEY (`id_servicio`) REFERENCES `Servicios` (`id_servicio`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1634 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for OT_Diagnosticos
-- ----------------------------
CREATE TABLE `OT_Diagnosticos` (
  `id_ot_diagnostico` int NOT NULL AUTO_INCREMENT,
  `id_servicio` int DEFAULT NULL,
  `id_diagnostico` int DEFAULT NULL,
  `observacion` varchar(1000) DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`id_ot_diagnostico`),
  KEY `id_diagnostico` (`id_diagnostico`),
  KEY `OT_Diagnosticos_FK` (`id_servicio`),
  CONSTRAINT `id_diagnostico` FOREIGN KEY (`id_diagnostico`) REFERENCES `Diagnosticos` (`id_diagnostico`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `OT_Diagnosticos_FK` FOREIGN KEY (`id_servicio`) REFERENCES `Servicios` (`id_servicio`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for OT_Trabajos
-- ----------------------------
CREATE TABLE `OT_Trabajos` (
  `id_ot_trabajos` int NOT NULL AUTO_INCREMENT,
  `id_servicio` int DEFAULT NULL,
  `id_trabajo` int DEFAULT NULL,
  `observacion` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_ot_trabajos`),
  KEY `id_trabajo` (`id_trabajo`),
  KEY `OT_Trabajos_FK` (`id_servicio`),
  CONSTRAINT `id_trabajo` FOREIGN KEY (`id_trabajo`) REFERENCES `Trabajos` (`id_trabajo`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `OT_Trabajos_FK` FOREIGN KEY (`id_servicio`) REFERENCES `Servicios` (`id_servicio`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=499 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for OT_Vehiculos
-- ----------------------------
CREATE TABLE `OT_Vehiculos` (
  `id_ot_vehiculos` int NOT NULL AUTO_INCREMENT,
  `id_ot` int NOT NULL,
  `patente` varchar(10) NOT NULL,
  PRIMARY KEY (`id_ot_vehiculos`),
  KEY `OT_Vehiculos_FK` (`id_ot`),
  KEY `OT_Vehiculos_FK_1` (`patente`),
  CONSTRAINT `OT_Vehiculos_FK` FOREIGN KEY (`id_ot`) REFERENCES `OT` (`id_ot`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `OT_Vehiculos_FK_1` FOREIGN KEY (`patente`) REFERENCES `Vehiculos` (`patente`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1598 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for OT_servmecanico
-- ----------------------------
CREATE TABLE `OT_servmecanico` (
  `id_otserv` int NOT NULL AUTO_INCREMENT,
  `id_servicio` int NOT NULL,
  `oct_bencina` varchar(100) DEFAULT 'No Registrado',
  PRIMARY KEY (`id_otserv`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Planes
-- ----------------------------
CREATE TABLE `Planes` (
  `id_plan` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descipcion` varchar(100) DEFAULT NULL,
  `rut_telco` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id_plan`),
  KEY `rut_telco` (`rut_telco`),
  CONSTRAINT `rut_telco` FOREIGN KEY (`rut_telco`) REFERENCES `Telcos` (`rut_telco`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Planes_Comerciales
-- ----------------------------
CREATE TABLE `Planes_Comerciales` (
  `id_plan_comercial` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id_plan_comercial`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Roles
-- ----------------------------
CREATE TABLE `Roles` (
  `id_rol` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id_rol`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Servicios
-- ----------------------------
CREATE TABLE `Servicios` (
  `id_servicio` int NOT NULL AUTO_INCREMENT,
  `id_ot` int DEFAULT NULL,
  `reporta` varchar(1) DEFAULT NULL,
  `estado` varchar(100) DEFAULT NULL,
  `fecha_estado` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `dias` decimal(3,0) DEFAULT NULL,
  `fecha_instalacion` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `fecha_activacion` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `odometro_actual` double DEFAULT NULL,
  `patente` varchar(10) DEFAULT NULL,
  `imei_instalado` varchar(100) DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`id_servicio`),
  KEY `patente` (`patente`),
  KEY `Servicios_FK` (`id_ot`),
  CONSTRAINT `patente` FOREIGN KEY (`patente`) REFERENCES `Vehiculos` (`patente`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `Servicios_FK` FOREIGN KEY (`id_ot`) REFERENCES `OT` (`id_ot`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1548 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Sims
-- ----------------------------
CREATE TABLE `Sims` (
  `iccid` decimal(20,0) NOT NULL,
  `imsi` decimal(20,0) DEFAULT NULL,
  `msisdn` decimal(20,0) DEFAULT NULL,
  `pin` decimal(4,0) DEFAULT NULL,
  `puk` decimal(10,0) DEFAULT NULL,
  `estado` varchar(1) DEFAULT NULL,
  `sesion` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`iccid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Sims_Planes
-- ----------------------------
CREATE TABLE `Sims_Planes` (
  `id_sims_planes` int NOT NULL AUTO_INCREMENT,
  `iccid` decimal(20,0) DEFAULT NULL,
  `id_plan_telco` int DEFAULT NULL,
  `fecha` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `estado` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`id_sims_planes`),
  KEY `iccid2` (`iccid`),
  KEY `id_plan_telco` (`id_plan_telco`),
  CONSTRAINT `iccid2` FOREIGN KEY (`iccid`) REFERENCES `Sims` (`iccid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `id_plan_telco` FOREIGN KEY (`id_plan_telco`) REFERENCES `Planes` (`id_plan`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Tecnicos
-- ----------------------------
CREATE TABLE `Tecnicos` (
  `rut_tecnico` varchar(15) NOT NULL,
  `nombre` varchar(250) DEFAULT NULL,
  `idgpsimple` int DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`rut_tecnico`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Telcos
-- ----------------------------
CREATE TABLE `Telcos` (
  `rut_telco` varchar(10) NOT NULL,
  `nombre` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`rut_telco`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Tipos_Gps
-- ----------------------------
CREATE TABLE `Tipos_Gps` (
  `id_tipo_gps` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id_tipo_gps`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Tipos_Vehiculos
-- ----------------------------
CREATE TABLE `Tipos_Vehiculos` (
  `id_tipo_vehiculo` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id_tipo_vehiculo`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Trabajos
-- ----------------------------
CREATE TABLE `Trabajos` (
  `id_trabajo` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) DEFAULT NULL,
  `descripcion` varchar(100) DEFAULT NULL,
  `estado` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`id_trabajo`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Vehiculos
-- ----------------------------
CREATE TABLE `Vehiculos` (
  `patente` varchar(10) NOT NULL,
  `marca` varchar(50) DEFAULT NULL,
  `modelo` varchar(50) DEFAULT NULL,
  `anio` varchar(10) DEFAULT NULL,
  `vin` varchar(20) DEFAULT NULL,
  `color` varchar(20) DEFAULT 'NO INFORMADO',
  `odometro` double DEFAULT NULL,
  `id_tipo_vehiculo` int DEFAULT NULL,
  `img_vin` longblob,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`patente`),
  KEY `id_tipo_vehiculo` (`id_tipo_vehiculo`),
  CONSTRAINT `id_tipo_vehiculo` FOREIGN KEY (`id_tipo_vehiculo`) REFERENCES `Tipos_Vehiculos` (`id_tipo_vehiculo`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for Vehiculos_Gps
-- ----------------------------
CREATE TABLE `Vehiculos_Gps` (
  `id_vehiculos_gps` int NOT NULL AUTO_INCREMENT,
  `patente` varchar(10) DEFAULT NULL,
  `imei` decimal(20,0) DEFAULT NULL,
  `fecha` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `estado` varchar(1) DEFAULT NULL,
  `odometro_plataforma` varchar(50) DEFAULT NULL,
  `odometro_real` varchar(50) DEFAULT NULL,
  `latitud` varchar(255) DEFAULT NULL,
  `longitud` varchar(255) DEFAULT NULL,
  `creado_en` datetime DEFAULT NULL,
  `actualizado_en` datetime DEFAULT NULL,
  PRIMARY KEY (`id_vehiculos_gps`),
  KEY `patente3` (`patente`),
  KEY `imei` (`imei`),
  CONSTRAINT `imei` FOREIGN KEY (`imei`) REFERENCES `Gps` (`imei`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `patente3` FOREIGN KEY (`patente`) REFERENCES `Vehiculos` (`patente`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1178 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for dia_sin_ot
-- ----------------------------
CREATE TABLE `dia_sin_ot` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `rut_cliente` varchar(10) DEFAULT NULL,
  `id_empresa` bigint unsigned DEFAULT NULL,
  `direccion` varchar(255) NOT NULL,
  `comuna` varchar(255) DEFAULT NULL,
  `id_empresa_instaladora` bigint unsigned DEFAULT NULL,
  `id_actividad` int DEFAULT NULL,
  `solicitante` varchar(255) DEFAULT NULL,
  `confirmada` tinyint(1) NOT NULL DEFAULT '0',
  `id_firma_sin_ot` bigint unsigned DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `id_prestador` bigint unsigned DEFAULT NULL,
  `id_instalador` bigint unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `dia_sin_ot_id_empresa_foreign` (`id_empresa`),
  KEY `dia_sin_ot_id_empresa_instaladora_foreign` (`id_empresa_instaladora`),
  KEY `dia_sin_ot_id_prestador_foreign` (`id_prestador`),
  KEY `dia_sin_ot_id_servicio_mecanico_foreign` (`id_actividad`),
  KEY `dia_sin_ot_rut_cliente_foreign` (`rut_cliente`),
  CONSTRAINT `dia_sin_ot_ibfk_1` FOREIGN KEY (`id_empresa`) REFERENCES `empresa` (`id`) ON DELETE SET NULL ON UPDATE RESTRICT,
  CONSTRAINT `dia_sin_ot_ibfk_2` FOREIGN KEY (`id_empresa_instaladora`) REFERENCES `empresa_instaladora` (`id`) ON DELETE SET NULL ON UPDATE RESTRICT,
  CONSTRAINT `dia_sin_ot_ibfk_3` FOREIGN KEY (`id_prestador`) REFERENCES `prestador` (`id`) ON DELETE SET NULL ON UPDATE RESTRICT,
  CONSTRAINT `dia_sin_ot_ibfk_4` FOREIGN KEY (`id_actividad`) REFERENCES `servicios_mecanicos` (`id_serv_mecanicos`) ON DELETE SET NULL ON UPDATE RESTRICT,
  CONSTRAINT `dia_sin_ot_ibfk_5` FOREIGN KEY (`rut_cliente`) REFERENCES `Clientes` (`rut_cliente`) ON DELETE SET NULL ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for empresa
-- ----------------------------
CREATE TABLE `empresa` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(255) NOT NULL,
  `rut` varchar(11) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for empresa_instaladora
-- ----------------------------
CREATE TABLE `empresa_instaladora` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(255) NOT NULL,
  `logo` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for firma_sin_ot
-- ----------------------------
CREATE TABLE `firma_sin_ot` (
  `id_dia_sin_ot` bigint unsigned NOT NULL,
  `rut_cliente` varchar(10) NOT NULL,
  `img_firma` longblob COMMENT 'Imagen de la firma hecha para aprobar el día',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id_dia_sin_ot`,`rut_cliente`),
  KEY `firma_sin_ot_rut_cliente_foreign` (`rut_cliente`),
  CONSTRAINT `firma_sin_ot_ibfk_1` FOREIGN KEY (`id_dia_sin_ot`) REFERENCES `dia_sin_ot` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for migrations
-- ----------------------------
CREATE TABLE `migrations` (
  `id` int NOT NULL AUTO_INCREMENT,
  `migration` varchar(255) NOT NULL,
  `batch` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for prestador
-- ----------------------------
CREATE TABLE `prestador` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(255) NOT NULL,
  `logo` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for servicios_mecanicos
-- ----------------------------
CREATE TABLE `servicios_mecanicos` (
  `id_serv_mecanicos` int NOT NULL AUTO_INCREMENT,
  `nombre_servicio` varchar(100) NOT NULL,
  `diag_inc` int NOT NULL,
  `trab_inc` int NOT NULL DEFAULT '0',
  `id_worpress` bigint DEFAULT NULL,
  PRIMARY KEY (`id_serv_mecanicos`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Table structure for users
-- ----------------------------
CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
  `email` varchar(255) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
  `password` varchar(100) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
  `remember_token` varchar(255) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
  `created_at` date DEFAULT NULL,
  `updated_at` date DEFAULT NULL,
  `id_rol` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id_rol` (`id_rol`),
  CONSTRAINT `id_rol` FOREIGN KEY (`id_rol`) REFERENCES `Roles` (`id_rol`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_spanish_ci;

-- ----------------------------
-- Table structure for vehiculo_sin_ot
-- ----------------------------
CREATE TABLE `vehiculo_sin_ot` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id de la fila',
  `id_dia_sin_ot` bigint unsigned DEFAULT NULL COMMENT 'Id del dia al que está asociado el vehículo. Relación 1-n',
  `patente` varchar(255) CHARACTER SET utf8mb3 NOT NULL COMMENT 'Patente del vehículo',
  `imei` bigint unsigned NOT NULL COMMENT 'Imei del dispositivo GPS',
  `img_imei` longblob COMMENT 'Imagen tomada del QR que se encuentra en el dispositivo y contiene el IMEI',
  `id_gps` int unsigned NOT NULL COMMENT 'Id escrita en el dispositivo GPS físico',
  `vin` varchar(255) CHARACTER SET utf8mb3 NOT NULL COMMENT 'VIN del vehiculo',
  `img_vin` longblob COMMENT 'Imagen tomada del QR que se encuentra en el dispositivo y contiene el VIN',
  `marca` varchar(255) CHARACTER SET utf8mb3 NOT NULL,
  `modelo` varchar(255) CHARACTER SET utf8mb3 NOT NULL,
  `color` varchar(255) CHARACTER SET utf8mb3 NOT NULL,
  `anho` smallint unsigned NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `solicitante` varchar(255) CHARACTER SET utf8mb3 NOT NULL,
  `utilizacion` varchar(255) CHARACTER SET utf8mb3 NOT NULL,
  `lat` float(9,6) NOT NULL,
  `lng` float(9,6) NOT NULL,
  `img_vin_imei` longblob,
  `tipo_dispositivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '',
  `instalado` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `id_inmo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `cortac_bombab` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `observacion` mediumtext COLLATE utf8mb4_unicode_ci,
  `insta_vehiculo` mediumtext COLLATE utf8mb4_unicode_ci,
  `insta_user` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `vehiculo_sin_ot_id_dia_sin_ot_foreign` (`id_dia_sin_ot`),
  CONSTRAINT `vehiculo_sin_ot_ibfk_1` FOREIGN KEY (`id_dia_sin_ot`) REFERENCES `dia_sin_ot` (`id`) ON DELETE SET NULL ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ----------------------------
-- Procedure structure for prc_Contactos
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Contactos`;
delimiter ;;
CREATE PROCEDURE `prc_Contactos`(in in_rut_contacto varchar(10),
    in in_nombre varchar(50),
    in in_email varchar(255),
    in in_rut_cliente varchar(10),
    in in_id_user int(10),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
begin

	declare v_contador int default 0;
	declare v_accion varchar(100);

	select count(rut_contacto) 
      into v_contador 
      from revisa.Contactos
     where rut_contacto  = in_rut_contacto;

	if (v_contador > 0) then
	
		update revisa.Contactos
		   set nombre = in_nombre,
			   email = in_email,
			   rut_cliente = in_rut_cliente
		 where rut_contacto = in_rut_contacto;
		
		set out_mensaje = 'Datos contacto actualizados';
		set v_accion = concat('update in_rut_contacto=',in_rut_contacto);
    else    
    	insert into revisa.Contactos (rut_contacto, nombre, email, rut_cliente)
    	                        values (in_rut_contacto, in_nombre, in_email, in_rut_cliente);
		set out_mensaje = 'Datos contacto ingresados';
		set v_accion = concat('insert in_rut_contacto=',in_rut_contacto);
    end if;

   	call revisa.prc_logs('prc_Contactos', v_accion, in_id_user, @out_resultado, @out_mensaje);
	set out_resultado = 'T';
end
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Gps
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Gps`;
delimiter ;;
CREATE PROCEDURE `prc_Gps`(in in_imei numeric(20),
   	in in_marca varchar(50),
   	in in_modelo varchar(100),
   	in in_id_estado_gps int(8),
   	in in_id_tipo_gps int(8),
    in in_id_user int(10),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
begin

	declare v_contador int default 0;
	declare v_accion varchar(100);

	select count(imei) 
      into v_contador 
      from revisa.Gps
     where imei  = in_imei;

	if (v_contador > 0) then
		update revisa.Gps
		   set marca = in_marca,
			   modelo = in_modelo,
			   id_estado_gps = in_id_estado_gps,
			   id_tipo_gps = in_id_tipo_gps
		 where imei = in_imei;

		set out_mensaje = 'Datos gps actualizados';
		set v_accion = concat('update imei=',in_imei);
    else    
    	insert into revisa.Gps (imei, marca, modelo, id_estado_gps, id_tipo_gps)
    	                  values (in_imei, in_marca, in_modelo, in_id_estado_gps, in_id_tipo_gps);
		set out_mensaje = 'Datos gps ingresados';
		set v_accion = concat('insert imei=',in_imei);
    end if;

   	call revisa.prc_logs('prc_Gps', v_accion, in_id_user, @out_resultado, @out_mensaje);
	set out_resultado = 'T';

end
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Imagenes
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Imagenes`;
delimiter ;;
CREATE PROCEDURE `prc_Imagenes`(in in_nombre varchar(50),
    in in_descripcion varchar(100),
    in in_ruta varchar(100),
    in in_sessionID varchar(255),
    in in_id_ot int(8),
    in in_id_user int(10),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
BEGIN
 
	declare v_accion varchar(100);
	declare v_id_imagen int(8);

	if (in_id_ot = 0) then
		insert into revisa.Imagenes (nombre, descripcion, ruta, sessionID, id_ot)
		values (in_nombre, in_descripcion, in_ruta, in_sessionID, in_id_ot);
		select @@identity AS id into v_id_imagen;
	
	    set v_accion = concat('insert v_id_imagen=',v_id_imagen);
	    set out_mensaje = 'Datos Imagenes ingresados';
   	else
    	UPDATE revisa.Imagenes 
		   set id_ot = in_id_ot
		 WHERE sessionID = in_sessionID;

		set v_accion = concat('update sessionID=',in_sessionID);
		set out_mensaje = 'Datos Imagenes Actualizados';
   	end if;
   
	call revisa.prc_logs('prc_Imagenes', v_accion, in_id_user, @out_resultado, @out_mensaje);
  	set out_resultado = 'T';

END
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Logs
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Logs`;
delimiter ;;
CREATE PROCEDURE `prc_Logs`(in in_modulo varchar(50),
	in in_accion varchar(50),
	in in_id_user int(10),
	out out_resultado varchar(1),
    out out_mensaje varchar(100))
begin
	
	insert into revisa.Logs(modulo, accion, fecha, id_user)
                      values (in_modulo, in_accion, sysdate(), in_id_user);

    set out_resultado = 'T';
    set out_mensaje = 'Datos logs ingresados';

end
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_OT
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_OT`;
delimiter ;;
CREATE PROCEDURE `prc_OT`(in in_rut_cliente varchar(10),
    in in_rut_contacto varchar(10),
    in in_rut_tecnico varchar(10),
    in in_hora_llegada varchar(10),
    in in_hora_salida varchar(10),
    in in_patente varchar(10),
    in in_marca varchar(50),
    in in_modelo varchar(100),
   	in in_imei numeric(20),
    in in_tipoGPS varchar(50),
    in in_odometro_plataforma varchar(50),
	in in_odometro_real varchar(50),
	in in_latitud varchar(255),
	in in_longitud varchar(255),
    in in_actividades int(8),
    in in_diagnosticos varchar(1000),
    in in_trabajos int(8),
    in in_sessionID varchar(255),
    in in_id_user int(10),
    out out_id_ot int(8),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
begin
	
 	declare v_accion varchar(100);
 	declare v_id_vehiculos_gps int(8);
 	declare v_id_tipo_gps int(8);

 	call revisa.prc_Tipos_Gps( in_tipoGPS, null, in_id_user, @out_id_tipo_gps, @out_resultado, @out_mensaje);
 	select @out_id_tipo_gps as id_tipo_gps into v_id_tipo_gps;
 	call revisa.prc_Gps(in_imei, null, null, NULL, v_id_tipo_gps, in_id_user, @out_resultado, @out_mensaje);
    call revisa.prc_Vehiculos(in_patente, in_marca, in_modelo, null, null, null, null, in_id_user, @out_resultado, @out_mensaje);
   
   	call revisa.prc_Vehiculos_Gps(in_patente, in_imei, in_odometro_plataforma, in_odometro_real, in_latitud, in_longitud, in_id_user, @out_id_vehiculos_gps, @out_resultado, @out_mensaje);
   	select @out_id_vehiculos_gps as id_vehiculos_gps into v_id_vehiculos_gps;

	insert into revisa.OT (fecha, rut_cliente, rut_contacto, rut_tecnico, hora_llegada, hora_salida, id_vehiculos_gps)
    values (sysdate(), in_rut_cliente, in_rut_contacto, in_rut_tecnico, in_hora_llegada, in_hora_salida, v_id_vehiculos_gps);
    select @@identity AS id into out_id_ot;
   
 	call revisa.prc_OT_Actividades(out_id_ot, in_actividades, @out_resultado, @out_mensaje);
 	call revisa.prc_OT_Diagnosticos(out_id_ot, in_diagnosticos, @out_resultado, @out_mensaje);
   	call revisa.prc_OT_Trabajos(out_id_ot, in_trabajos, @out_resultado, @out_mensaje);
   
call revisa.prc_Imagenes(null, null, null, in_sessionID, out_id_ot, in_id_user, @out_resultado, @out_mensaje);

	set v_accion = concat('insert id_ot=',out_id_ot);	
	call revisa.prc_logs('prc_OT', v_accion, in_id_user, @out_resultado, @out_mensaje);

	set out_mensaje = concat('Orden de Trabajo generada : ',out_id_ot);  
	set out_resultado = 'T';
end
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_OT_Actividades
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_OT_Actividades`;
delimiter ;;
CREATE PROCEDURE `prc_OT_Actividades`(in in_id_ot int (8),
	in in_id_actividad int(8),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
begin
	insert into revisa.OT_Actividades(id_ot, id_actividad)
	values (in_id_ot, in_id_actividad);

	set out_resultado = 'T';
	set out_mensaje = 'Datos OT_Actividades ingresados';
end
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_OT_Diagnosticos
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_OT_Diagnosticos`;
delimiter ;;
CREATE PROCEDURE `prc_OT_Diagnosticos`(in in_id_ot int (8),
	in in_diagnosticos varchar(1000),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
BEGIN

	declare v_contador integer default 0;
	declare v_diagnosticos varchar(255);
	declare v_dato varchar(255);
	declare	v_valor varchar (255);
	declare v_posicion int(2);
	declare v_id_diagnostico int(8);
	declare v_observacion varchar(1000);

	set v_diagnosticos = (length(in_diagnosticos) - length(replace(in_diagnosticos, ',', '')));
	
	while (v_contador <= v_diagnosticos) DO
		
		if (v_contador = 0) then
	    	set v_dato=(substring_index(in_diagnosticos,',',1) );            	
	  	else
	    	set in_diagnosticos	= replace(in_diagnosticos,concat(substring_index(in_diagnosticos,',',1),','),"");
	        set v_dato 			= (substring_index(in_diagnosticos,',',1) );
		end if;

	  	set v_posicion 			= locate('=>', v_dato);
	    set v_id_diagnostico	= substring(v_dato, 1, (v_posicion-1));
	    set v_observacion 		= substring(v_dato, (v_posicion+2), length(v_dato));
	    
	   	insert into revisa.OT_Diagnosticos(id_ot, id_diagnostico, observacion) values(in_id_ot, v_id_diagnostico, v_observacion);
	 	
	       
		set v_contador = v_contador + 1;
	end while;

	set out_resultado = 'T';
	set out_mensaje = 'Datos OT_Diagnosticos ingresados';
END
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_OT_Trabajos
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_OT_Trabajos`;
delimiter ;;
CREATE PROCEDURE `prc_OT_Trabajos`(in in_id_ot int (8),
	in in_id_trabajo int(8),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
BEGIN
	insert into revisa.OT_Trabajos (id_ot, id_trabajo)
							  values (in_id_ot, in_id_trabajo );
	
	set out_resultado = 'T';
	set out_mensaje = 'Datos OT_Trabajos ingresados';
END
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Tecnicos
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Tecnicos`;
delimiter ;;
CREATE PROCEDURE `prc_Tecnicos`(in in_rut_tecnico varchar(10),
    in in_nombre varchar(50),
    in in_id_user int(10),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
begin
 
	declare v_contador int default 0;
	declare v_accion varchar(100);

     select count(rut_tecnico) 
       into v_contador
       from revisa.Tecnicos
      where rut_tecnico  = in_rut_tecnico;
    
    if (v_contador > 0) then
    	update revisa.Tecnicos 
		   set nombre = in_nombre
		 where rut_tecnico = in_rut_tecnico;
   	
		set out_mensaje = 'Datos tecnico actualizados';
		set v_accion = concat('update in_rut_tecnico=',in_rut_tecnico);
   	
    else
    	insert into revisa.Tecnicos (rut_tecnico, nombre)
    	                       values (in_rut_tecnico, in_nombre);

   		set out_mensaje = 'Datos tecnico ingresados';
		set v_accion = concat('insert in_rut_tecnico=',in_rut_tecnico);
    end if;
   
    call revisa.prc_logs('prc_Tecnicos', v_accion, in_id_user, @out_resultado, @out_mensaje);
	set out_resultado = 'T';
end
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Tipos_Gps
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Tipos_Gps`;
delimiter ;;
CREATE PROCEDURE `prc_Tipos_Gps`(in in_nombre varchar(50),
    in in_descripcion varchar(50),
    in in_id_user int(10),
    out out_id_tipo_gps int(8),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
BEGIN
	declare v_contador int default 0;
	declare v_accion varchar(100);

	select count(nombre)
	  into v_contador
	  from revisa.Tipos_Gps
	 where nombre = in_nombre;

	if (v_contador > 0) then
	
		update revisa.Tipos_Gps
		   set descripcion = in_descripcion
		 where nombre = in_nombre;
		
		set out_mensaje = 'Datos tipo gps actualizados';
		set v_accion = concat('update nombre=',in_nombre);
    else    
    	insert into revisa.Tipos_Gps (nombre, descripcion)
    	                        values (in_nombre, in_descripcion);
    	select @@identity AS id into out_id_tipo_gps;
		set out_mensaje = 'Datos tipo gps ingresados';
		set v_accion = concat('insert nombre=',in_nombre);
    end if;

   	call revisa.prc_logs('prc_Tipos_Gps', v_accion, in_id_user, @out_resultado, @out_mensaje);
	set out_resultado = 'T';
	
END
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Vehiculos
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Vehiculos`;
delimiter ;;
CREATE PROCEDURE `prc_Vehiculos`(IN in_patente varchar(10),
    IN in_marca varchar(50),
    IN in_modelo varchar(50),
    IN in_anio varchar(10),
    IN in_vin varchar(20),
    IN in_color varchar(20),
    IN in_id_tipo_vehiculo int,
    in in_id_user int(10),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
BEGIN
         
	declare v_contador int DEFAULT 0;
	declare v_accion varchar(100);
    
     SELECT count(patente)
       INTO v_contador
       FROM revisa.Vehiculos
      WHERE patente = in_patente;
    
    IF (v_contador > 0) THEN
    	UPDATE revisa.Vehiculos
		set marca = in_marca,
			modelo = in_modelo,
			anio = in_anio,
			vin = in_vin,
			color = in_color,
			id_tipo_vehiculo = in_id_tipo_vehiculo
		WHERE patente = in_patente;
   		set out_mensaje = 'Datos Vehiculo Actualizados';
		set v_accion = concat('update patente=',in_patente);
    ELSE
    	INSERT into revisa.Vehiculos (patente ,marca,  modelo, anio, vin, color, id_tipo_vehiculo)
    	values (in_patente, in_marca, in_modelo, in_anio, in_vin, in_color, in_id_tipo_vehiculo);
   		set out_mensaje = 'Datos Vehiculo Ingresados';
		set v_accion = concat('insert patente=',in_patente);
    END IF;

	call revisa.prc_logs('prc_Vehiculos', v_accion, in_id_user, @out_resultado, @out_mensaje);
  	set out_resultado = 'T';

END
;;
delimiter ;

-- ----------------------------
-- Procedure structure for prc_Vehiculos_Gps
-- ----------------------------
DROP PROCEDURE IF EXISTS `prc_Vehiculos_Gps`;
delimiter ;;
CREATE PROCEDURE `prc_Vehiculos_Gps`(in in_patente varchar(10),
    in in_imei numeric(20),
    in in_odometro_plataforma varchar(50),
	in in_odometro_real varchar(50),
	in in_latitud varchar(255),
	in in_longitud varchar(255),
	in in_id_user int(10),
	out out_id_vehiculos_gps int(8),
    out out_resultado varchar(1),
    out out_mensaje varchar(100))
BEGIN

	declare v_accion varchar(100);

	insert into revisa.Vehiculos_Gps (patente, imei, fecha, estado, odometro_plataforma, odometro_real, latitud, longitud)
   	values (in_patente, in_imei, sysdate(), null, in_odometro_plataforma, in_odometro_real, in_latitud, in_longitud);
  	select @@identity AS id into out_id_vehiculos_gps;

	set out_mensaje = 'Datos Vehiclos Gps ingresados';
	set v_accion = concat('insert id_vehiculos_gps=',out_id_vehiculos_gps);

   	call revisa.prc_logs('prc_Vehiculos_Gps', v_accion, in_id_user, @out_resultado, @out_mensaje);
	set out_resultado = 'T';
END
;;
delimiter ;

-- ----------------------------
-- Procedure structure for split_explode
-- ----------------------------
DROP PROCEDURE IF EXISTS `split_explode`;
delimiter ;;
CREATE PROCEDURE `split_explode`(in in_diagnosticos varchar(1000))
begin
	declare v_contador integer default 0;
	declare v_diagnosticos varchar(255);
	declare v_dato varchar(255);
	declare	v_valor varchar (255);
	declare v_posicion int(2);
	declare v_id_diagnostico int(8);
	declare v_observacion varchar(1000);

	set v_diagnosticos = (length(in_diagnosticos) - length(replace(in_diagnosticos, ',', '')));
	
	while (v_contador <= v_diagnosticos) DO
		
		if (v_contador = 0) then
	    	set v_dato=(substring_index(in_diagnosticos,',',1) );            	
	  	else
	    	set in_diagnosticos	= replace(in_diagnosticos,concat(substring_index(in_diagnosticos,',',1),','),"");
	        set v_dato 			= (substring_index(in_diagnosticos,',',1) );
		end if;

	  	set v_posicion 			= locate('=>', v_dato);
	    set v_id_diagnostico	= substring(v_dato, 1, (v_posicion-1));
	    set v_observacion 		= substring(v_dato, (v_posicion+2), length(v_dato));
	      
	 	insert into revisa.Debug(campo, dato, valor) values(v_dato, v_id_diagnostico, v_observacion);
	       
		set v_contador = v_contador + 1;
	end while;
end
;;
delimiter ;

