Anda di halaman 1dari 14

package versionbeta import correo.SendMail import java.sql.Connection import java.sql.DriverManager import java.sql.SQLException import java.util.HashMap import java.util.

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") } } }

Anda mungkin juga menyukai