public List <dynamic> getDynamicQuery(int id, SearchOptions o)
        {
            ReportDefinition     report = dbset.Single(a => a.ID == id);
            List <QueryMetadata> meta   = MacheteAdoContext.getMetadata(report.sqlquery, _readonlyConnectionString);
            Type       queryType        = ILVoodoo.buildQueryType(meta);
            MethodInfo method           = Type.GetType("Machete.Data.MacheteAdoContext")
                                          .GetMethod("SqlQuery", new[] { typeof(string), typeof(string), typeof(SqlParameter[]) });
            MethodInfo man = method.MakeGenericMethod(queryType);

            dynamic dynamicQuery = man.Invoke(null, new object[] {
                report.sqlquery,
                _readonlyConnectionString,
                new[] {
                    new SqlParameter {
                        ParameterName = "beginDate", Value = o.beginDate
                    },
                    new SqlParameter {
                        ParameterName = "endDate", Value = o.endDate
                    },
                    new SqlParameter {
                        ParameterName = "dwccardnum", Value = o.dwccardnum
                    }
                }
            });

            var dynamicList = new List <dynamic>();

            foreach (var row in dynamicQuery)
            {
                dynamicList.Add(row);
            }

            return(dynamicList);
        }
        public void Analyze_columns()
        {
            var list = frb.ToServ <IReportsV2Service>().GetList();

            foreach (var l in list)
            {
                l.columnsJson = MacheteAdoContext.getUIColumnsJson(l.sqlquery, connectionString);
            }
            frb.ToFactory().SaveChanges();
        }
        public void Analyze_columns()
        {
            var repo = frb.ToRepoReports();
            var list = repo.GetAllQ();

            foreach (var l in list)
            {
                l.columnsJson = MacheteAdoContext.getUIColumnsJson(l.sqlquery, connectionString);
            }
            frb.ToFactory().SaveChanges();
        }
        public void getDynamicQuery_test_all_metadata()
        {
            // arrange
            var reports = frb.ToFactory().ReportDefinitions.AsQueryable();

            foreach (var r in reports)
            {
                var result = MacheteAdoContext.getMetadata(r.sqlquery, connectionString);
                Assert.IsTrue(result.Count > 2);
            }
            // act
            // assert
        }
 public DataTable getDataTable(string query)
 {
     // https://stackoverflow.com/documentation/epplus/8223/filling-the-document-with-data
     return(MacheteAdoContext.Fill(query, _readonlyConnectionString));
 }
 public List <QueryMetadata> getColumns(string tableName)
 {
     return(MacheteAdoContext.getMetadata($"select top 0 * from {tableName}", _readonlyConnectionString));
 }
 public List <string> validate(string query)
 {
     return(MacheteAdoContext.ValidateQuery(query, _readonlyConnectionString).ToList());
 }