<?php
namespace Webkul\UVDesk\CoreFrameworkBundle\Controller;
use Symfony\Component\Translation\TranslatorInterface;
use Webkul\UVDesk\CoreFrameworkBundle\Form;
use Webkul\UVDesk\CoreFrameworkBundle\Entity\User;
use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportTeam;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Mysqli;
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
class ReportTicketPost extends Controller
{
/**
* @var TranslatorInterface
*/
public function __construct()
{
}
public function listTeamsReportTickets(Request $request)
{
if (!$this->get('user.service')->isAccessAuthorized('ROLE_AGENT_MANAGE_SUB_GROUP')){
return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
}
return $this->render('@UVDeskCoreFramework/ReportTicketPost/reportTicketPost.html.twig');
}
public function createReportTickets(Request $request)
{
$from = date('Y-m-d 00:00:00', strtotime($request->request->get('from')));
$to = date('Y-m-d 23:59:59', strtotime($request->request->get('to')));
$customerList = "'" . implode ( "', '", $request->request->get('customerList') ) . "'";
$mysqli = $this->conectionTKT();
$consulta = " SELECT
CONCAT(ut.ticket_id,'-',utt.numeracion),
utst.description ,
uu.first_name as name_user,
utt.agent_id as id_user ,
utt.reference as referencia,
uun.first_name as agent_first_name,
utt.created_at as created_at ,
ut.source as source,
utp.code as priority,
uts.code as status_tkt,
utt.group_id as group_id,
utt.agent_id as id_user,
utt.agent_id as id_user,
ut.created_at as created_at ,
ut.created_by as origen_post,
TIMESTAMPDIFF(MINUTE, utt.created_at, ut.created_at) AS minutos_diferencia
FROM `uv_thread` ut
LEFT JOIN uv_ticket utt ON utt.id = ut.ticket_id
LEFT JOIN uv_user uu ON utt.customer_id = uu.id
LEFT JOIN uv_user uun ON utt.agent_id = uun.id
LEFT JOIN uv_ticket_priority utp ON utp.id = utt.priority_id
LEFT JOIN uv_ticket_subtype utst ON utst.id = utt.subtype_id
LEFT JOIN uv_ticket_status uts ON uts.id = utt.status_id
where utt.is_trashed = 0 AND DATE(utt.created_at) BETWEEN '".$from."' AND '".$to."' ";//ut.thread_type = 'reply' and
if($customerList != "''") $consulta .=" AND uu.email IN ($customerList)";
$consulta .="order by ut.ticket_id DESC,ut.created_at asc ";
// echo $consulta."<br>";
// die();limit 0,100
if ($resultado = $mysqli->query($consulta)) {
$resultsetData = '"TICKET ID"' . "\t" . '"SUB TIPO"' . "\t" .'"ORGANIZACION"' . "\t" .'"TIPO"' . "\t" . '"REFERENCIA"' . "\t" . '"AGENTE"' . "\t". '"FECHA Y HORA INICIO"' . "\t". '"CANAL"' . "\t". '"PRIORIDAD"' . "\t". '"ESTADO"' . "\t". '"GRUPO"' . "\t". '"EQUIPO"' . "\t". '"ETIQUETAS"' . "\t". '"FECHA Y HORA POST"' . "\t". '"ORIGEN POST"' . "\t". '"MINUTOS DIFERENCIA"' . "\t";
$resultsetData .= "\n";
// $resultsetData .= "<br>";
$counter = 0;
$actuales = 0;
$min_ateriores = 0;
$resultado_min = 0;
while ($rec = mysqli_fetch_row($resultado)) {
$row = '';
$sub_tipo = "N/A";
$agente = "N/A";
$actuales = $min_ateriores ;
foreach ($rec as $data) {
$counter++;
switch($counter){
case 2:
if($data != "")$sub_tipo = $data;
$data = '"' . mb_convert_encoding($sub_tipo,'ISO-8859-1','UTF-8'). '"' . "\t";
break;
case 6:
if($data != "")$agente = $data;
$data = '"' . mb_convert_encoding($agente,'ISO-8859-1','UTF-8'). '"' . "\t";
break;
case 4:
case 12:
if($data == "")$data=0;
$sql= "SELECT usg.name as name_grop_type
FROM `uv_user_instance` uui
LEFT JOIN uv_user_support_groups uusg ON uusg.userInstanceId = uui.id
LEFT JOIN uv_support_group usg ON usg.id = uusg.supportGroupId
INNER JOIN uv_user uu ON uu.id = uui.user_id
WHERE uui.user_id = $data";
$resultado2 = $mysqli->query($sql);
if ($fila = $resultado2->fetch_assoc()) {
$name_grop_type = $fila['name_grop_type'];
}
$data = '"' . $name_grop_type. '"' . "\t";
break;
case 11:
if($data == "")$data=0;
$sql= "SELECT usg.name as name_grop from uv_support_group usg WHERE usg.id = $data";
$resultado2 = $mysqli->query($sql);
if($fila = $resultado2->fetch_assoc()) {
$name_grop = $fila['name_grop'];
}
if($name_grop == "")$name_grop = "N/A";
$data = '"' . $name_grop. '"' . "\t";
break;
case 13:
$data = "\t";
break;
case 16:
$min_ateriores = $data;
if($min_ateriores>0){
$resultado_min = $min_ateriores - $actuales;
$data = $resultado_min ;
}elseif ($min_ateriores == 0){
$data = $min_ateriores;
}
// $data = $resultado_min ;
$counter = 0;
break;
default:
$data = '"' . mb_convert_encoding($data,'ISO-8859-1','UTF-8'). '"' . "\t";
break;
}
$row .= $data;
}
$resultsetData .= trim($row) . "\n";
// $resultsetData .= trim($row."\t actuales ->".$actuales. "\tmin_ateriores->".$min_ateriores. "\t resultado_min ->".$resultado_min) . "<br><br>";
// $resultsetData .= trim($row."\t") . "<br><br>";
}
// die($resultsetData);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=Detalle-Tickets_post_".date('Y-m-d H:i:s').".xls");
header("Pragma: no-cache");
header("Expires: 0");
echo ucwords($result) . "\n" . $resultsetData . "\n";
}
$mysqli->close();
die();
}
public function conectionTKT(){
$mysqli = new mysqli("database-plesk.cfcc6wi065dc.us-east-1.rds.amazonaws.com", "ticketera", "Qn0is837Zo102", "admin_tkt2");
/* comprobar la conexión */
if ($mysqli->connect_errno) {
printf("Falló la conexión: %s\n", $mysqli->connect_error);
exit();
}
return $mysqli;
}
}