Ejemplo n.º 1
0
        public ActionResult Index(string path)
        {
            string query      = this.Request?.Url?.Query.Or("");
            string sourcePath = "/dashboard/reports/source/" + path + query;

            var locator = new ReportLocator();

            path = locator.GetPathToDisk(this.Tenant, path);

            var parameters = ParameterHelper.GetParameters(this.Request?.QueryString);
            var parser     = new ReportParser(path, this.Tenant, parameters);
            var report     = parser.Get();

            var dbParams = new List <DataSourceParameter>();

            if (report.DataSources != null)
            {
                foreach (var dataSource in report.DataSources)
                {
                    foreach (var parameter in dataSource.Parameters)
                    {
                        if (dbParams.Any(x => x.Name.ToLower() == parameter.Name.Replace("@", "").ToLower()))
                        {
                            continue;
                        }

                        if (parameter.HasMetaValue)
                        {
                            continue;
                        }

                        parameter.Name = parameter.Name.Replace("@", "");
                        var fromQueryString = report.Parameters.FirstOrDefault(x => x.Name.ToLower().Equals(parameter.Name.ToLower()));

                        if (fromQueryString != null)
                        {
                            parameter.DefaultValue = DataSourceParameterHelper.CastValue(fromQueryString.Value, parameter.Type);
                        }

                        if (string.IsNullOrWhiteSpace(parameter.FieldLabel))
                        {
                            parameter.FieldLabel = parameter.Name;
                        }

                        dbParams.Add(parameter);
                    }
                }
            }

            var model = new ParameterMeta
            {
                ReportSourcePath = sourcePath,
                Parameters       = dbParams,
                ReportTitle      = report.Title
            };

            return(this.View("~/Areas/Frapid.Reports/Views/Index.cshtml", model));
        }
Ejemplo n.º 2
0
        public Generator(string tenant, string path, List <Parameter> parameters)
        {
            this.Parameters = parameters;

            var locator = new ReportLocator();

            this.Path = locator.GetPathToDisk(tenant, path);

            var parser = new ReportParser(this.Path, tenant, parameters);

            this.Report = parser.Get();

            foreach (var dataSource in this.Report.DataSources)
            {
                dataSource.Data = this.GetDataSource(this.Report, dataSource);
            }
        }