コード例 #1
0
        public GenerarReporteSalida GenerarReporte(GenerarReporteEntrada entrada)
        {
            var salida = new GenerarReporteSalida();

            var fabrica = new FabricaReportes(_gestorPersistencia);
            var reporte = fabrica.TraerReporte(entrada.Tipo);

            if (reporte == null)
            {
                return(SalidaBase.Fallo(salida, string.Format(Cadenas.reporte_tipo_no_encontrado, entrada.Tipo)));
            }

            var resultValidar = reporte.Validar(entrada.Parametros);

            if (!string.IsNullOrEmpty(resultValidar))
            {
                return(SalidaBase.Fallo(salida,
                                        string.Format("{0}\n{1}", Cadenas.reporte_error_parametros, resultValidar)));
            }

            var consulta = reporte.Consultar();

            salida.Consulta = consulta;

            return(SalidaBase.Exito(salida));
        }
コード例 #2
0
        public void GenerarReporte_TipoDesconocido_Falla()
        {
            var entrada = new GenerarReporteEntrada
            {
                Tipo = (TipoReporte)1000,
            };

            var salida = _gestorDominio.GenerarReporte(entrada);

            Assert.IsTrue(salida == SalidaBase.Resultados.Fallo);
            Assert.AreEqual(string.Format(Cadenas.reporte_tipo_no_encontrado, 1000), salida.Mensaje);
        }
コード例 #3
0
        public void GenerarReporte_InterpreteDetalleSinParametros_Falla()
        {
            var entrada = new GenerarReporteEntrada
            {
                Tipo = TipoReporte.InterpreteDetalle,
            };

            var salida = _gestorDominio.GenerarReporte(entrada);

            Assert.IsTrue(salida == SalidaBase.Resultados.Fallo);
            Assert.AreEqual(string.Format("{0}\n{1}", Cadenas.reporte_error_parametros, Cadenas.rpt_val_no_interprete),
                            salida.Mensaje);
        }
コード例 #4
0
        public void GenerarReporte_ListaAlbumesSinFechaInicio_Falla()
        {
            var entrada = new GenerarReporteEntrada
            {
                Tipo       = TipoReporte.ListaAlbumes,
                Parametros = new Dictionary <string, object>()
            };

            var salida = _gestorDominio.GenerarReporte(entrada);

            Assert.IsTrue(salida == SalidaBase.Resultados.Fallo);
            Assert.AreEqual(string.Format("{0}\n{1}", Cadenas.reporte_error_parametros, Cadenas.rpt_val_no_fch_inicio),
                            salida.Mensaje);
        }
コード例 #5
0
        public ActionResult Traer(FormCollection form)
        {
            var tipo    = form["tipo"];
            var destino = int.Parse(form["destino"]);

            TipoReporte tipoReporte;

            if (!Enum.TryParse(tipo, out tipoReporte))
            {
                return(RedirectToAction("Index"));
            }

            var llavesOmitir = new[] { "tipo" };
            var parametros   = form.Keys
                               .Cast <string>()
                               .Where(llave => !llavesOmitir.Contains(llave))
                               .ToDictionary <string, string, object>(llave => llave, llave => form[llave]);

            var entrada = new GenerarReporteEntrada
            {
                Tipo       = tipoReporte,
                Parametros = parametros,
            };
            var salida = _gestorDominio.GenerarReporte(entrada);

            if (salida != SalidaBase.Resultados.Exito)
            {
                TempData["mensaje"] = "error: " + salida.Mensaje;
                return(RedirectToAction("Index"));
            }

            var     vista  = salida.Consulta.Vista;
            dynamic objeto = salida.Consulta.Objeto;

            if (destino == 0)
            {
                return(View(vista, objeto));
            }

            ViewData["destino"] = destino;
            var    fch     = DateTime.Now.ToString("yyyyMMdd_HHmmss_fff");
            string archivo = tipoReporte + "_" + fch + ".pdf";

            return(new ViewAsPdf(vista, objeto)
            {
                FileName = archivo
            });
        }
コード例 #6
0
        public void GenerarReporte_ListaCancionesSinFechaFin_Falla()
        {
            var entrada = new GenerarReporteEntrada
            {
                Tipo       = TipoReporte.ListaCanciones,
                Parametros = new Dictionary <string, object>
                {
                    { "FchInicio", new DateTime(2015, 1, 1) }
                }
            };

            var salida = _gestorDominio.GenerarReporte(entrada);

            Assert.IsTrue(salida == SalidaBase.Resultados.Fallo);
            Assert.AreEqual(string.Format("{0}\n{1}", Cadenas.reporte_error_parametros, Cadenas.rpt_val_no_fch_fin),
                            salida.Mensaje);
        }
コード例 #7
0
        public void GenerarReporte_ListaAlbumesTodoNormal_Funciona()
        {
            var entrada = new GenerarReporteEntrada
            {
                Tipo       = TipoReporte.ListaAlbumes,
                Parametros = new Dictionary <string, object>
                {
                    { "FchInicio", new DateTime(2015, 1, 1) },
                    { "FchFin", new DateTime(2016, 1, 1) }
                }
            };

            var salida = _gestorDominio.GenerarReporte(entrada);

            Assert.IsTrue(salida == SalidaBase.Resultados.Exito);
            Assert.IsNotNull(salida.Consulta);
            var consultaListaAlbumes = salida.Consulta as ReporteConsulta;

            Assert.IsNotNull(consultaListaAlbumes);
            Assert.AreEqual("_ReporteListaAlbumes", consultaListaAlbumes.Vista);
            Assert.IsNotNull(consultaListaAlbumes.Objeto);
        }