Map import net.sf.jasperreports.engine.JasperFillManager import net.sf.jasperreports.engine.JasperPrint import net.sf.jasperreports.engine.JasperReport import net.sf.jasperreports.view.JasperViewer import net.sf.jasperreports.engine.JasperExportManager import net.sf.jasperreports.engine.JasperCompileManager import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.JRXmlDataSource; class DocumentoController { static allowedMethods = [save: "POST", update: "POST", delete: "POST"] def index = { redirect(action: "list", params: params) } def list = { params.sort = 'fechaSolicitud' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) [documentoInstanceList: Documento.list(params), documentoInstanceTotal: Documento.count()] } def listCalifica = { params.sort = 'fechaSolucion' params.order = 'asc' params.max = Math.min(params.max ? params.int('max') : 10, 100) def personaActual = Usuario.get(session.idUsuario) [documentoInstanceList: Documento.findAllByEstadoDocumentoAndUsuario('Entregada', personaActual), documentoInstanceTotal: Documento.countByEstadoDocumentoAndUsuario('Entregada', personaActual)] } def listPE = { params.sort = 'fechaSolucion' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) [documentoInstanceList: Documento.findAllByEstadoDocumento('Por entregar', params), documentoInstanceTotal: Documento.countByEstadoDocumento('Por entregar')]
} def listPETecnico = { params.sort = 'fechaSolicitud' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) def responsableInstance = Usuario.get(session.idUsuario) [documentoInstanceList: Documento.findAllByEstadoDocumentoAndResponsable('Por entregar', responsableInstance), documentoInstanceTotal: Documento.countByEstadoDocumentoAndResponsable('Por entregar', responsableInstance)] } def listCR = { params.sort = 'fechaSolicitud' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) def personaActual = Usuario.get(session.idUsuario) [documentoInstanceList: Documento.findAllByUsuarioAndEstadoDocumento(personaActual, 'Por entregar'), documentoInstanceTotal: Documento.countByUsuarioAndEstadoDocumento(personaActual, 'Por entregar')] } def listE = { params.sort = 'id' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) def responsableInstance = Usuario.get(session.idUsuario) [documentoInstanceList: Documento.findAllByEstadoDocumentoAndResponsable('Entregada', responsableInstance), documentoInstanceTotal: Documento.countByEstadoDocumentoAndResponsable('Entregada', responsableInstance)] } def listEAdministrador = { params.sort = 'fechaSolucion' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) [documentoInstanceList: Documento.findAllByEstadoDocumento('Entregada'), documentoInstanceTotal: Documento.countByEstadoDocumento('Entregada')] } def listTecnico = { params.sort = 'fechaSolicitud' params.order = 'asc' params.max = Math.min(params.max ? params.int('max') : 10, 100) def responsableInstance = Usuario.get(session.idUsuario) [documentoInstanceList: Documento.findAllByResponsable(responsableInstance), documentoInstanceTotal: Documento.countByResponsable(responsableInstance)] }
def docTecnico = { params.sort = 'fechaSolicitud' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) def responsableInstance = Usuario.get(session.idUsuario) [documentoInstanceList: Documento.findAllByResponsableAndEstadoDocumento(responsableInstance, 'Por entregar'), documentoInstanceTotal: Documento.countByResponsableAndEstadoDocumento(responsableInstance, 'Por entregar')] } def docAdministrador = { params.sort = 'fechaSolicitud' params.order = 'desc' params.max = Math.min(params.max ? params.int('max') : 10, 100) [documentoInstanceList: Documento.list(params), documentoInstanceTotal: Documento.count()] } def create = { def documentoInstance = new Documento() documentoInstance.fechaSolicitud = new Date() documentoInstance.properties = params //permite obtener el id del usuario y capturarlo def personaC = Usuario.get(session.idUsuario) if (personaC) { documentoInstance.personaCrea = personaC /** enlista a todos los usuarios existentes q se encuentren /en estado activo*/ [usuarioInstanceList: Usuario.findAllByEstado('Activo'), usuarioInstanceTotal: Usuario.countByEstado('Activo')] if (documentoInstance.save(flush: true)) { flash.message = "${message(code: 'La Solicitud fue creada con xito', args: [message(code: 'documento.label', default: 'Documento'), documentoInstance.id])}" redirect(action: "listCR", id: documentoInstance.id) } else { render(view: "create", model: [documentoInstance: documentoInstance]) } } else { render(view: "create", model: [documentoInstance: documentoInstance]) } return [documentoInstance: documentoInstance] } def save = {
def documentoInstance = new Documento(params) documentoInstance.fechaSolicitud = new Date() def administrador = Usuario.get(1) def correoS = administrador.email def cDominio = Correo.get(1) def dominioS = cDominio.correoDominio def correoServ = Correo.get(1) def correoSServ = correoServ.correoServidor def mensajeA = Correo.get(1) def mensajeS = mensajeA.mensaje def nomUsuario = Correo.get(1) def nombreUsuario = nomUsuario.nombreUsuario def passwA = Correo.get(1) def passwordS = passwA.password def pServidor = Correo.get(1) def puertServidor = String.valueOf(pServidor.puerto) def solicitud = Correo.get(1) def tituloS = solicitud.titulo /**envio de correos recibe parametros de una tabla *dentro de la base de datos estos campos son: *dominio del servidor, correo del servidor, mensaje del correo, *el nombre de usuario, password, puerto del servidor por default 25, *email del la persona a la q debe llegar, y el titulo del *mensaje*/ def correo = new SendMail() correo.enviaCorreoContactoSinAt(dominioS, correoSServ , mensajeS, nombreUsuario, passwordS, puertServidor, correoS , tituloS, "<b>Una nueva solicitud de soporte fue elaborada srvase consultarla", false) //permite obtener el id del usuario y capturarlo def personaC = Usuario.get(session.idUsuario) if (personaC) { documentoInstance.personaCrea = personaC if (documentoInstance.save(flush: true)) { documentoInstance.usuario = personaC flash.message = "${message(code: 'La Solicitud fue creada con xito', args:
[message(code: 'documento.label', default: 'Documento'), documentoInstance.id])}" redirect(action: "listCR", id: documentoInstance.id) } else { render(view: "create", model: [documentoInstance: documentoInstance]) } } else { render(view: "create", model: [documentoInstance: documentoInstance]) } } def saveAnadido = { def documentoInstance = new Documento(params) documentoInstance.fechaSolicitud = new Date() /**permite difinir los campos donde se almacenara *la informacion extraida de la base de datos de la *tabla correo*/ def administrador = Usuario.get(1) def correoS = administrador.email def cDominio = Correo.get(2) def dominioS = cDominio.correoDominio def correoServ = Correo.get(2) def correoSServ = correoServ.correoServidor def nomUsuario = Correo.get(2) def nombreUsuario = nomUsuario.nombreUsuario def mensajeA = Correo.get(2) def mensajeS = mensajeA.mensaje def passwA = Correo.get(2) def passwordS = passwA.password /**se realiza un castin donde el puerto se lo convierte *de un int a un string para que sea devuelto ese valor*/ def pServidor = Correo.get(2) def puertServidor = String.valueOf(pServidor.puerto) def solicitud = Correo.get(2) def tituloS = solicitud.titulo /**envia correos al administrador indicandole que un nuevo *problema fue insertado en el sistema el administrador debera *analizarlo para ver si es necesario ingresarlo a la base de datos*/ def correo = new SendMail() correo.enviaCorreoContactoSinAt(dominioS,
correoSServ , mensajeS, nombreUsuario, passwordS, puertServidor, correoS , tituloS, "<b>Un nuevo problema fue aadido srvase consultarlo para su aprobacin", false) def personaC = Usuario.get(session.idUsuario) if (personaC) { documentoInstance.personaCrea = personaC if (documentoInstance.save(flush: true)) { documentoInstance.usuario = personaC flash.message = "${message(code: 'Un nuevo problema ha sido ingresado', args: [message(code: 'documento.label', default: 'Documento'), documentoInstance.id])}" redirect(action: "listCR", id: documentoInstance.id) } else { render(view: "create", model: [documentoInstance: documentoInstance]) } } else { render(view: "create", model: [documentoInstance: documentoInstance]) } } def registraEntrega = { def documentoInstance = Documento.get(params.id) def personaEntrega = Usuario.get(session.idUsuario) if (documentoInstance && personaEntrega) { documentoInstance.properties = params documentoInstance.estadoDocumento = "Entregada" documentoInstance.personaEntrega = personaEntrega /**permite definir los campos donde se almacenara *la informacion extraida de la base de datos de la *tabla correo*/ def usuarioSolicitante = documentoInstance.personaCrea def correoS = usuarioSolicitante.email def cDominio = Correo.get(4) def dominioS = cDominio.correoDominio def correoServ = Correo.get(4) def correoSServ = correoServ.correoServidor def nomUsuario = Correo.get(4) def nombreUsuario = nomUsuario.nombreUsuario
def mensajeA = Correo.get(4) def mensajeS = mensajeA.mensaje def passwA = Correo.get(4) def passwordS = passwA.password //se realiza un castin donde el puerto se lo convierte //de un int a un string para que sea devuelto ese valor def pServidor = Correo.get(4) def puertServidor = String.valueOf(pServidor.puerto) def solicitud = Correo.get(4) def tituloS = solicitud.titulo /**envia correos al administrador indicandole que un nuevo *problema fue insertado en el sistema el administrador debera *analizarlo para ver si es necesario ingresarlo a la base de datos*/ def correo = new SendMail() correo.enviaCorreoContactoSinAt(dominioS, correoSServ, mensajeS, nombreUsuario, passwordS, puertServidor, correoS, tituloS, "<b>Su solicitud de soporte fue procesada srvase consultarla en nuestro sistema", false) if (!documentoInstance.hasErrors() && documentoInstance.save(flush: true)) { flash.message = "${message(code: 'El documento fue enviado satisfactoriamente', args: [message(code: 'documento.label', default: 'Documento'), documentoInstance.id])}" redirect(action: "show", id: documentoInstance.id)} else { flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "listE") } } } def reportes={ render(view: "reportes") } def reportesEquipo={ String DRIVER="com.mysql.jdbc.Driver"; String BDURL="jdbc:mysql://190.11.24.215:3306/soporte"; Connection conex=null; Class.forName(DRIVER); conex=DriverManager.getConnection(BDURL,"root","serv19jajaja"); /*llamando a ireport*/ String nombreJasper="ReporteEquipo"
def rutaReporte="reports/"+nombreJasper+".jrxml" def rutaRealArchivoReporte=servletContext.getRealPath(rutaReporte) try { Map parameters = new HashMap(); JasperReport report = JasperCompileManager.compileReport(rutaRealArchivoReporte); JasperPrint print = JasperFillManager.fillReport(report, null, conex); // Exporta el informe a PDF JasperExportManager.exportReportToPdfFile(print,rutaRealArchivoReporte + ".pdf"); //Para visualizar el pdf directamente desde java JasperViewer.viewReport(print, false); } catch (Exception e) { e.printStackTrace(); } render(view: "reportes") } def reportesFechas={ String DRIVER="com.mysql.jdbc.Driver"; String BDURL="jdbc:mysql://190.11.24.215:3306/soporte"; Connection conex=null; Class.forName(DRIVER); conex=DriverManager.getConnection(BDURL,"root","serv19jajaja"); /*llamando a ireport*/ String nombreJasper="ReportePorFechas" def rutaReporte="reports/"+nombreJasper+".jrxml" def rutaRealArchivoReporte=servletContext.getRealPath(rutaReporte) try { Map parameters = new HashMap(); JasperReport report = JasperCompileManager.compileReport(rutaRealArchivoReporte); JasperPrint print = JasperFillManager.fillReport(report, null, conex); // Exporta el informe a PDF JasperExportManager.exportReportToPdfFile(print,rutaRealArchivoReporte + ".pdf"); //Para visualizar el pdf directamente desde java JasperViewer.viewReport(print, false); } catch (Exception e) { e.printStackTrace(); }
render(view: "reportes") } def reportesUsuario={ String DRIVER="com.mysql.jdbc.Driver"; String BDURL="jdbc:mysql://190.11.24.215:3306/soporte"; Connection conex=null; Class.forName(DRIVER); conex=DriverManager.getConnection(BDURL,"root","serv19jajaja"); /*llamando a ireport*/ String nombreJasper="ReporteUsuario" def rutaReporte="reports/"+nombreJasper+".jrxml" def rutaRealArchivoReporte=servletContext.getRealPath(rutaReporte) try { Map parameters = new HashMap(); JasperReport report = JasperCompileManager.compileReport(rutaRealArchivoReporte); JasperPrint print = JasperFillManager.fillReport(report, null, conex); // Exporta el informe a PDF JasperExportManager.exportReportToPdfFile(print,rutaRealArchivoReporte + ".pdf"); //Para visualizar el pdf directamente desde java JasperViewer.viewReport(print, false); } catch (Exception e) { e.printStackTrace(); } render(view: "reportes") } def show = { def documentoInstance = Documento.get(params.id) if (!documentoInstance) { flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "list") } else { def usuarioInstance = Usuario.get(session.idUsuario) if (usuarioInstance) { if (usuarioInstance.administrador == true) { render(view: "showAdministrador", model:[documentoInstance: documentoInstance]) } else { if (usuarioInstance.tecnico) { render(view: "showEntr", model:[documentoInstance: documentoInstance])
} else { def calificacion = documentoInstance.calificacion calificacion = documentoInstance.properties render(view: "show", model:[documentoInstance: documentoInstance]) } } } } } /**muestra la lista con todos los documentos entregados es decir *en donde su estado es Por Entregar estos documentos se *los envian a las personas responsables = tecnicos*/ def showEntr = { def documentoInstance = Documento.findAllByEstadoDocumento('Por entregar') def tecnico = Usuario.get(session.idUsuario) if (!documentoInstance) { flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'documento.label', default: 'Documento'), params.id])} " redirect(action: "listE") } } def showAdministrador = { def documentoInstance = Documento.get(params.id) documentoInstance.properties = params /**permite difinir los campos donde se almacenara *la informacion extraida de la base de datos de la *tabla correo*/ def tecnico = documentoInstance.responsable def correoS = tecnico.email def cDominio = Correo.get(3) def dominioS = cDominio.correoDominio def correoServ = Correo.get(3) def correoSServ = correoServ.correoServidor def nomUsuario = Correo.get(3) def nombreUsuario = nomUsuario.nombreUsuario def mensajeA = Correo.get(3) def mensajeS = mensajeA.mensaje def passwA = Correo.get(3) def passwordS = passwA.password //se realiza un castin donde el puerto se lo convierte
//de un int a un string para que sea devuelto ese valor def pServidor = Correo.get(3) def puertServidor = String.valueOf(pServidor.puerto) def solicitud = Correo.get(3) def tituloS = solicitud.titulo /**envia correos al administrador indicandole que un nuevo *problema fue insertado en el sistema el administrador debera *analizarlo para ver si es necesario ingresarlo a la base de datos*/ def correo = new SendMail() correo.enviaCorreoContactoSinAt(dominioS, correoSServ , mensajeS, nombreUsuario, passwordS, puertServidor, correoS , tituloS, "<b>Una nueva solicitud de soporte le fue asignada ", false) if (!documentoInstance) { flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "list") } else { def usuarioInstance = Usuario.get(session.idUsuario) if (usuarioInstance) { if (usuarioInstance.usuario == "Administrador") { render(view: "showAdministrador", model:[documentoInstance: documentoInstance]) } else { if (documentoInstance.estadoDocumento == 'Por entregar') { render(view: "showEntrAdministrador", model:[documentoInstance: documentoInstance]) } else { render(view: "show", model:[documentoInstance: documentoInstance]) } } } } } def editAdministrador = { def documentoInstance = Documento.get(params.id) if (!documentoInstance) { flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "list") } else { return [documentoInstance: documentoInstance] } }
def editTecnico = { def documentoInstance = Documento.get(params.id) if (!documentoInstance) { flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "list") } else { return [documentoInstance: documentoInstance] } } def update = { /**cojo todos los valores de documento, donde el campo calificacion tiene valor nulo*/ def documentoInstance = Documento.get(params.id) // asigno los valores de calificacion documentoInstance.calificacion = params.calificacion if (documentoInstance) { if (params.version) { def version = params.version.toLong() if (documentoInstance.version > version) { documentoInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'documento.label', default: '')] as Object[], "") render(view: "edit", model: [documentoInstance: documentoInstance]) return } } documentoInstance.properties = params if (!documentoInstance.hasErrors() && documentoInstance.save(flush: true)) { flash.message = "${message(code: '', args: [message(code: 'documento.label', default: ''), documentoInstance.id])}" redirect(action: "listPETecnico", id: documentoInstance.id) } else { render(view: "edit", model: [documentoInstance: documentoInstance]) } } else { flash.message = "${message(code: '', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "listPETecnico") } }
/**permite obtener un update del documento finalizado pero con la opcion *de calificacion activa para el usuario*/ def updateUsuario = { /**cojo todos los valores de documento, donde el campo calificacion tiene valor nulo*/ def documentoInstance = Documento.get(params.id) // asigno los valores de calificacion documentoInstance.calificacion = params.calificacion if (documentoInstance) { if (params.version) { def version = params.version.toLong() if (documentoInstance.version > version) { documentoInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'documento.label', default: '')] as Object[], "") render(view: "edit", model: [documentoInstance: documentoInstance]) return } } documentoInstance.properties = params if (!documentoInstance.hasErrors() && documentoInstance.save(flush: true)) { flash.message = "${message(code: 'Gracias por su calificacin', args: [message(code: 'documento.label', default: ''), documentoInstance.id])}" redirect(action: "listCalifica", id: documentoInstance.id) } else { render(view: "edit", model: [documentoInstance: documentoInstance]) } } else { flash.message = "${message(code: 'Gracias por su calificacin', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "listCalifica") } } def delete = { def documentoInstance = Documento.get(params.id) if (documentoInstance) { try { documentoInstance.delete(flush: true) flash.message = "${message(code: 'El documento fue eliminado con xito', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "listPE") } catch (org. springframework.dao.DataIntegrityViolationException e) { flash.message = "${message(code: 'El documento no puede ser eliminado', args: [message(code: 'documento.label', default: 'Documento'), params.id])}"
redirect(action: "show", id: params.id) } } else { flash.message = "${message(code: 'El documento a eliminar no fue encontrado', args: [message(code: 'documento.label', default: 'Documento'), params.id])}" redirect(action: "list") } } }