//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);
        }
        protected void ExportaPDF(ETipoPagina pagina, CompanyInfo empresa)
        {
            ISchemaInfo schema = AppContext.ActiveSchema;

            try
            {
                schema = empresa as ISchemaInfo;
                if (schema == null)
                {
                    schema = AppContext.ActiveSchema;
                }
            }
            catch
            {
            }
            ExamenReportMng reportMng = new ExamenReportMng(schema);
            string          ruta      = string.Empty;

            switch (pagina)
            {
            case ETipoPagina.Portada:

                PortadaExamenRpt portada = reportMng.GetPortadaReport(Entity,
                                                                      empresa);
                Dialogo.FileName = "portada.pdf";
                Dialogo.ShowDialog();
                ruta = Dialogo.FileName;
                portada.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, ruta);

                break;

            case ETipoPagina.Preguntas:

                ExamenTestRpt examen = reportMng.GetDetailTestReport(Entity,
                                                                     empresa,
                                                                     _preguntas);

                Dialogo.FileName = "examen.pdf";
                Dialogo.ShowDialog();
                ruta = Dialogo.FileName;
                examen.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, ruta);

                break;
            }
        }
        protected void ExportaCR(ETipoPagina pagina, CompanyInfo empresa)
        {
            ISchemaInfo schema = AppContext.ActiveSchema;

            try
            {
                schema = empresa as ISchemaInfo;
                if (schema == null)
                {
                    schema = AppContext.ActiveSchema;
                }
            }
            catch
            {
            }
            ExamenReportMng reportMng = new ExamenReportMng(schema);

            switch (pagina)
            {
            case ETipoPagina.Portada:

                PortadaExamenRpt portada = reportMng.GetPortadaReport(Entity,
                                                                      empresa);
                ReportViewer.SetReport(portada);
                ReportViewer.ShowDialog();

                break;

            case ETipoPagina.Preguntas:

                ExamenTestRpt examen = reportMng.GetDetailTestReport(Entity,
                                                                     empresa, _preguntas);

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

                if (Directory.Exists(".\\Temp"))
                {
                    Directory.Delete(".\\Temp", true);
                }

                break;

            case ETipoPagina.Respuestas:

                PlantillaRespuestasExamenRpt plantilla = reportMng.GetPlantillaRespuestasReport(Entity,
                                                                                                empresa);

                ReportViewer.SetReport(plantilla);
                ReportViewer.ShowDialog();

                break;

            case ETipoPagina.PlantillaCorrectora:

                PlantillaCorrectoraExamenRpt respuestas = reportMng.GetPlantillaCorrectoraReport(Entity,
                                                                                                 empresa);

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

                break;
            }
        }
        protected void ExportaPDF(ETipoPagina pagina, CompanyInfo empresa)
        {
            ISchemaInfo schema = AppContext.ActiveSchema;

            try
            {
                schema = empresa as ISchemaInfo;
                if (schema == null)
                {
                    schema = AppContext.ActiveSchema;
                }
            }
            catch
            {
            }
            ExamenReportMng reportMng = new ExamenReportMng(schema);
            string          ruta      = string.Empty;

            switch (pagina)
            {
            case ETipoPagina.Portada:

                PortadaExamenRpt portada = reportMng.GetPortadaReport(Entity, empresa);
                Dialogo.FileName = "portada.pdf";
                Dialogo.ShowDialog();
                ruta = Dialogo.FileName;
                portada.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, ruta);

                break;

            case ETipoPagina.Preguntas:

                ExamenTestRpt examen = reportMng.GetDetailTestReport(Entity, empresa, _preguntas);

                Dialogo.FileName = "examen.pdf";
                Dialogo.ShowDialog();
                ruta = Dialogo.FileName;
                examen.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, ruta);

                break;

            case ETipoPagina.Respuestas:

                PlantillaRespuestasExamenRpt plantilla = reportMng.GetPlantillaRespuestasReport(Entity, empresa);

                Dialogo.FileName = "plantilla.pdf";
                Dialogo.ShowDialog();
                ruta = Dialogo.FileName;
                plantilla.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, ruta);

                break;

            case ETipoPagina.PlantillaCorrectora:

                PlantillaCorrectoraExamenRpt respuestas = reportMng.GetPlantillaCorrectoraReport(Entity,
                                                                                                 empresa);

                Dialogo.FileName = "respuestas.pdf";
                Dialogo.ShowDialog();
                ruta = Dialogo.FileName;
                respuestas.SetParameterValue("Empresa", empresa.Name);
                if (empresa.Oid == 2)
                {
                    ((CrystalDecisions.CrystalReports.Engine.TextObject)(respuestas.Section5.ReportObjects["Text1"])).Color = System.Drawing.Color.FromArgb(13, 176, 46);
                }
                respuestas.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, ruta);

                break;
            }
        }