diff --git a/app/helpers/chatbot_helper.php b/app/helpers/chatbot_helper.php new file mode 100644 index 0000000..ba28658 --- /dev/null +++ b/app/helpers/chatbot_helper.php @@ -0,0 +1,87 @@ + [ + 'cliente', + 'clientes' + ], + + 'ventas' => [ + 'venta', + 'ventas', + 'factura', + 'comprobante' + ], + + 'servicios' => [ + 'servicio', + 'servicios', + 'reparacion', + 'tecnico' + ], + + 'productos' => [ + 'producto', + 'productos', + 'stock', + 'categoria' + ], + + 'pedidos' => [ + 'pedido', + 'pedidos', + 'remito' + ], + + 'presupuestos' => [ + 'presupuesto', + 'presupuestos', + 'cotizacion' + ], + + 'proveedores' => [ + 'proveedor', + 'proveedores' + ], + + 'usuarios' => [ + 'usuario', + 'usuarios', + 'admin', + 'operador' + ], + + 'informes' => [ + 'informe', + 'informes', + 'balance', + 'grafico' + ], + + 'copias_seguridad' => [ + 'backup', + 'backups', + 'copia', + 'restaurar' + ] + ]; + + foreach ($mapa as $modulo => $palabras) { + + foreach ($palabras as $palabra) { + + if (str_contains($mensaje, $palabra)) { + return $modulo; + } + } + } + + return 'general'; +} \ No newline at end of file diff --git a/app/helpers/crypto.php b/app/helpers/crypto.php new file mode 100644 index 0000000..f85f874 --- /dev/null +++ b/app/helpers/crypto.php @@ -0,0 +1,57 @@ +obtenerDatosEnvioMail(); + + if (isset($datosConfig['contrasenia_emisor'])) { + $datosConfig['contrasenia_emisor'] = decryptData($datosConfig['contrasenia_emisor']); + } + + if ((int) $datosConfig['mail_automatico'] === 1) { + + $mail = new PHPMailer(true); + + try { + + // CONFIG SMTP + + $mail->isSMTP(); + $mail->Host = 'smtp.gmail.com'; + $mail->SMTPAuth = true; + $mail->Username = $datosConfig['email_emisor']; + $mail->Password = $datosConfig['contrasenia_emisor']; + $mail->SMTPSecure = 'tls'; + $mail->Port = 587; + + // CODIFICACIÓN (evita problemas con tildes) + + $mail->CharSet = 'UTF-8'; + + // REMITENTE + + $mail->setFrom($datosConfig['email_emisor'], 'ByteCenter'); + + // DESTINATARIO + + if (empty($cliente['email'])) { + return false; + } + + $mail->addAddress($cliente['email'], $cliente['nombre'] . ' ' . $cliente['apellido']); + + // DEFINIMOS ARRAY HTML DE INSUMOS UTILIZADOS + + $productos = ""; + + if (!empty($insumos)) { + + foreach ($insumos as $i) { + $productos .= " +
Cliente: ". $cliente['nombre'] . ' ' . $cliente['apellido'] ."
+Equipo: ". $servicio['equipo'] ."
+Problema: ". $servicio['problema']. "
+ +". $servicio['detalle_realizado']. "
+ +| Modelo | +Precio Unitario | +Cantidad | +Subtotal | +
|---|
Mano de obra: ". "$" . number_format($servicio['mano_obra'], 2, ',', '.'). "
+Total: ". "$" . number_format($servicio['total'], 2, ',', '.'). "
+ +Esperamos su confirmación para la realización del servicio, en caso de cancelarlo podrá retirar el equipo en nuestro local ubicado en {$datosConfig['direccion']}, {$datosConfig['ciudad']} y abonar el monto por revisión y desarme: $ {$datosConfig['cargo_cancelacion_servicio']}.
+Nuestros horarios de atención son: {$datosConfig['hora_apertura_maniana']} - {$datosConfig['hora_cierre_maniana']} y {$datosConfig['hora_apertura_tarde']} - {$datosConfig['hora_cierre_tarde']}.
+Por cualquier duda o consulta: {$datosConfig['telefono']} - {$datosConfig['email']}.
+Gracias por confiar en nuestro servicio técnico.
+ByteCenter
+ "; + + // Versión texto plano (por compatibilidad) + + $mail->AltBody = "Servicio finalizado - Total: $ {$servicio['total']}"; + + $mail->send(); + + return true; + + } catch (Exception $e) { + + // Log interno + + error_log($e->getMessage()); + + return false; + } + } else { + return true; + } +} \ No newline at end of file diff --git a/app/helpers/email_finalizado.php b/app/helpers/email_finalizado.php new file mode 100644 index 0000000..e289e8d --- /dev/null +++ b/app/helpers/email_finalizado.php @@ -0,0 +1,156 @@ +obtenerDatosEnvioMail(); + + if (isset($datosConfig['contrasenia_emisor'])) { + $datosConfig['contrasenia_emisor'] = decryptData($datosConfig['contrasenia_emisor']); + } + + if ((int) $datosConfig['mail_automatico'] === 1) { + + $mail = new PHPMailer(true); + + try { + + // CONFIG SMTP + + $mail->isSMTP(); + $mail->Host = 'smtp.gmail.com'; + $mail->SMTPAuth = true; + $mail->Username = $datosConfig['email_emisor']; + $mail->Password = $datosConfig['contrasenia_emisor']; + $mail->SMTPSecure = 'tls'; + $mail->Port = 587; + + // CODIFICACIÓN (evita problemas con tildes) + + $mail->CharSet = 'UTF-8'; + + // REMITENTE + + $mail->setFrom($datosConfig['email_emisor'], 'ByteCenter'); + + // DESTINATARIO + + if (empty($cliente['email'])) { + return false; + } + + $mail->addAddress($cliente['email'], $cliente['nombre'] . ' ' . $cliente['apellido']); + + // DEFINIMOS ARRAY HTML DE INSUMOS UTILIZADOS + + $productos = ""; + + if (!empty($insumos)) { + + foreach ($insumos as $i) { + $productos .= " +Cliente: ". $cliente['nombre'] . ' ' . $cliente['apellido'] ."
+Equipo: ". $servicio['equipo'] ."
+Problema: ". $servicio['problema']. "
+ +". $servicio['detalle_realizado']. "
+ +| Modelo | +Precio Unitario | +Cantidad | +Subtotal | +
|---|
Mano de obra: ". "$" . number_format($servicio['mano_obra'], 2, ',', '.'). "
+Total: ". "$" . number_format($servicio['total'], 2, ',', '.'). "
+ +Cuando desee puede pasar por nuestro local para retirar su equipo, nos encontramos en {$datosConfig['direccion']}, {$datosConfig['ciudad']}.
+Nuestros horarios de atención son: {$datosConfig['hora_apertura_maniana']} - {$datosConfig['hora_cierre_maniana']} y {$datosConfig['hora_apertura_tarde']} - {$datosConfig['hora_cierre_tarde']}.
+Por cualquier duda o consulta: {$datosConfig['telefono']} - {$datosConfig['email']}.
+Gracias por confiar en nuestro servicio técnico.
+ByteCenter
+ "; + + // Versión texto plano (por compatibilidad) + + $mail->AltBody = "Servicio finalizado - Total: $ {$servicio['total']}"; + + $mail->send(); + + return true; + + } catch (Exception $e) { + + // Log interno + + error_log($e->getMessage()); + + return false; + } + } else { + return true; + } +} \ No newline at end of file diff --git a/app/helpers/email_recuperar_cuenta.php b/app/helpers/email_recuperar_cuenta.php new file mode 100644 index 0000000..76a9a99 --- /dev/null +++ b/app/helpers/email_recuperar_cuenta.php @@ -0,0 +1,86 @@ +obtenerDatosEnvioMail(); + + if (isset($datosConfig['contrasenia_emisor'])) { + $datosConfig['contrasenia_emisor'] = decryptData($datosConfig['contrasenia_emisor']); + } + + try { + + // CONFIG SMTP + + $mail->isSMTP(); + $mail->Host = 'smtp.gmail.com'; + $mail->SMTPAuth = true; + $mail->Username = $datosConfig['email_emisor']; + $mail->Password = $datosConfig['contrasenia_emisor']; + $mail->SMTPSecure = 'tls'; + $mail->Port = 587; + + // CODIFICACIÓN (evita problemas con tildes) + + $mail->CharSet = 'UTF-8'; + + // REMITENTE + + $mail->setFrom($datosConfig['email_emisor'], 'ByteCenter'); + + // DESTINATARIO + + if (empty($email)) { + return false; + } + + $mail->addAddress($email); + + $mail->isHTML(true); + $mail->Subject = 'Recuperación de contraseña'; + + $mail->Body = " +Hemos recibido una solicitud para restablecer su contraseña.
+ +Para continuar con el proceso, utilice el siguiente código de verificación:
+ +Este código es válido por un período de 10 minutos.
+ +Si usted no realizó esta solicitud, puede ignorar este mensaje de forma segura.
+ +Atentamente,
+ Equipo de ByteCenter