<%-- Document : desp_muestra_tickets Created on : 23/11/2011, 04:43:14 PM Author : psoto --%> <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@page import = "conexion.*" import = "java.sql.*" import = "extras.formatFecha" import = "general.Config" import = "general.Permisos" import = "own.codec.*" import = "java.text.NumberFormat" import = "java.util.Date" import = "java.util.Calendar" import = "java.text.SimpleDateFormat" import = "java.util.GregorianCalendar" %> Desplegar Ticket's Abiertos del Sistema <% /****** Despliega la lista de cines del sistema filtrados por el texto de búsqueda de buscar_cines.jsp (no obligatorio)***********/ /********************************************creado por: L.I. Salvador Díaz Parra*******************************************************/ out.println(""); String nompag[] = request.getRequestURI().split("/"); Date hoy = new Date(); SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); %> <% ConexionEquipos c = null; Connection lcnt_con = null; ResultSet lrs_res = null; Statement lst_stm = null; String ls_query = new String(""); ResultSet lrs_res2 = null; Statement lst_stm2 = null; String ls_query2 = new String(""); String emergent_error = new String(""); boolean lb_connection = false; String debug = new String("si"); boolean elementos_encontrados = false; String patron_busqueda = new String(""); String patron_enviar = new String(""); String tipo_enviar = new String(""); String tipo_busqueda = new String(""); String lower_limit = new String("0"); String upper_limit = new String("50"); String total_tickets = new String("0"); String tipo_style = new String(""); String alert = new String(""); boolean permiso_administrdor = false; boolean permiso_eliminar = false; boolean permiso_soporte = false; boolean permiso_ventanilla = false; boolean permiso_contacto = false; int id_area = 0; int id_rel_perfiles_modulos = 0; // Conexión a la base de datos try { if (!Config.getParametro("debug").equals("si")) { debug = "no"; } c = new ConexionEquipos(); lcnt_con = c.getConnection(); lst_stm = lcnt_con.createStatement(); lst_stm2 = lcnt_con.createStatement(); lb_connection = true; } catch (Exception e) { emergent_error = "Error al conectarse a la base de datos "; if (debug.equals("si")) { emergent_error += e; } lb_connection = false; } //********* Validación fundamental para evitar ejecución de código sin privilegios suficientes **********// try { if (!Permisos.PermisoModulo(nompag[nompag.length - 1].toString(), Integer.parseInt(session.getAttribute("id_user").toString()))) { if (lb_connection) { lst_stm.close(); lcnt_con.close(); } emergent_error += " Privilegios insuficientes. "; lb_connection = false; } } catch (Exception e) { emergent_error += " Privilegios insuficientes. "; if (debug.equals("si")) { emergent_error += "Trace: " + e.toString(); } lb_connection = false; } //*******************************************************************************************************// if (lb_connection) { try { permiso_eliminar = Permisos.PermisoModulo("desp_desactivar_ticket.jsp", Integer.parseInt(session.getAttribute("id_user").toString())); permiso_administrdor = Permisos.PermisoModulo("arc_aux_administrador.jsp", Integer.parseInt(session.getAttribute("id_user").toString())); permiso_soporte = Permisos.PermisoModulo("arc_aux_cplade_soporte.jsp", Integer.parseInt(session.getAttribute("id_user").toString())); permiso_ventanilla = Permisos.PermisoModulo("arc_aux_ventanilla_siplan.jsp", Integer.parseInt(session.getAttribute("id_user").toString())); permiso_contacto = Permisos.PermisoModulo("arc_aux_contacto_area.jsp", Integer.parseInt(session.getAttribute("id_user").toString())); if (permiso_contacto) { ls_query = "SELECT id_area FROM usuarios WHERE id_usuarios= " + session.getAttribute("id_user"); lrs_res = lst_stm.executeQuery(ls_query); if (lrs_res.next()) { id_area = lrs_res.getInt("id_area"); } } if (permiso_soporte || permiso_ventanilla) { /* *********** Obtengo el perfil del usuario ***************** */ ls_query = "SELECT id_rel_perfiles_modulos FROM rel_usuarios_perfil WHERE id_usuarios=" + session.getAttribute("id_user"); lrs_res = lst_stm.executeQuery(ls_query); if (lrs_res.next()) { id_rel_perfiles_modulos = lrs_res.getInt("id_rel_perfiles_modulos"); } } // Intentando recuperar valor de patrón de búsqueda try { tipo_busqueda = " tk.status = TRUE AND cerrado=false "; if (request.getParameter("tipo_busqueda") != null) { if (request.getParameter("tipo_busqueda").equals("1")) { tipo_busqueda = " "; tipo_enviar += "tipo_busqueda=a&"; } } patron_busqueda = request.getParameter("patron_busqueda").replace('\'', '"'); if (patron_busqueda.equals("buscar...")) { patron_busqueda = ""; } patron_enviar = "&patron_busqueda=" + patron_busqueda; patron_enviar = patron_enviar.replace('á', 'a').replace('é', 'e').replace('í', 'i').replace('ó', 'o').replace('ú', 'u').replace('Á', 'A').replace('É', 'E').replace('Í', 'I').replace('Ó', 'O').replace('Ú', 'U'); if (!patron_busqueda.contains("%") || !patron_busqueda.contains("?")) { patron_busqueda = " WHERE " + tipo_busqueda + " AND (tk.descripcion LIKE '%" + patron_busqueda + "%' OR cg.nombre LIKE '%" + patron_busqueda + "%' " + "OR cg.apellido_paterno LIKE '%" + patron_busqueda + "%' OR cg.apellido_materno LIKE '%" + patron_busqueda + "%' " + "OR ca.nombre LIKE '%" + patron_busqueda + "%' )"; } else { patron_busqueda = " WHERE " + tipo_busqueda + " AND (tk.descripcion LIKE '%" + patron_busqueda + "%' OR cg.nombre LIKE '%" + patron_busqueda + "%' " + "OR cg.apellido_paterno LIKE '%" + patron_busqueda + "%' OR cg.apellido_materno LIKE '%" + patron_busqueda + "%' " + "OR ca.nombre LIKE '%" + patron_busqueda + "%' )"; } } catch (Exception e) { patron_enviar = ""; tipo_enviar = ""; patron_busqueda = " WHERE " + tipo_busqueda; } ls_query = "SELECT " + " COUNT( id_tickets) as total_tickets " + "FROM tickets tk " + "LEFT JOIN usuarios_cargos cg USING(id_usuarios_cargos) " + "LEFT JOIN cat_areas ca USING(id_area) " + "LEFT JOIN( " + " SELECT " + " MAX(fecha_creacion) as fecha_nota, " + " id_tickets " + " FROM rel_notas_tickets " + " GROUP BY id_tickets " + ") rnt USING(id_tickets) "; if (id_area > 0) { ls_query += " LEFT JOIN usuarios_cargos cg USING(id_usuarios_cargos) "; } ls_query += " " + patron_busqueda; if (permiso_contacto) { ls_query += " AND id_area= " + id_area; } if (id_rel_perfiles_modulos > 0) { ls_query += " AND id_cat_perfiles= " + id_rel_perfiles_modulos; } ls_query += " ORDER BY id_tickets;"; lrs_res = lst_stm.executeQuery(ls_query); if (lrs_res.next()) { total_tickets = lrs_res.getString("total_tickets"); } else { total_tickets = "0"; } // para la paginacion try { lower_limit = (request.getParameter("lower").toString() == null ? "0" : request.getParameter("lower").toString()); upper_limit = String.valueOf(Integer.valueOf(request.getParameter("lower").toString() == null ? "0" : request.getParameter("lower").toString()) + 50); upper_limit = "50"; } catch (Exception e) { lower_limit = "0"; upper_limit = "50"; } %>
Tickets Abiertos / Que necesitan de una respuesta
       
" onfocus="this.setAttribute('style', ''); if (this.value=='buscar...') this.value='';"/>     
<% //Intentando recuperar variable de sesión para mensajes pendientes try { String mensaje_pendiente = session.getAttribute("mensaje_pendiente").toString(); %>
<%=mensaje_pendiente%>
<% session.removeAttribute("mensaje_pendiente"); } catch (Exception e) { } %>
<%if (permiso_eliminar) {%> <%}%> <% ls_query = "SELECT " + " id_tickets, " + " clave_ticket, " + " IFNULL(fecha_nota,fecha_creacion) as fecha_respuesta, " + " fecha_creacion, " + " descripcion, " + " en_espera, " + " tk.status, " + " CONCAT(cg.nombre, CONCAT(' ',CONCAT(cg.apellido_paterno,CONCAT(' ',cg.apellido_materno)))) as nombre_usuario, " + " ca.nombre as nombre_area " + "FROM tickets tk " + "LEFT JOIN usuarios_cargos cg USING(id_usuarios_cargos) " + "LEFT JOIN cat_areas ca USING(id_area) " + "LEFT JOIN( " + " SELECT " + " MAX(fecha_creacion) as fecha_nota, " + " id_tickets " + " FROM rel_notas_tickets " + " GROUP BY id_tickets " + ") rnt USING(id_tickets) " + " " + patron_busqueda; if (id_area > 0) { ls_query += " AND id_area= " + id_area; } if (id_rel_perfiles_modulos > 0) { ls_query += " AND id_cat_perfiles= " + id_rel_perfiles_modulos; } ls_query += " ORDER BY clave_ticket ;"; //out.println(ls_query); lrs_res = lst_stm.executeQuery(ls_query); while (lrs_res.next()) { elementos_encontrados = true; /*** Obtengo el tiempo del respuesta ********************************/ ls_query2 = "SELECT " + " id_tickets, " + " t.fecha_creacion, " + " IFNULL(fecha_nota,t.fecha_creacion) fecha_nota, " + " TIMESTAMPDIFF(HOUR,rnt.fecha_nota,NOW()) " + "FROM tickets t " + "LEFT JOIN( " + " SELECT " + " MAX(fecha_creacion) as fecha_nota, " + " id_tickets " + " FROM rel_notas_tickets " + " GROUP BY id_tickets " + ") rnt USING(id_tickets) " + "WHERE id_tickets = " + lrs_res.getString("id_tickets") + " " + " AND TIMESTAMPDIFF(HOUR, IFNULL(fecha_nota,t.fecha_creacion) ,NOW()) >= 5 " + " AND TIMESTAMPDIFF(HOUR, IFNULL(fecha_nota,t.fecha_creacion) ,NOW()) < 24 "; lrs_res2 = lst_stm2.executeQuery(ls_query2); if (lrs_res2.next()) { //tipo_style = " color:yellow; "; alert = ""; } else { ls_query2 = "SELECT " + " id_tickets, " + " t.fecha_creacion, " + " IFNULL(fecha_nota,t.fecha_creacion) fecha_nota, " + " TIMESTAMPDIFF(DAY,rnt.fecha_nota,NOW()) " + "FROM tickets t " + "LEFT JOIN( " + " SELECT " + " MAX(fecha_creacion) as fecha_nota, " + " id_tickets " + " FROM rel_notas_tickets " + " GROUP BY id_tickets " + ") rnt USING(id_tickets) " + "WHERE id_tickets = " + lrs_res.getString("id_tickets") + " " + " AND TIMESTAMPDIFF(DAY, IFNULL(fecha_nota,t.fecha_creacion) ,NOW()) >= 1 " + " AND TIMESTAMPDIFF(DAY, IFNULL(fecha_nota,t.fecha_creacion) ,NOW()) < 2 "; lrs_res2 = lst_stm2.executeQuery(ls_query2); if (lrs_res2.next()) { //tipo_style = " color: #FF530D; "; alert = ""; } else { ls_query2 = "SELECT " + " id_tickets, " + " t.fecha_creacion, " + " IFNULL(fecha_nota,t.fecha_creacion) fecha_nota, " + " TIMESTAMPDIFF(DAY,rnt.fecha_nota,NOW()) " + "FROM tickets t " + "LEFT JOIN( " + " SELECT " + " MAX(fecha_creacion) as fecha_nota, " + " id_tickets " + " FROM rel_notas_tickets " + " GROUP BY id_tickets " + ") rnt USING(id_tickets) " + "WHERE id_tickets = " + lrs_res.getString("id_tickets") + " " + " AND TIMESTAMPDIFF(DAY,IFNULL(fecha_nota,t.fecha_creacion),NOW()) >= 2 " + " AND TIMESTAMPDIFF(DAY,IFNULL(fecha_nota,t.fecha_creacion),NOW()) < 20 "; lrs_res2 = lst_stm2.executeQuery(ls_query2); if (lrs_res2.next()) { //tipo_style = " color: red; "; alert = ""; } else { ls_query2 = "SELECT " + " id_tickets, " + " t.fecha_creacion, " + " IFNULL(fecha_nota,t.fecha_creacion) fecha_nota, " + " TIMESTAMPDIFF(DAY,rnt.fecha_nota,NOW()) " + "FROM tickets t " + "LEFT JOIN( " + " SELECT " + " MAX(fecha_creacion) as fecha_nota, " + " id_tickets " + " FROM rel_notas_tickets " + " GROUP BY id_tickets " + ") rnt USING(id_tickets) " + "WHERE id_tickets = " + lrs_res.getString("id_tickets") + " " + " AND TIMESTAMPDIFF(DAY,IFNULL(fecha_nota,t.fecha_creacion),NOW()) >= 20 " + " "; lrs_res2 = lst_stm2.executeQuery(ls_query2); if (lrs_res2.next()) { //tipo_style = ""; alert = ""; } } } } /*****************************************************************/ %> <%if (permiso_eliminar) { if (lrs_res.getBoolean("status")) { %> <% } else { %> <% } } %> <% tipo_style = ""; alert = ""; } %>
No. Ticket Descripción Usuario Área Tiempo sin Respuesta Eliminar
<%if (!permiso_contacto) {%> " class="link_tick" title="Ver Ticket '<%=lrs_res.getString("clave_ticket")%>'"> <%=lrs_res.getString("clave_ticket")%> <%} else {%> <%=lrs_res.getString("clave_ticket")%> <%}%> <%=alert%> <%=formatFecha.quitarHTML(lrs_res.getString("descripcion"))%> <%=lrs_res.getString("nombre_usuario")%> <%=lrs_res.getString("nombre_area")%> <%= lrs_res.getBoolean("en_espera")?"En Espera":formatFecha.desdeV4(lrs_res.getString("fecha_respuesta"))%> " />
" />
<% } catch (Exception e) { emergent_error += "Error: " + e.toString() + " Ultimo query: " + ls_query; %>
<%=emergent_error%>
<% } finally { lst_stm.close(); } } else { %>
<%=emergent_error%>
<% } if (!elementos_encontrados) { %>
<%=(patron_enviar == "" ? "No hay Tickets Abiertos " : "No se encontraron Tickets Abiertos que coincidan con los criterios de búsqueda. ")%>
<% } //Registrar en la bitácora try { String mensaje_log = new String(""); if (patron_enviar.equals("")) { mensaje_log = "Usuario -" + session.getAttribute("username").toString() + "- desplegó lista de Tickets Abiertos del sistema;"; } else { mensaje_log = "Usuario -" + session.getAttribute("username").toString() + "- realizó búsqueda de Tickets Abiertos con patrón -" + patron_enviar.substring(17) + "-;"; } Config.GuardarLog(Integer.parseInt(session.getAttribute("id_user").toString()), mensaje_log, 3); } catch (Exception e) { } %>