//Inserta un examen public Clases.Examen insertExamen(Clases.Examen examen, List <int> preguntas, int numPreguntas, int numRespuestas) { String cadena = "INSERT " + "INTO Examenes (idTema, numPreguntas, numRespuestas) " + "VALUES ('" + examen.getIdTema() + "', '" + numPreguntas + "', '" + numRespuestas + "')"; execNonQuery(cadena); examen.setIdExamen(this.findLastID()); this.updateRelacionExamenPreguntas(examen, preguntas); return(examen); }
public static void generarPDF(Clases.Examen examen) { DAO.PreguntaRespuesta_DAO preguntaRespuestaDAO = new DAO.PreguntaRespuesta_DAO(); DAO.Tema_DAO temaDAO = new DAO.Tema_DAO(); DAO.Asignatura_DAO asignaturaDAO = new DAO.Asignatura_DAO(); List <int> listaPreguntas = preguntaRespuestaDAO.getPreguntasExamen(examen.getIdExamen()); String nombreTema = temaDAO.findTemaById(examen.getIdTema()); String nombreAsignatura = asignaturaDAO.findAsignaturaByTema(examen.getIdTema()); int numRespuestas = examen.getNumRespuestas(); Document doc = new Document(PageSize.LETTER); PdfWriter writer = null; //Se pregunta por la ruta de guardado using (SaveFileDialog dialog = new SaveFileDialog()) { dialog.Filter = "Archivos PDF (*.pdf)|*.pdf"; dialog.FilterIndex = 2; dialog.RestoreDirectory = true; if (dialog.ShowDialog() == DialogResult.OK) { writer = PdfWriter.GetInstance(doc, new FileStream(dialog.FileName, FileMode.Create)); } } //Título del PDF doc.AddTitle("Examen tema: " + nombreTema); doc.Open(); //Fuente por defecto iTextSharp.text.Font _standardFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8, iTextSharp.text.Font.NORMAL, BaseColor.BLACK); //Cabecera del examen doc.Add(new Paragraph(nombreAsignatura)); doc.Add(new Paragraph("Examen tema: " + nombreTema)); doc.Add(Chunk.NEWLINE); doc.Add(new Paragraph("Nombre: ")); doc.Add(Chunk.NEWLINE); List <String> listaEnunciados = new List <String>(); //Se crea la tabla donde se pintarán las preguntas y las respuestas PdfPTable tblPrueba = new PdfPTable(2); //Tabla con dos columnas PdfPCell clPreguntas = new PdfPCell(); PdfPCell clRespuestas = new PdfPCell(); for (int k = 0; k < listaPreguntas.Count; k++) { //Se guardan los enunciados de las preguntas listaEnunciados.Add(preguntaRespuestaDAO.findPreguntaById(listaPreguntas[k])); } Random rng = new Random(); for (int k = 0; k < listaPreguntas.Count; k++) { //Se añaden los enunciados a la celda de las preguntas clPreguntas = new PdfPCell(new Phrase(listaEnunciados[k], _standardFont)); clPreguntas.BorderWidth = 0; tblPrueba.AddCell(clPreguntas); //Se guardan las respuestas de la pregunta en orden aleatorio List <int> listaRespuestas = preguntaRespuestaDAO.getRespuestasPregunta(listaPreguntas[k], numRespuestas); barajar(listaRespuestas, rng); //Se añaden las respuestas a la celda como una sola cadena String cadenaRespuestas = ""; for (int i = 0; i < listaRespuestas.Count; i++) { cadenaRespuestas += preguntaRespuestaDAO.findRespuestaById(listaRespuestas[i]) + "\n\n\n"; } clRespuestas = new PdfPCell(new Phrase(cadenaRespuestas, _standardFont)); clRespuestas.BorderWidth = 0; tblPrueba.AddCell(clRespuestas); } doc.Add(tblPrueba); doc.Close(); writer.Close(); }