diff --git a/app/Http/Controllers/PostProxyController.php b/app/Http/Controllers/PostProxyController.php index b754b2c..2d28dd7 100644 --- a/app/Http/Controllers/PostProxyController.php +++ b/app/Http/Controllers/PostProxyController.php @@ -231,17 +231,16 @@ public function unpauseExtension(Request $request): JsonResponse public function channelTransfer(Request $request): JsonResponse { - $channel = $request->input('channel'); - $destiny = $request->input('destiny'); + $channel = $request->input('canal'); + $destino = $request->input('destino'); // ← este nombre es el correcto - if (!$channel || !$destiny) { - return response()->json(['error' => 'Extensión no proporcionada'], 400); + if (!$channel || !$destino) { + return response()->json(['error' => 'Todos los datos no fueron proporcionados'], 400); } - $response = Http::post('http://10.57.251.181:3006/transferir', [ 'canal' => $channel, - 'destino' => $destiny, + 'destino' => $destino, // ← debe mantenerse igual que en Postman ]); if ($response->successful()) { @@ -251,4 +250,6 @@ public function channelTransfer(Request $request): JsonResponse return response()->json(['error' => 'No se pudo transferir la llamada'], 500); } + + } diff --git a/resources/js/components/actionsAgent/transferCall.jsx b/resources/js/components/actionsAgent/transferCall.jsx new file mode 100644 index 0000000..b86bf06 --- /dev/null +++ b/resources/js/components/actionsAgent/transferCall.jsx @@ -0,0 +1,30 @@ +export default async function TransferCall({ canal, destino }) { + const payload = { + canal, + destino, + }; + + console.log('➡️ Enviando a la API:', payload); + + try { + const response = await fetch('/api/transfer-call', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + body: JSON.stringify(payload), + }); + + const data = await response.json(); + + if (response.ok) { + return { success: true, message: data.message }; + } else { + return { success: false, message: data.error || 'Error desconocido' }; + } + } catch (error) { + console.error('Error al transferir:', error); + return { success: false, message: 'Error de red o servidor' }; + } +} diff --git a/resources/js/components/adminActions.jsx b/resources/js/components/adminActions.jsx index 3baf654..a6f247d 100644 --- a/resources/js/components/adminActions.jsx +++ b/resources/js/components/adminActions.jsx @@ -43,7 +43,7 @@ export default function AdminActions({ data }) {
{/*1.1 MAPEO DE BOTONES */} {actions.map((action, index) => { - const disabled = isUnspecified || action.disabledIf(conditions); + const disabled = isUnspecified || action.disabledIf(conditions); return ( { - console.log('Transferir a:', queue); - hideModal(); // También puedes cerrarlo aquí - }} + handlers={handlers} /> )} diff --git a/resources/js/components/transferModal.jsx b/resources/js/components/transferModal.jsx index 3dba6ee..d4994c7 100644 --- a/resources/js/components/transferModal.jsx +++ b/resources/js/components/transferModal.jsx @@ -2,8 +2,8 @@ import React from "react"; import { useState } from "react"; import AgentModalWrapper from '@/components/agentsModalWrapper'; -function TransferModal ({hideModal, handleTransfer}){ - const [selectedQueue, setSelectedQueue] = useState(null) +function TransferModal ({hideModal, handlers}){ + const [selectedOperation, setSelectedOperation] = useState(null) return( <>

Transferir llamada

@@ -18,9 +18,9 @@ function TransferModal ({hideModal, handleTransfer}){ {['Tramites', 'Soporte', 'Movil', 'Retencion', 'Pruebas'].map((area) => ( diff --git a/resources/js/hooks/useAdminButtons.jsx b/resources/js/hooks/useAdminButtons.jsx index db03291..7271273 100644 --- a/resources/js/hooks/useAdminButtons.jsx +++ b/resources/js/hooks/useAdminButtons.jsx @@ -30,7 +30,7 @@ export default function useAdminButtons({ data, handlers }) { bg: 'hover:bg-blue-50 dark:hover:bg-blue-400/60', border: 'border-blue-200 dark:border-black', onClick: () => handlers.modal, - disabledIf: (c) => c.paused, + disabledIf: (c) => c.notCall, }, { label: 'Pausar agente', diff --git a/resources/js/hooks/useAdminHandlers.jsx b/resources/js/hooks/useAdminHandlers.jsx index a679a2c..cf7590c 100644 --- a/resources/js/hooks/useAdminHandlers.jsx +++ b/resources/js/hooks/useAdminHandlers.jsx @@ -2,6 +2,7 @@ import { useState } from 'react'; import hangupChannel from '@/components/actionsAgent/deleteCall'; import PausedExtension from '@/components/actionsAgent/pausedExtension'; import UnpauseExtension from '@/components/actionsAgent/unpauseExtension'; +import TransferCall from '@/components/actionsAgent/transferCall'; export default function useAdminHandlers(data) { const [toast, setToast] = useState({ show: false, success: true, message: '' }); @@ -26,11 +27,11 @@ export default function useAdminHandlers(data) { showToast(result); }; - const handleTransfer = async () => { - const result = await UnpauseExtension(data?.extension); + const handleTransfer = async (destino) => { + const result = await TransferCall({ canal: data?.canalRelacionado, destino }); showToast(result); }; - return { handleHangup, handlePause, handleUnpause, toast }; + return { handleHangup, handlePause, handleUnpause,handleTransfer, toast }; } \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index 8875e78..8f5daab 100644 --- a/routes/api.php +++ b/routes/api.php @@ -15,4 +15,5 @@ Route::get('/getOverview', [PostProxyController::class, 'getOverview']); Route::post('/hangup-channel', [PostProxyController::class, 'chanelHangup']); Route::post('/pause-extension', [PostProxyController::class, 'pauseExtension']); -Route::post('/unpause-extension', [PostProxyController::class, 'unpauseExtension']); \ No newline at end of file +Route::post('/unpause-extension', [PostProxyController::class, 'unpauseExtension']); +Route::post('/transfer-call', [PostProxyController::class, 'channelTransfer']); \ No newline at end of file