예제 #1
0
        public FileStreamResult GenerarPDF(int id)
        {
            SolicitudAdmin   admin   = _servicioSolicitud.ObtenerSolicitudAministrativa(id);
            SolicitudDocente docente = _servicioSolicitud.ObtenerSolicitudDocente(id);
            IEnumerable <SolicitudAlumno> alumnos = _servicioSolicitud.ObtenerSolicitudesAlumno(docente.Id);
            Usuario       solicitante             = _servicioUsuario.ObtenerUsuario(docente.IdEmpleado);
            Materia       materia        = _servicioUsuario.ObtenerMateria(docente.IdMateria);
            Carrera       carrera        = _servicioUsuario.ObtenerCarrera(docente.IdCarrera);
            TipoExamen    tipoExamen     = _servicioUsuario.ObtenerTipoExamen(docente.IdTipoExamen);
            SubtipoExamen subTipoExamen  = _servicioUsuario.ObtenerSubtipoExamen(admin.IdSubtipoExamen);
            int           grupoSolicitud = alumnos.FirstOrDefault().Alumno.Grupo;

            MemoryStream workStream = new MemoryStream();
            Document     document   = new Document(PageSize.Letter);

            document.SetMargins(50, 50, 50, 50);
            PdfWriter.GetInstance(document, workStream).CloseStream = false;

            document.Open();
            document.AddTitle("Solicitud CAEF");
            Font      TitleFont = new Font(Font.HELVETICA, 12, Font.BOLD, BaseColor.Black);
            Paragraph Title     = new Paragraph("UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA", TitleFont);

            Title.Alignment = Element.ALIGN_CENTER;
            document.Add(Chunk.Newline);
            document.Add(Title);
            document.Add(Chunk.Newline);

            Font      SubtitleFont = new Font(Font.HELVETICA, 12, Font.BOLD, BaseColor.Gray);
            Paragraph Subtitle     = new Paragraph("COORDINACIÓN DE SERVICIOS ESTUDIANTILES Y GESTIÓN ESCOLAR", SubtitleFont);
            Paragraph Subtitle2    = new Paragraph("ACTA DE EVALUACION FINAL", SubtitleFont);

            Subtitle.Alignment  = Element.ALIGN_CENTER;
            Subtitle2.Alignment = Element.ALIGN_CENTER;
            document.Add(Subtitle);
            document.Add(Subtitle2);
            document.Add(Chunk.Newline);

            Font      TextoIzquierdaFont = new Font(Font.TIMES_ROMAN, 10, Font.BOLD, BaseColor.Black);
            Paragraph subDir             = new Paragraph("SUBDIRECCIÓN", TextoIzquierdaFont);

            subDir.Alignment = Element.ALIGN_RIGHT;
            document.Add(subDir);

            DateTime fecha            = DateTime.Now;
            Font     TextoIzquierdaNo = new Font(Font.TIMES_ROMAN, 8, Font.NORMAL, BaseColor.Black);
            int      periodo          = 1;

            if (fecha.Month > 6)
            {
                periodo = 2;
            }
            Paragraph No = new Paragraph("No.10/" + (fecha.Year - 2000) + "-" + periodo, TextoIzquierdaNo);

            No.Alignment = Element.ALIGN_RIGHT;
            document.Add(No);

            Paragraph Asunto = new Paragraph("Asunto: Control de Actas", TextoIzquierdaNo);

            Asunto.Alignment = Element.ALIGN_RIGHT;
            document.Add(Asunto);

            var       mes   = DateTime.Now.ToString("MMMM", new CultureInfo("es-ES"));
            Paragraph Fecha = new Paragraph("Ensenada, B.C, a " + fecha.Day + " de " + mes + " del " + fecha.Year, TextoIzquierdaFont);

            Fecha.Alignment = Element.ALIGN_RIGHT;
            document.Add(Fecha);
            document.Add(Chunk.Newline);

            Font      examenFont      = new Font(Font.TIMES_ROMAN, 10, Font.UNDERLINE, BaseColor.Black);
            Chunk     examenUnderline = new Chunk(tipoExamen.Nombre + " (" + subTipoExamen.Nombre + ")", examenFont);
            Paragraph examenInfo      = new Paragraph("EXAMEN: " + examenUnderline);

            examenInfo.Alignment = Element.ALIGN_CENTER;
            document.Add(examenInfo);
            document.Add(Chunk.Newline);

            PdfPTable table = new PdfPTable(11);

            table.TotalWidth  = 500f;
            table.LockedWidth = true;
            Font TablaFont = new Font(Font.TIMES_ROMAN, 8, Font.NORMAL, BaseColor.Black);

            PdfPCell claveUnidadT = new PdfPCell(new Phrase("CLAVE DE UNIDAD", TablaFont));

            claveUnidadT.Colspan             = 1;
            claveUnidadT.HorizontalAlignment = 1;
            claveUnidadT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell unidadAcademicaT = new PdfPCell(new Phrase("UNIDAD ACADEMICA", TablaFont));

            unidadAcademicaT.Colspan             = 4;
            unidadAcademicaT.HorizontalAlignment = 1;
            unidadAcademicaT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell claveCarreraT = new PdfPCell(new Phrase("CLAVE CARRERA", TablaFont));

            claveCarreraT.Colspan             = 1;
            claveCarreraT.HorizontalAlignment = 1;
            claveCarreraT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell celdaCarreraT = new PdfPCell(new Phrase("CARRERA", TablaFont));

            celdaCarreraT.Colspan             = 3;
            celdaCarreraT.HorizontalAlignment = 1;
            celdaCarreraT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell planEstudiosT = new PdfPCell(new Phrase("PLAN DE ESTUDIOS", TablaFont));

            planEstudiosT.Colspan             = 2;
            planEstudiosT.HorizontalAlignment = 1;
            planEstudiosT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell claveUnidad = new PdfPCell(new Phrase(admin.ClaveUnidad));

            claveUnidad.Colspan             = 1;
            claveUnidad.HorizontalAlignment = 1;
            PdfPCell unidadAcademica = new PdfPCell(new Phrase(admin.UnidadAcademica));

            unidadAcademica.Colspan             = 4;
            unidadAcademica.HorizontalAlignment = 1;
            PdfPCell claveCarrera = new PdfPCell(new Phrase(carrera.Id + ""));

            claveCarrera.Colspan             = 1;
            claveCarrera.HorizontalAlignment = 1;
            PdfPCell celdaCarrera = new PdfPCell(new Phrase(carrera.Nombre));

            celdaCarrera.Colspan             = 3;
            celdaCarrera.HorizontalAlignment = 1;
            PdfPCell planEstudios = new PdfPCell(new Phrase(admin.PlanEstudios));

            planEstudios.Colspan             = 2;
            planEstudios.HorizontalAlignment = 1;

            PdfPCell claveMateriaT = new PdfPCell(new Phrase("CLAVE DE MATERIA", TablaFont));

            claveMateriaT.Colspan             = 1;
            claveMateriaT.HorizontalAlignment = 1;
            claveMateriaT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell MateriaT = new PdfPCell(new Phrase("MATERIA", TablaFont));

            MateriaT.Colspan             = 5;
            MateriaT.HorizontalAlignment = 1;
            MateriaT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell SemestreT = new PdfPCell(new Phrase("SEMESTRE", TablaFont));

            SemestreT.Colspan             = 1;
            SemestreT.HorizontalAlignment = 1;
            SemestreT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell GrupoT = new PdfPCell(new Phrase("GRUPO", TablaFont));

            GrupoT.Colspan             = 1;
            GrupoT.HorizontalAlignment = 1;
            GrupoT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell CicloT = new PdfPCell(new Phrase("CICLO ESCOLAR", TablaFont));

            CicloT.Colspan             = 1;
            CicloT.HorizontalAlignment = 1;
            CicloT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell PeriodoT = new PdfPCell(new Phrase("PERIODO", TablaFont));

            PeriodoT.Colspan             = 2;
            PeriodoT.HorizontalAlignment = 1;
            PeriodoT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell claveMateria = new PdfPCell(new Phrase(materia.Id + ""));

            claveMateria.Colspan             = 1;
            claveMateria.HorizontalAlignment = 1;
            PdfPCell Materia = new PdfPCell(new Phrase(materia.Nombre));

            Materia.Colspan             = 5;
            Materia.HorizontalAlignment = 1;
            PdfPCell Semestre = new PdfPCell(new Phrase(admin.EtapaSemestre));

            Semestre.Colspan             = 1;
            Semestre.HorizontalAlignment = 1;
            PdfPCell Grupo = new PdfPCell(new Phrase(grupoSolicitud + ""));

            Grupo.Colspan             = 1;
            Grupo.HorizontalAlignment = 1;
            PdfPCell Ciclo = new PdfPCell(new Phrase(admin.CicloEscolar));

            Ciclo.Colspan             = 1;
            Ciclo.HorizontalAlignment = 1;
            PdfPCell Periodo = new PdfPCell(new Phrase(docente.Periodo));

            Periodo.Colspan             = 2;
            Periodo.HorizontalAlignment = 1;

            table.AddCell(claveUnidadT);
            table.AddCell(unidadAcademicaT);
            table.AddCell(claveCarreraT);
            table.AddCell(celdaCarreraT);
            table.AddCell(planEstudiosT);
            table.AddCell(claveUnidad);
            table.AddCell(unidadAcademica);
            table.AddCell(claveCarrera);
            table.AddCell(celdaCarrera);
            table.AddCell(planEstudios);

            table.AddCell(claveMateriaT);
            table.AddCell(MateriaT);
            table.AddCell(SemestreT);
            table.AddCell(GrupoT);
            table.AddCell(CicloT);
            table.AddCell(PeriodoT);
            table.AddCell(claveMateria);
            table.AddCell(Materia);
            table.AddCell(Semestre);
            table.AddCell(Grupo);
            table.AddCell(Ciclo);
            table.AddCell(Periodo);
            document.Add(table);
            document.Add(Chunk.Newline);

            PdfPTable tablaAlumnos = new PdfPTable(11);

            tablaAlumnos.TotalWidth  = 500f;
            tablaAlumnos.LockedWidth = true;

            PdfPCell ContadorT = new PdfPCell(new Phrase("NO.", TablaFont));

            ContadorT.Colspan             = 1;
            ContadorT.HorizontalAlignment = 1;
            ContadorT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell NombreAlumnoT = new PdfPCell(new Phrase("NOMBRE DEL ALUMNO", TablaFont));

            NombreAlumnoT.Colspan             = 6;
            NombreAlumnoT.HorizontalAlignment = 1;
            NombreAlumnoT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell MatriculaT = new PdfPCell(new Phrase("MATRICULA", TablaFont));

            MatriculaT.Colspan             = 2;
            MatriculaT.HorizontalAlignment = 1;
            MatriculaT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell CalificacionT = new PdfPCell(new Phrase("CALIFICACION", TablaFont));

            CalificacionT.Colspan             = 2;
            CalificacionT.HorizontalAlignment = 1;
            CalificacionT.BackgroundColor     = new BaseColor(193, 193, 193);

            tablaAlumnos.AddCell(ContadorT);
            tablaAlumnos.AddCell(NombreAlumnoT);
            tablaAlumnos.AddCell(MatriculaT);
            tablaAlumnos.AddCell(CalificacionT);

            int count = 1;

            foreach (SolicitudAlumno solicitud in alumnos)
            {
                PdfPCell Contador = new PdfPCell(new Phrase(count++ + ""));
                Contador.Colspan             = 1;
                Contador.HorizontalAlignment = 1;
                PdfPCell NombreAlumno = new PdfPCell(new Phrase(solicitud.Alumno.Nombre + " " + solicitud.Alumno.ApellidoP + " " + solicitud.Alumno.ApellidoM));
                NombreAlumno.Colspan             = 6;
                NombreAlumno.HorizontalAlignment = 1;
                PdfPCell Matricula = new PdfPCell(new Phrase(solicitud.Alumno.Id + ""));
                Matricula.Colspan             = 2;
                Matricula.HorizontalAlignment = 1;
                PdfPCell Calificacion = new PdfPCell(new Phrase(solicitud.Alumno.Promedio + ""));
                Calificacion.Colspan             = 2;
                Calificacion.HorizontalAlignment = 1;

                tablaAlumnos.AddCell(Contador);
                tablaAlumnos.AddCell(NombreAlumno);
                tablaAlumnos.AddCell(Matricula);
                tablaAlumnos.AddCell(Calificacion);
            }

            document.Add(tablaAlumnos);
            document.Add(Chunk.Newline);

            PdfPTable tablaMotivo = new PdfPTable(1);

            tablaMotivo.TotalWidth  = 500f;
            tablaMotivo.LockedWidth = true;
            PdfPCell MotivoT = new PdfPCell(new Phrase("MOTIVO", TablaFont));

            MotivoT.Colspan             = 1;
            MotivoT.HorizontalAlignment = 1;
            MotivoT.BackgroundColor     = new BaseColor(193, 193, 193);
            PdfPCell Motivo = new PdfPCell(new Phrase(docente.Motivo));

            Motivo.Colspan             = 1;
            Motivo.HorizontalAlignment = 0;

            tablaMotivo.AddCell(MotivoT);
            tablaMotivo.AddCell(Motivo);
            document.Add(tablaMotivo);

            document.Close();
            byte[] byteInfo = workStream.ToArray();
            workStream.Write(byteInfo, 0, byteInfo.Length);
            workStream.Position = 0;

            return(new FileStreamResult(workStream, "application/pdf"));
        }