Skip to content

Commit 2a9f65d

Browse files
authored
Merge pull request #4 from chechojgb/extensionDetail
refactor: Transferencia llamada
2 parents 83dcbf0 + 7b4bab8 commit 2a9f65d

File tree

7 files changed

+52
-22
lines changed

7 files changed

+52
-22
lines changed

app/Http/Controllers/PostProxyController.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,17 +231,16 @@ public function unpauseExtension(Request $request): JsonResponse
231231

232232
public function channelTransfer(Request $request): JsonResponse
233233
{
234-
$channel = $request->input('channel');
235-
$destiny = $request->input('destiny');
234+
$channel = $request->input('canal');
235+
$destino = $request->input('destino'); // ← este nombre es el correcto
236236

237-
if (!$channel || !$destiny) {
238-
return response()->json(['error' => 'Extensión no proporcionada'], 400);
237+
if (!$channel || !$destino) {
238+
return response()->json(['error' => 'Todos los datos no fueron proporcionados'], 400);
239239
}
240240

241-
242241
$response = Http::post('http://10.57.251.181:3006/transferir', [
243242
'canal' => $channel,
244-
'destino' => $destiny,
243+
'destino' => $destino, // ← debe mantenerse igual que en Postman
245244
]);
246245

247246
if ($response->successful()) {
@@ -251,4 +250,6 @@ public function channelTransfer(Request $request): JsonResponse
251250
return response()->json(['error' => 'No se pudo transferir la llamada'], 500);
252251
}
253252

253+
254+
254255
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
export default async function TransferCall({ canal, destino }) {
2+
const payload = {
3+
canal,
4+
destino,
5+
};
6+
7+
console.log('➡️ Enviando a la API:', payload);
8+
9+
try {
10+
const response = await fetch('/api/transfer-call', {
11+
method: 'POST',
12+
headers: {
13+
'Content-Type': 'application/json',
14+
Accept: 'application/json',
15+
},
16+
body: JSON.stringify(payload),
17+
});
18+
19+
const data = await response.json();
20+
21+
if (response.ok) {
22+
return { success: true, message: data.message };
23+
} else {
24+
return { success: false, message: data.error || 'Error desconocido' };
25+
}
26+
} catch (error) {
27+
console.error('Error al transferir:', error);
28+
return { success: false, message: 'Error de red o servidor' };
29+
}
30+
}

resources/js/components/adminActions.jsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default function AdminActions({ data }) {
4343
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4">
4444
{/*1.1 MAPEO DE BOTONES */}
4545
{actions.map((action, index) => {
46-
const disabled = isUnspecified || action.disabledIf(conditions);
46+
const disabled = isUnspecified || action.disabledIf(conditions);
4747
return (
4848
<AdminActionButton
4949
key={index}
@@ -77,10 +77,7 @@ export default function AdminActions({ data }) {
7777
<AgentModalWrapper closeModal={hideModal}>
7878
<TransferModal
7979
hideModal={hideModal}
80-
handleTransfer={(queue) => {
81-
console.log('Transferir a:', queue);
82-
hideModal(); // También puedes cerrarlo aquí
83-
}}
80+
handlers={handlers}
8481
/>
8582
</AgentModalWrapper>
8683
)}

resources/js/components/transferModal.jsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import React from "react";
22
import { useState } from "react";
33
import AgentModalWrapper from '@/components/agentsModalWrapper';
44

5-
function TransferModal ({hideModal, handleTransfer}){
6-
const [selectedQueue, setSelectedQueue] = useState(null)
5+
function TransferModal ({hideModal, handlers}){
6+
const [selectedOperation, setSelectedOperation] = useState(null)
77
return(
88
<>
99
<h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-2">Transferir llamada</h3>
@@ -18,9 +18,9 @@ function TransferModal ({hideModal, handleTransfer}){
1818
{['Tramites', 'Soporte', 'Movil', 'Retencion', 'Pruebas'].map((area) => (
1919
<button
2020
key={area}
21-
onClick={() => setSelectedQueue(area)} // Define esta función en tu estado
21+
onClick={() => setSelectedOperation(area)}
2222
className={`w-full py-2 px-3 text-sm rounded-md font-medium border dark:border-gray-600 transition ${
23-
selectedQueue === area
23+
selectedOperation === area
2424
? 'bg-indigo-600 text-white'
2525
: 'bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-white hover:bg-gray-200 dark:hover:bg-gray-600'
2626
}`}
@@ -40,11 +40,11 @@ function TransferModal ({hideModal, handleTransfer}){
4040
</button>
4141
<button
4242
onClick={() => {
43-
handleTransfer(selectedQueue);
43+
handlers.handleTransfer(selectedOperation);
4444
hideModal();
4545
}}
4646
className="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded text-sm font-medium"
47-
disabled={!selectedQueue}
47+
disabled={!selectedOperation}
4848
>
4949
Confirmar
5050
</button>

resources/js/hooks/useAdminButtons.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default function useAdminButtons({ data, handlers }) {
3030
bg: 'hover:bg-blue-50 dark:hover:bg-blue-400/60',
3131
border: 'border-blue-200 dark:border-black',
3232
onClick: () => handlers.modal,
33-
disabledIf: (c) => c.paused,
33+
disabledIf: (c) => c.notCall,
3434
},
3535
{
3636
label: 'Pausar agente',

resources/js/hooks/useAdminHandlers.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useState } from 'react';
22
import hangupChannel from '@/components/actionsAgent/deleteCall';
33
import PausedExtension from '@/components/actionsAgent/pausedExtension';
44
import UnpauseExtension from '@/components/actionsAgent/unpauseExtension';
5+
import TransferCall from '@/components/actionsAgent/transferCall';
56

67
export default function useAdminHandlers(data) {
78
const [toast, setToast] = useState({ show: false, success: true, message: '' });
@@ -26,11 +27,11 @@ export default function useAdminHandlers(data) {
2627
showToast(result);
2728
};
2829

29-
const handleTransfer = async () => {
30-
const result = await UnpauseExtension(data?.extension);
30+
const handleTransfer = async (destino) => {
31+
const result = await TransferCall({ canal: data?.canalRelacionado, destino });
3132
showToast(result);
3233
};
3334

3435

35-
return { handleHangup, handlePause, handleUnpause, toast };
36+
return { handleHangup, handlePause, handleUnpause,handleTransfer, toast };
3637
}

routes/api.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
Route::get('/getOverview', [PostProxyController::class, 'getOverview']);
1616
Route::post('/hangup-channel', [PostProxyController::class, 'chanelHangup']);
1717
Route::post('/pause-extension', [PostProxyController::class, 'pauseExtension']);
18-
Route::post('/unpause-extension', [PostProxyController::class, 'unpauseExtension']);
18+
Route::post('/unpause-extension', [PostProxyController::class, 'unpauseExtension']);
19+
Route::post('/transfer-call', [PostProxyController::class, 'channelTransfer']);

0 commit comments

Comments
 (0)