bien ya tengo el tiempo para explicarlo todo. Se puede mejorar bastante todavía y ponerlo para todos los idiomas y de más, pero eso ya es mas tiempo que ahora no tengo, invito a todos los que quieran poder modificarlo para que el idioma se ponga directamente según el que se tenga desde el panel y hacerlo mas completo.
Voy a poner paso a paso todo el código de nuevo modificado para evitar errores.
modulo campain_monitorign crear carpeta libs y dentro
libs/PaloSantoBreaks.class.php
y dentro
<?php
/ vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
Codificación: UTF-8
+----------------------------------------------------------------------+
| Issabel version 0.5 |
| http://www.issabel.org |
+----------------------------------------------------------------------+
| Copyright (c) 2006 Palosanto Solutions S. A. |
+----------------------------------------------------------------------+
| The contents of this file are subject to the General Public License |
| (GPL) Version 2 (the "License"); you may not use this file except in |
| compliance with the License. You may obtain a copy of the License at |
| http://www.opensource.org/licenses/gpl-license.php |
| |
| Software distributed under the License is distributed on an "AS IS" |
| basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See |
| the License for the specific language governing rights and |
| limitations under the License. |
+----------------------------------------------------------------------+
| The Initial Developer of the Original Code is PaloSanto Solutions |
+----------------------------------------------------------------------+
$Id: new_campaign.php $ /
include_once("libs/paloSantoDB.class.php");
/ Clase que implementa breaks /
class PaloSantoBreaks
{
var $_DB; // instancia de la clase paloDB
var $errMsg;
function PaloSantoBreaks(&$pDB)
{
// Se recibe como parámetro una referencia a una conexión paloDB
if (is_object($pDB)) {
$this->_DB =& $pDB;
$this->errMsg = $this->_DB->errMsg;
} else {
$dsn = (string)$pDB;
$this->_DB = new paloDB($dsn);
if (!$this->_DB->connStatus) {
$this->errMsg = $this->_DB->errMsg;
// debo llenar alguna variable de error
} else {
// debo llenar alguna variable de error
}
}
}
/**
* Procedimiento para obtener la cantidad de los breaks existentes. Si
* se especifica id, el listado contendrá únicamente el break
* indicada por el valor. De otro modo, se listarán todas los breaks.
*
* @param int $id_break Si != NULL, indica el id del break a recoger
* @param string $estatus 'I' para breaks inactivos, 'A' para activos,
* cualquier otra cosa para todos los breaks.
*
* @return array Listado de breaks en el siguiente formato, o FALSE en
* caso de error:
* array(
* array(id,name,description),....,
* )
*/
function Ver_Agendadas($idcampana)
{
$sPeticionSQL = 'SELECT * FROM calls where scheduled = 1 and id_campaign='.$idcampana;
//die($sPeticionSQL);
$id_break="";
$recordset = $this->_DB->fetchTable($sPeticionSQL, FALSE, $paramSQL);
return $recordset;
}
}
?>
==============================
crear el fichero libs/cambiar_llamada_agendada.php
vi libs/crear_llamada_agendada.php
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
/
CREADO POR HGMNETWORK.COM 31-07-2018 para permitir hacer cambios en las llamadas agendadas en modulo call center estos cambios pueden ser por el cambio de la fecha de la llamada ( fecha inicial, final y horas ) y cambio en el agente que recibe la llamada. Este puede ser SIP/xxx o Agent/xxxx la variable cambio indica lo que se cambia, cambio=fecha o cambio=agente por defecto cambiamos siempre agente y fecha y hora
/
$module_name="campaign_monitoring";
require_once "/var/www/html/modules/$module_name/configs/default.conf.php";
include_once("/var/www/html/libs/paloSantoDB.class.php");
// se conecta a la base
$pDB = new paloDB($arrConfModule['cadena_dsn']);
if ($pDB->connStatus){ echo "ERR: failed to connect to database: ".$pDB->errMsg; };
//miramos si agente tiene indicado algo o nulo osea cualquier agente recibira la llamada agendada
if ($GET['agente'] !="cualquiera") {$sql_agente=" agent='".$GET['agente']."'";} else {$sql_agente=" agent = NULL";};
switch ($GET['cambio']){
default:
$sPeticionSQL = "UPDATE calls set $sql_agente, date_init='".$GET['date_init']."',date_end='".$GET['date_end']."', time_init='".$GET['time_init']."',time_end='".$GET['time_end']."' where scheduled = 1 and id ='".$GET['id']."'";
};
// $recordset = $pDB->fetchTable($sPeticionSQL, FALSE);
// $recordset = $pDB->genExec($sPeticionSQL);
$result = $pDB-> getFirstRowQuery($sPeticionSQL, true);
echo "Actualizada Llamada ".$GET['id']." al agente ".$GET['agente']."";
?>
===================================
luego en index.php
buscar
case 'checkStatus':
$sContenido = manejarMonitoreo_checkStatus($module_name, $smarty, $local_templates_dir);
break;
case 'loadPreviousLogEntries':
$sContenido = manejarMonitoreo_loadPreviousLogEntries($module_name, $smarty, $local_templates_dir);
break;
y debajo poner
case 'ver_agendadas':
//Genera listado con las llamadas programadas
$sContenido = ver_agendadas($module_name,$smarty, $local_templates_dir,$pDB,getParameter('idcampana'));
break;
justo debajo esta
default:
// Página principal con plantilla
$sContenido = manejarMonitoreo_HTML($module_name, $smarty, $local_templates_dir);
}
return $sContenido;
}
y añadir la funcion
function ver_agendadas($module_name,$smarty, $local_templates_dir,$pDB, $idcampana )
{
$oBreaks = new PaloSantoBreaks($pD
;
$oAgentes = new Agentes($pD
;
$listaAgentes = $oAgentes->getAgentsTodos();
// print_r($listaAgentes);
$datos=$oBreaks->Ver_Agendadas($idcampana);
$micon='[<a href="index.php?menu=campaign_monitoring#/details/outgoing/'. $_GET['idcampana'].'">Monitoreo de Campaña</a>]<br />';
$micon.='<b>Llamadas agendadas</b><br><br>
<table width="100%">
<tr style="color: #000000;">
<td><b>N.TELEFONO</b></td>
<td><b>AGENTE</b></td>
<td><b>FECHA PROGRAMADA</b></td>
<td><b>HORA PROGRAMADA</b></td>
<td><b>ESTADO</b></td>
<td><img src="images/telephone_edit.png" width="16" height="16" /></td>
</tr>';
$cont = count($datos);
for ($i=0;$i<=$cont -1;$i++)
{
$nag="";
$issel="";
$miag="";
//echo "datos $i es:".print_r($datos[$i])."<hr>";
foreach (array_keys($listaAgentes) as $k)
{
//echo "k es $k<br>2";
//echo "<hr> Agentes es ".print_r($listaAgentes[$k]);
//$agnum=explode('/',$datos[$i][19]);
$tipo=$listaAgentes[$k]['type'];
$numero=$listaAgentes[$k]['number'];
$seleccion=$tipo."/".$numero;//ponemos esto para ver si seleccionamos el usuario asi queda SIP/xxx o Agents/xxx
//$datos[$i][19] nos da el texto que tiene cada extension, si el numero que da en agendada es igual al que se tiene en este se selecciona
if ($seleccion==$datos[$i][19]){
$issel="selected";
} else{
$issel="";
};
$miag.="<option value='$tipo/$numero' $issel>$tipo/$numero</option>";
}
// hgmnetwork.com 05-08-2018. creamos esto para que permita tambien asignar a cualquier agente
$miag.="<option value='cualquiera'";
if ($datos[$i][19] == null){ $miag.=" selected";};
$miag.=">Cualquier Agente</option>";
// hgmnetwork.com 03-08-2018 $datos nos da la info mostramos cual es cada cosa para saberla
//.$datos[$i][19].
//$datos[$i][0]=> nos da el id del registro en calls
//$datos[$i][1]=> nos da el id_campaing del registro en calls
//$datos[$i][2]=> nos da el numero
//$datos[$i][3]=> nos da el resultado de la llamada null si no se ha llamado, Success,ShortCall,NoAnswer,Failure,etc
//$datos[$i][15]=> fecha inicial de llamada el 16 fecha final
//$datos[$i][17]=> hora inicial de llamada 18 hora final de llamada
if ($datos[$i][3]==NULL){$resultado_llamada="Sin llamar";} else {$resultado_llamada=$datos[$i][3];};
$micon.='<tr style="height: 40px;color:#000000">
<td><strong>'.$datos[$i][2].'</strong></td>
<td><select class="cambioagendadas" id="agente-'.$datos[$i][0].'">'.$miag.'</select></td>
<td><input type="date" name="date_init" id="date_init-'.$datos[$i][0].'" value="'.$datos[$i][15].'">/<input type="date" name="date_end" id="date_end-'.$datos[$i][0].'" value="'.$datos[$i][16].'"></td>
<td><input type="time" name="time_init" id="time_init-'.$datos[$i][0].'" value="'.$datos[$i][17].'">/<input type="time" name="time_end" id="time_end-'.$datos[$i][0].'" value="'.$datos[$i][18].'"></td>
<td>'.$resultado_llamada .'</td>
<td><img src="images/time_edit.png" name="actualizar" id="'.$datos[$i][0].'" width="16" height="16" alt="Actualizar Fecha y hora" title="Actualizar Fecha y hora"/></td>
</tr>';
}
$micon.= '</table>
</div>';
return $micon;
}
===============================================
editar el fichero themes/default/informacion_campania.tpl
vi informacion_campania.tpl
buscar
<b>{$ETIQUETA_CAMPANIA}:</b>
{literal}
{{view Ember.Select
contentBinding="content"
optionValuePath="content.key_campaign"
optionLabelPath="content.desc_campaign"
valueBinding="key_campaign" }}
{/literal}
{literal}{{outlet}}{/literal}
</script>
y añadir justo debajo
<!--
creado por hgmnetwork.com 09-07-2018 para pruebas
funcion para obtener el id de campaña en funcion del hash ejemplo #/details/outgoing/10 nos devuelve 10
-->
<script>
function obtener_idcampania (){
//alert("entra");
var URLactual = window.location.hash;
//alert(URLactual);
var idcampania = URLactual.replace("#/details/outgoing/", "");
//console.log(idcampania);
console.log("el id de campania es " + idcampania);
document.location.href="index.php?menu=campaign_monitoring&action=ver_agendadas&idcampana=" + idcampania;
}
</script>
[ <a href="javascript:obtener_idcampania();">ver llamadas Agendadas</a> ]
=======================================
editar el fichero themes/default/js/javascript.php
ir al final del fichero nos encontramos esto
function mostrar_mensaje_error(s)
{
$('#issabel-callcenter-error-message-text').text(s);
$('#issabel-callcenter-error-message').show('slow', 'linear', function() {
setTimeout(function() {
$('#issabel-callcenter-error-message').fadeOut();
}, 5000);
});
}
justo debajo ( al final del fichero añadimos esto)
//funcion para actualizar las llamadas agendadas hgmnetwork.com 30-07-2018
$(document).ready(function()
{
$("[name=actualizar]").click(function () {
//alert("Click en actualizar fecha y hora agendada themes/default/js/javascript");
//alert("Id Llamada " + this.id);
//alert("Id llamada " + $(".cambioagendadas").attr("id"));
//alert("Nuevo Agente: "+ $("#agente-"+this.id).val());
//alert("Fecha nueva inicial "+ $('#date_init-'+this.id).val());
//alert("Fecha nueva final " + $('#date_end-'+this.id).val());
//alert("Hora nueva inicial "+ $('#time_init-'+this.id).val());
//alert("Hora nueva final " + $('#time_end-'+this.id).val());
$.ajax({
url: "/modules/campaign_monitoring/libs/cambiar_llamada_agendada.php",
type: "get", //send it through get method
data: {
id: this.id,
agente: $("#agente-"+this.id).val(),
date_init: $('#date_init-'+this.id).val(),
date_end: $('#date_end-'+this.id).val(),
time_init: $('#time_init-'+this.id).val(),
time_end: $('#time_end-'+this.id).val(),
cambio: 'todo'
},
success: function(response) {
//Do Something
alert(response);
console.log(response);
},
error: function(xhr) {
//Do Something to handle error
console.log('error cambiar_llamada_agendada.php');
console.log(xhr);
alert("Se ha producido un error al actualizar la llamada agendada.")
}
});
});
});
y listo con eso queda completo o deberia. espero lo puedan probar y confirmarme si esta ok tambien de su lado
creo que ha quedado bastante bien y muy entendible y fácil y sobre todo útil.
@casoft mil gracias por tu ayuda, ha sido muy util y sin ti no se podria tener esta mejora, estaré encantado de si se te ocurre alguna otra podamos entre ambos realizarla.