Пример #1
0
        public ActionResult RunStoredProcedure(string Name, string json, int count = 20, int page = 0)
        {
            List <SQLParameterInfo> parameters = this.ReportingDatabase.GetParameters(Name);

            DbMetaObject toRender = parameters.ToMetaObject();

            StoredProcedureDisplayModel model = new StoredProcedureDisplayModel
            {
                Name       = Name,
                Parameters = toRender,
                Optimized  = parameters.Any(p => p.PARAMETER_NAME == "count") && parameters.Any(p => p.PARAMETER_NAME == "page")
            };

            if (parameters.Any())
            {
                JObject jObject = JObject.Parse(json);

                foreach (JProperty jtok in jObject.Properties())
                {
                    model.Parameters[jtok.Name].Value = jtok.Value.ToString();
                }
            }

            model.Results = new PagedListContainer <IMetaObject>()
            {
                Count = count,
                Page  = page
            };

            if (model.Parameters.HasProperty("@page") && model.Parameters.HasProperty("@count"))
            {
                model.Parameters["@page"].Value  = $"{page}";
                model.Parameters["@count"].Value = $"{count}";
                model.Results.Items.AddRange(this.ReportingDatabase.ExecuteStoredProcedureToTable(Name, model.Parameters.ToSqlParameters()).ToMetaObject().Cast <IMetaObject>());
            }
            else
            {
                List <IMetaObject> results = this.ReportingDatabase.ExecuteStoredProcedureToTable(Name, model.Parameters.ToSqlParameters()).ToMetaObject().Cast <IMetaObject>().ToList();
                model.Results.TotalCount = results.Count;
                model.Results.Items.AddRange(results.Skip(page * count).Take(count));
            }

            return(this.View(model));
        }
Пример #2
0
        public ActionResult StoredProcedure(string Name)
        {
            List <SQLParameterInfo> parameters = this.ReportingDatabase.GetParameters(Name);

            DbMetaObject toRender = parameters.ToMetaObject();

            foreach (SQLParameterInfo thisParam in parameters)
            {
                ParameterInfo DBInstance = this.ReportingParameterRepository.GetByProcedureAndName(Name, thisParam.PARAMETER_NAME);
                System.Type   netType    = TypeConverter.ToNetType(thisParam.DATA_TYPE);

                if (DBInstance != null)
                {
                    if (DBInstance.Default != null)
                    {
                        toRender[thisParam.PARAMETER_NAME].Value = this.GetParamConstraint(DBInstance.Default, netType);
                    }

                    if (DBInstance.MinValue is null)
                    {
                        throw new NullReferenceException("DbInstance MinValue can not be null");
                    }

                    if (DBInstance.MaxValue is null)
                    {
                        throw new NullReferenceException("DbInstance MaxValue can not be null");
                    }

                    if (DBInstance.MinValue.Enabled || DBInstance.MaxValue.Enabled)
                    {
                        string?Min = null;
                        string?Max = null;

                        if (DBInstance.MinValue.Enabled)
                        {
                            Min = this.GetParamConstraint(DBInstance.MinValue, netType);
                        }

                        if (DBInstance.MaxValue.Enabled)
                        {
                            Max = this.GetParamConstraint(DBInstance.MaxValue, netType);
                        }

                        RangeAttribute range = new RangeAttribute(netType, Min, Max);

                        MetaConstructor c = new MetaConstructor();

                        DbMetaObject instance = new DbMetaObject()
                        {
                            Properties = new List <DbMetaObject>()
                            {
                                new DbMetaObject()
                                {
                                    Value    = range.Minimum.ToString(),
                                    Property = new DbMetaProperty()
                                }
                            }
                        };

                        MetaAttributeHolder toAdd = new MetaAttributeHolder(range, false);

                        instance.Type = toAdd.Type;

                        List <IMetaAttribute> existingAttributes = toRender[thisParam.PARAMETER_NAME].Property.Attributes.ToList();

                        existingAttributes.Add(toAdd);

                        toRender[thisParam.PARAMETER_NAME].Property.Attributes = existingAttributes;
                    }
                }
            }

            StoredProcedureDisplayModel model = new StoredProcedureDisplayModel
            {
                Name       = Name,
                Parameters = toRender,
                Optimized  = parameters.Any(p => p.PARAMETER_NAME == "count") && parameters.Any(p => p.PARAMETER_NAME == "page")
            };

            return(this.View(model));
        }