public ResumenAgrupadoExamenRpt GetDetailResumenExamenReport(ExamenInfo item,
                                                                     List <RegistroResumen> registros,
                                                                     PromocionInfo promocion,
                                                                     CompanyInfo empresa)
        {
            if (item == null)
            {
                return(null);
            }
            ResumenAgrupadoExamenRpt doc = new ResumenAgrupadoExamenRpt();

            List <ExamenPrint> pList = new List <ExamenPrint>();

            if (promocion == null)
            {
                pList.Add(item.GetPrintObject(empresa, string.Empty));
            }
            else
            {
                pList.Add(item.GetPrintObject(empresa, promocion.Nombre, string.Empty));
            }

            doc.SetDataSource(pList);
            doc.Subreports["RegistroResumenListSubRpt"].SetDataSource(registros);

            return(doc);
        }
        public AsistenciaExamenRpt GetDetailAsistenciaExamenReport(ExamenInfo item,
                                                                   PromocionList promociones,
                                                                   List <Alumno_ExamenInfo> _alumnos,
                                                                   CompanyInfo empresa,
                                                                   string promocion)
        {
            if (item == null)
            {
                return(null);
            }
            AsistenciaExamenRpt doc   = new AsistenciaExamenRpt();
            AlumnoList          lista = AlumnoList.GetList(false);

            List <ExamenPrint>        pList   = new List <ExamenPrint>();
            List <Alumno_ExamenPrint> alumnos = new List <Alumno_ExamenPrint>();

            int  i    = 1;
            bool isIn = false;

            foreach (Alumno_ExamenInfo info in _alumnos)
            {
                isIn = false;

                foreach (ExamenPrint exam in pList)
                {
                    if (exam.OidPromocionAlumno == info.OidPromocion)
                    {
                        isIn = true;
                    }
                }

                if (!isIn)
                {
                    pList.Add(item.GetPrintObject(empresa, promocion, string.Empty));
                }

                alumnos.Add(info.GetPrintObject(lista.GetItem(info.OidAlumno), i++, false));
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (alumnos.Count <= 0)
            {
                return(null);
            }

            if (pList.Count == 0)
            {
                pList.Add(item.GetPrintObject(empresa, string.Empty));
            }
            doc.SetDataSource(pList);
            doc.Subreports["AsistenciaExamenAlumnosListSubRpt"].SetDataSource(alumnos);

            return(doc);
        }
        public EstadisticaExamenRpt GetEstadisticaReport(ExamenInfo item,
                                                         EstadisticaExamenList lista,
                                                         CompanyInfo empresa)
        {
            if (item == null)
            {
                return(null);
            }
            EstadisticaExamenRpt doc = new EstadisticaExamenRpt();

            List <ExamenPrint>           pList     = new List <ExamenPrint>();
            List <EstadisticaExamenInfo> preguntas = new List <EstadisticaExamenInfo>();

            foreach (EstadisticaExamenInfo info in lista)
            {
                preguntas.Add(info);
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (preguntas.Count <= 0)
            {
                return(null);
            }

            pList.Add(item.GetPrintObject(empresa, string.Empty));

            doc.SetDataSource(pList);

            doc.Subreports["EstadisticaExamenListSubRpt"].SetDataSource(preguntas);

            //FormatReport(doc);

            return(doc);
        }
        public ResumenExamenRpt GetDetailResumenExamenReport(ExamenInfo item,
                                                             PreguntaList preguntas,
                                                             PromocionInfo promocion,
                                                             CompanyInfo empresa)
        {
            if (item == null)
            {
                return(null);
            }
            ResumenExamenRpt doc = new ResumenExamenRpt();

            List <ExamenPrint>   pList      = new List <ExamenPrint>();
            List <PreguntaPrint> _preguntas = new List <PreguntaPrint>();

            if (promocion == null)
            {
                pList.Add(item.GetPrintObject(empresa, string.Empty));
            }
            else
            {
                pList.Add(item.GetPrintObject(empresa, promocion.Nombre, string.Empty));
            }

            int i = 1;

            foreach (PreguntaInfo info in preguntas)
            {
                _preguntas.Add(info.GetPrintObject(i++));
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (_preguntas.Count <= 0)
            {
                return(null);
            }

            doc.SetDataSource(pList);
            doc.Subreports["ListadoPreguntasExamenListSubRpt"].SetDataSource(_preguntas);

            return(doc);
        }
        //public ExamenTestRpt GetDetailTestReport(   ExamenInfo item,
        //                                            CompanyInfo empresa,
        //                                            Preguntas lista_preguntas)
        //{
        //    if (item == null) return null;
        //    ExamenTestRpt doc = new ExamenTestRpt();

        //    List<ExamenPrint> pList = new List<ExamenPrint>();
        //    List<PreguntaExamenInfo> preguntas = new List<PreguntaExamenInfo>();
        //    List<RespuestaExamenPrint> respuestas = new List<RespuestaExamenPrint>();

        //    foreach (PreguntaExamenInfo info in item.PreguntaExamenes)
        //    {
        //        bool imagen = true;
        //        preguntas.Add(info.GetPrintObject(lista_preguntas));
        //        foreach (RespuestaExamenInfo r_info in info.RespuestaExamenes)
        //        {
        //            respuestas.Add(r_info.GetPrintObject(info, lista_preguntas, item, imagen));
        //            imagen = false; //será verdadero sólo en la primera iteración, para que sólo cargue la imagen una vez
        //        }
        //    }

        //    //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
        //    if (preguntas.Count <= 0)
        //        return null;

        //    pList.Add(item.GetPrintObject(empresa, string.Empty));

        //    doc.SetDataSource(pList);

        //    doc.Subreports["RespuestaExamenListSubRpt"].SetDataSource(respuestas);
        //    doc.SetParameterValue("Empresa", empresa.Name);

        //    //FormatReport(doc, preguntas);

        //    return doc;
        //}

        public ExamenTestRpt GetDetailTestReport(ExamenInfo item,
                                                 CompanyInfo empresa,
                                                 PreguntaList lista_preguntas)
        {
            if (item == null)
            {
                return(null);
            }
            ExamenTestRpt doc = new ExamenTestRpt();

            List <ExamenPrint>          pList      = new List <ExamenPrint>();
            List <PreguntaExamenInfo>   preguntas  = new List <PreguntaExamenInfo>();
            List <RespuestaExamenPrint> respuestas = new List <RespuestaExamenPrint>();

            foreach (PreguntaExamenInfo info in item.PreguntaExamenes)
            {
                bool imagen = true;
                preguntas.Add(PreguntaExamenPrint.New(info, lista_preguntas));
                foreach (RespuestaExamenInfo r_info in info.RespuestaExamenes)
                {
                    respuestas.Add(RespuestaExamenPrint.New(r_info, info, lista_preguntas, item, imagen));
                    imagen = false; //será verdadero sólo en la primera iteración, para que sólo cargue la imagen una vez
                }
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (preguntas.Count <= 0)
            {
                return(null);
            }

            pList.Add(item.GetPrintObject(empresa, string.Empty));

            doc.SetDataSource(pList);
            if (empresa.Oid == 2)
            {
                ((CrystalDecisions.CrystalReports.Engine.FieldObject)(doc.Section5.ReportObjects["Empresa1"])).Color = System.Drawing.Color.FromArgb(13, 176, 46);
            }

            doc.Subreports["RespuestaExamenListSubRpt"].SetDataSource(respuestas);
            doc.SetParameterValue("Empresa", empresa.Name);

            //FormatReport(doc, preguntas);

            return(doc);
        }
        public PlantillaRespuestasExamenRpt GetPlantillaRespuestasReport(ExamenInfo item, CompanyInfo empresa)
        {
            if (item == null)
            {
                return(null);
            }

            PlantillaRespuestasExamenRpt doc = new PlantillaRespuestasExamenRpt();

            List <ExamenPrint> pList = new List <ExamenPrint>();

            pList.Add(item.GetPrintObject(empresa, string.Empty));

            doc.SetDataSource(pList);

            return(doc);
        }
        public PlantillaCorrectoraExamenRpt GetPlantillaCorrectoraReport(ExamenInfo item, CompanyInfo empresa)
        {
            if (item == null)
            {
                return(null);
            }

            PlantillaCorrectoraExamenRpt doc   = new PlantillaCorrectoraExamenRpt();
            List <ExamenPrint>           pList = new List <ExamenPrint>();

            FormatReport(doc, item.PreguntaExamenes);

            pList.Add(item.GetPrintObject(empresa, string.Empty));

            doc.SetDataSource(pList);

            return(doc);
        }
        public ExamenDesarrolloRpt GetDetailDesarrolloReport(ExamenInfo item, CompanyInfo empresa, PreguntaList lista_preguntas)
        {
            if (item == null)
            {
                return(null);
            }
            ExamenDesarrolloRpt doc = new ExamenDesarrolloRpt();

            List <ExamenPrint>         pList     = new List <ExamenPrint>();
            List <PreguntaExamenPrint> preguntas = new List <PreguntaExamenPrint>();

            foreach (PreguntaExamenInfo info in item.PreguntaExamenes)
            {
                preguntas.Add(info.GetPrintObject(lista_preguntas));
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (preguntas.Count <= 0)
            {
                return(null);
            }

            pList.Add(item.GetPrintObject(empresa, string.Empty));

            doc.SetDataSource(pList);
            doc.SetParameterValue("Empresa", empresa.Name);
            if (empresa.Oid == 2)
            {
                ((CrystalDecisions.CrystalReports.Engine.TextObject)(doc.Section5.ReportObjects["Text1"])).Color = System.Drawing.Color.FromArgb(13, 176, 46);
            }

            doc.Subreports["PreguntaExamenListSubRpt"].SetDataSource(preguntas);
            doc.SetParameterValue("Empresa", empresa.Name);

            //FormatReport(doc, empresa.Logo);

            return(doc);
        }
        public RegistroNotasExamenRpt GetDetailReport(ExamenInfo item,
                                                      List <Alumno_ExamenInfo> _alumnos,
                                                      PromocionInfo promocion,
                                                      CompanyInfo empresa)
        {
            if (item == null)
            {
                return(null);
            }
            RegistroNotasExamenRpt doc = new RegistroNotasExamenRpt();
            string     comentarios     = string.Empty;
            AlumnoList lista           = AlumnoList.GetOrdenAlfabeticoList(true, _alumnos);

            List <ExamenPrint>        pList   = new List <ExamenPrint>();
            List <Alumno_ExamenPrint> alumnos = new List <Alumno_ExamenPrint>();

            int i = 1;

            foreach (AlumnoInfo alumno in lista)
            {
                Alumno_ExamenInfo info = null;
                foreach (Alumno_ExamenInfo ae in _alumnos)
                {
                    if (ae.OidAlumno == alumno.Oid)
                    {
                        info = ae;
                        break;
                    }
                }

                if (info != null)
                {
                    Alumno_ExamenPrint obj = info.GetPrintObject(alumno, i++, true);

                    if (item.Desarrollo && info.Presentado)
                    {
                        obj.NotaTest = string.Empty;
                        foreach (Respuesta_Alumno_ExamenInfo resp in info.Respuestas)
                        {
                            if (obj.NotaTest.Length > 0)
                            {
                                obj.NotaTest += " - ";
                            }
                            obj.NotaTest += resp.Calificacion.ToString() + "%";
                        }
                    }

                    alumnos.Add(obj);
                    if (info.Observaciones != string.Empty)
                    {
                        comentarios += alumno.NExpediente + " - " + alumno.Nombre + " " + alumno.Apellidos + " - " + info.Observaciones + Environment.NewLine;
                    }
                }
            }

            //foreach (Alumno_ExamenInfo info in _alumnos)
            //{
            //    AlumnoInfo alumno = lista.GetItem(info.OidAlumno);
            //    Alumno_ExamenPrint obj = info.GetPrintObject(alumno, i++, true);

            //    if (item.Desarrollo && info.Presentado)
            //    {
            //        obj.NotaTest = string.Empty;
            //        foreach (Respuesta_Alumno_ExamenInfo resp in info.Respuestas)
            //        {
            //            if (obj.NotaTest.Length > 0)
            //                obj.NotaTest += " - ";
            //            obj.NotaTest += resp.Calificacion.ToString() + "%";
            //        }
            //    }

            //    alumnos.Add(obj);
            //    if (info.Observaciones != string.Empty)
            //        comentarios += alumno.NExpediente + " - " + alumno.Nombre + " " + alumno.Apellidos  + " - " + info.Observaciones + Environment.NewLine;
            //}

            pList.Add(item.GetPrintObject(empresa, promocion.Nombre, comentarios));

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (alumnos.Count <= 0)
            {
                return(null);
            }

            doc.SetDataSource(pList);
            doc.Subreports["NotasExamenAlumnosListSubRpt"].SetDataSource(alumnos);

            return(doc);
        }