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));
        }
Beispiel #2
0
        public static ParameterMeta GetDefinition(string path, string query, string tenant, HttpRequestBase request)
        {
            string sourcePath = "/dashboard/reports/source/" + path + query;

            var locator = new ReportLocator();

            path = locator.GetPathToDisk(tenant, path);

            var parameters = ParameterHelper.GetParameters(request?.QueryString);
            var parser     = new ReportParser(path, 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(model);
        }
Beispiel #3
0
        private object GetDefaultValue(Report report, XmlNode node, string type)
        {
            string value = this.ReadAttributeValue(node, "DefaultValue");

            if (string.IsNullOrWhiteSpace(value))
            {
                return(null);
            }

            value = ExpressionHelper.ParseExpression(report.Tenant, value, report.DataSources, ParameterHelper.GetPraParameterInfo(report));
            return(DataSourceParameterHelper.CastValue(value, type));
        }
Beispiel #4
0
        private static object GetParameterValue(string name, string type, ParameterInfo info)
        {
            var paramter = info.Parameters.FirstOrDefault(x => x.Name.ToLower().Equals(name.Replace("@", "").ToLower()));

            if (paramter != null)
            {
                return(DataSourceParameterHelper.CastValue(paramter.Value, type));
            }

            foreach (var dataSourceParameter in info.DataSourceParameters)
            {
                if (dataSourceParameter.Name.ToLower().Equals(name.ToLower()))
                {
                    if (dataSourceParameter.DefaultValue != null)
                    {
                        return(dataSourceParameter.DefaultValue);
                    }
                }
            }

            return(null);
        }
Beispiel #5
0
        private object GetAttributeValue(XmlNode node, string name, string type = "string")
        {
            string value = this.ReadAttributeValue(node, name);

            return(DataSourceParameterHelper.CastValue(value, type));
        }