Esempio n. 1
0
        internal static EmailTemplateEntity CreateDefaultTemplate(EmailModelEntity emailModel)
        {
            EmailModelInfo info = registeredModels.GetOrThrow(entityToType.Value.GetOrThrow(emailModel));

            if (info.DefaultTemplateConstructor == null)
            {
                throw new InvalidOperationException($"No EmailTemplate for {emailModel} found and DefaultTemplateConstructor = null");
            }

            EmailTemplateEntity template = info.DefaultTemplateConstructor.Invoke();

            if (template.MasterTemplate != null)
            {
                template.MasterTemplate = EmailMasterTemplateLogic.GetDefaultMasterTemplate();
            }

            if (template.Name == null)
            {
                template.Name = emailModel.FullClassName;
            }

            template.Model = emailModel;
            template.Query = QueryLogic.GetQueryEntity(info.QueryName);

            template.ParseData(QueryLogic.Queries.QueryDescription(info.QueryName));

            return(template);
        }
Esempio n. 2
0
        public UserQueryEntity FromQueryRequest(CreateRequest request)
        {
            var qr = request.queryRequest.ToQueryRequest();
            var qd = DynamicQueryManager.Current.QueryDescription(qr.QueryName);

            return(qr.ToUserQuery(qd, QueryLogic.GetQueryEntity(qd.QueryName), request.defaultPagination.ToPagination(), withoutFilters: false));
        }
Esempio n. 3
0
 public static UserQueryEntity ToUserQuery(QueryRequest request)
 {
     return(request.ToUserQuery(
                DynamicQueryManager.Current.QueryDescription(request.QueryName),
                QueryLogic.GetQueryEntity(request.QueryName),
                FindOptions.DefaultPagination,
                withoutFilters: false /*Implement Simple Filter Builder*/));
 }
Esempio n. 4
0
        public static ImportAction Load(XDocument document)
        {
            XElement element   = document.Element(_Query) !;
            var      ci        = CultureInfoLogic.CultureInfoToEntity.Value.GetOrThrow(element.Attribute(_Culture) !.Value);
            var      queryName = SelectInteractive(element.Attribute(_Key) !.Value, QueryLogic.QueryNames, "queries");

            if (queryName == null)
            {
                return(ImportAction.Skipped);
            }

            var query = QueryLogic.GetQueryEntity(queryName);

            var entity = Database.Query <QueryHelpEntity>().SingleOrDefaultEx(a => a.Culture.Is(ci) && a.Query.Is(query)) ??
                         new QueryHelpEntity
            {
                Culture = ci,
                Query   = query,
            };

            entity.Description = element.Element(_Description)?.Value;

            var cols = element.Element(_Columns);

            if (cols != null)
            {
                var queryColumns = QueryLogic.Queries.GetQuery(queryName).Core.Value.StaticColumns.Select(a => a.Name).ToDictionary(a => a);

                foreach (var item in cols.Elements(_Column))
                {
                    string?name = item.Attribute(_Name) !.Value;
                    name = SelectInteractive(name, queryColumns, "columns of {0}".FormatWith(queryName));

                    if (name == null)
                    {
                        continue;
                    }

                    var col = entity.Columns.SingleOrDefaultEx(c => c.ColumnName == name);
                    if (col != null)
                    {
                        col.Description = item.Value;
                    }
                    else
                    {
                        entity.Columns.Add(new QueryColumnHelpEmbedded
                        {
                            ColumnName  = name,
                            Description = item.Value
                        });
                    }
                }
            }

            return(Save(entity));
        }
 public static void ImportWordReportTemplateForOrder()
 {
     new WordTemplateEntity
     {
         Name     = "Order template",
         Query    = QueryLogic.GetQueryEntity(typeof(OrderEntity)),
         Culture  = CultureInfo.GetCultureInfo("en").ToCultureInfoEntity(),
         Template = new FileEntity("../../WordTemplates/Order.docx").ToLiteFat(),
         FileName = "Order.docx"
     }.Save();
 }
Esempio n. 6
0
            QueryEntity?IFromXmlContext.TryGetQuery(string queryKey)
            {
                var qn = QueryLogic.TryToQueryName(queryKey);

                if (qn == null)
                {
                    return(null);
                }

                return(QueryLogic.GetQueryEntity(qn));
            }
Esempio n. 7
0
        public static void Start(SchemaBuilder sb, DynamicQueryManager dqm)
        {
            if (sb.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                AuthLogic.AssertStarted(sb);
                QueryLogic.Start(sb, dqm);

                dqm.AllowQuery += new Func <object, bool, bool>(dqm_AllowQuery);

                cache = new AuthCache <RuleQueryEntity, QueryAllowedRule, QueryEntity, object, QueryAllowed>(sb,
                                                                                                             qn => QueryLogic.ToQueryName(qn.Key),
                                                                                                             QueryLogic.GetQueryEntity,
                                                                                                             merger: new QueryMerger(),
                                                                                                             invalidateWithTypes: true,
                                                                                                             coercer: QueryCoercer.Instance);

                AuthLogic.ExportToXml += exportAll => cache.ExportXml("Queries", "Query", QueryUtils.GetKey, b => b.ToString(),
                                                                      exportAll ? QueryLogic.QueryNames.Values.ToList(): null);
                AuthLogic.ImportFromXml += (x, roles, replacements) =>
                {
                    string replacementKey = "AuthRules:" + typeof(QueryEntity).Name;

                    replacements.AskForReplacements(
                        x.Element("Queries").Elements("Role").SelectMany(r => r.Elements("Query")).Select(p => p.Attribute("Resource").Value).ToHashSet(),
                        QueryLogic.QueryNames.Keys.ToHashSet(),
                        replacementKey);

                    return(cache.ImportXml(x, "Queries", "Query", roles, s =>
                    {
                        var qn = QueryLogic.TryToQueryName(replacements.Apply(replacementKey, s));

                        if (qn == null)
                        {
                            return null;
                        }

                        return QueryLogic.GetQueryEntity(qn);
                    }, str =>
                    {
                        if (Enum.TryParse <QueryAllowed>(str, out var result))
                        {
                            return result;
                        }

                        var bResult = bool.Parse(str); //For backwards compatibilityS
                        return bResult ? QueryAllowed.Allow : QueryAllowed.None;
                    }));
                };
            }
        }
Esempio n. 8
0
        public static UserQueryEntity ParseAndSave(this UserQueryEntity userQuery)
        {
            if (!userQuery.IsNew || userQuery.queryName == null)
            {
                throw new InvalidOperationException("userQuery should be new and have queryName");
            }

            userQuery.Query = QueryLogic.GetQueryEntity(userQuery.queryName);

            QueryDescription description = QueryLogic.Queries.QueryDescription(userQuery.queryName);

            userQuery.ParseData(description);

            return(userQuery.Execute(UserQueryOperation.Save));
        }
Esempio n. 9
0
        public static UserChartEntity ParseData(this UserChartEntity userChart)
        {
            if (!userChart.IsNew || userChart.queryName == null)
            {
                throw new InvalidOperationException("userChart should be new and have queryName");
            }

            userChart.Query = QueryLogic.GetQueryEntity(userChart.queryName);

            QueryDescription description = QueryLogic.Queries.QueryDescription(userChart.queryName);

            userChart.ParseData(description);

            return(userChart);
        }
Esempio n. 10
0
        public static EmailTemplateEntity ParseData(this EmailTemplateEntity emailTemplate)
        {
            if (!emailTemplate.IsNew || emailTemplate.queryName == null)
            {
                throw new InvalidOperationException("emailTemplate should be new and have queryName");
            }

            emailTemplate.Query = QueryLogic.GetQueryEntity(emailTemplate.queryName);

            QueryDescription description = QueryLogic.Queries.QueryDescription(emailTemplate.queryName);

            emailTemplate.ParseData(description);

            return(emailTemplate);
        }
Esempio n. 11
0
        static IDisposable?Current_QueryExecuted(DynamicQueryContainer.ExecuteType type, object queryName, BaseQueryRequest?request)
        {
            if (request == null || !LogQuery(request, type) || UserHolder.Current == null)
            {
                return(null);
            }

            var old = Connector.CurrentLogger;

            StringWriter sw = new StringWriter();

            Connector.CurrentLogger = old == null ? (TextWriter)sw : new DuplicateTextWriter(sw, old);

            var viewLog = new ViewLogEntity
            {
                Target     = QueryLogic.GetQueryEntity(queryName).ToLite(),
                User       = UserHolder.Current !.ToLite(),
                ViewAction = type.ToString(),
            };

            return(new Disposable(() =>
            {
                try
                {
                    var str = GetData(request !, sw);

                    using (ExecutionContext.SuppressFlow())
                        Task.Factory.StartNew(() =>
                        {
                            using (ExecutionMode.Global())
                                using (Transaction tr = Transaction.ForceNew())
                                {
                                    viewLog.EndDate = TimeZoneManager.Now;
                                    viewLog.Data = new BigStringEmbedded(str);
                                    using (ExecutionMode.Global())
                                        viewLog.Save();
                                    tr.Commit();
                                }
                        });
                }
                finally
                {
                    Connector.CurrentLogger = old;
                }
            }));
        }
Esempio n. 12
0
    }//ImportInstanceTranslations

    public static void ImportWordReportTemplateForOrder()
    {
        var bytes   = File.ReadAllBytes("../../../WordAssets.xml");
        var preview = UserAssetsImporter.Preview(bytes);

        using (UserHolder.UserSession(AuthLogic.SystemUser !))
            UserAssetsImporter.Import(bytes, preview);

        new WordTemplateEntity
        {
            Name     = "Order template",
            Query    = QueryLogic.GetQueryEntity(typeof(OrderEntity)),
            Culture  = CultureInfo.GetCultureInfo("en").ToCultureInfoEntity(),
            Template = new FileEntity("../../../WordTemplates/Order.docx").ToLiteFat(),
            FileName = "Order.docx"
        }.Save();
    }
Esempio n. 13
0
        public QueryHelp(object queryName, CultureInfo ci, QueryHelpEntity entity)
        {
            QueryName = queryName;
            Culture   = ci;
            Info      = HelpGenerator.GetQueryHelp(DynamicQueryManager.Current.GetQuery(queryName).Core.Value);
            Columns   = DynamicQueryManager.Current.GetQuery(queryName).Core.Value.StaticColumns.ToDictionary(
                cf => cf.Name,
                cf => new QueryColumnHelp(cf, cf.DisplayName(), HelpGenerator.GetQueryColumnHelp(cf)));

            if (entity != null)
            {
                HasEntity = true;

                UserDescription = entity.Description;

                foreach (var tranColumn in entity.Columns)
                {
                    Columns.GetOrThrow(tranColumn.ColumnName).UserDescription = tranColumn.Description;
                }
            }

            Entity = new Lazy <QueryHelpEntity>(() => HelpLogic.GlobalContext(() =>
            {
                if (entity == null)
                {
                    entity = new QueryHelpEntity
                    {
                        Culture = this.Culture.ToCultureInfoEntity(),
                        Query   = QueryLogic.GetQueryEntity(this.QueryName),
                    }
                }
                ;

                entity.Columns.AddRange(
                    DynamicQueryManager.Current.GetQuery(this.QueryName).Core.Value.StaticColumns.Select(a => a.Name)
                    .Except(entity.Columns.Select(a => a.ColumnName))
                    .Select(pr => new QueryColumnHelpEmbedded
                {
                    ColumnName  = pr,
                    Description = null,
                }));

                return(entity);
            }));
        }
Esempio n. 14
0
    public QueryHelpEntity GetEntity()
    {
        var cd = DBEntity?.Columns.ToDictionary(a => a.ColumnName, a => a.Description);

        var result = new QueryHelpEntity
        {
            Culture     = this.Culture.ToCultureInfoEntity(),
            Query       = QueryLogic.GetQueryEntity(this.QueryName),
            Description = DBEntity?.Description,
            Info        = Info,
            Columns     = this.Columns.Values.Where(a => a.Column.IsAllowed() == null)
                          .Select(c => new QueryColumnHelpEmbedded
            {
                ColumnName  = c.Column.Name,
                Description = cd?.TryGetCN(c.Column.Name) !,
                NiceName    = c.NiceName,
                Info        = c.Info,
            }).ToMList()
Esempio n. 15
0
        private static void CustomizeChartRequest()
        {
            var converters = PropertyConverter.GetPropertyConverters(typeof(ChartRequestModel));

            converters.Remove("queryName");

            converters.Add("queryKey", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    ((ChartRequestModel)ctx.Entity).QueryName = QueryLogic.ToQueryName((string)ctx.JsonReader.Value);
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (ChartRequestModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonWriter.WriteValue(QueryLogic.GetQueryEntity(cr.QueryName).Key);
                }
            });

            converters.Add("filters", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var list = (List <FilterTS>)ctx.JsonSerializer.Deserialize(ctx.JsonReader, typeof(List <FilterTS>));

                    var cr = (ChartRequestModel)ctx.Entity;

                    var qd = QueryLogic.Queries.QueryDescription(cr.QueryName);

                    cr.Filters = list.Select(l => l.ToFilter(qd, canAggregate: true)).ToList();
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (ChartRequestModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonSerializer.Serialize(ctx.JsonWriter, cr.Filters.Select(f => FilterTS.FromFilter(f)).ToList());
                }
            });
        }
Esempio n. 16
0
        private static void CustomizeFiltersModel()
        {
            var converters = PropertyConverter.GetPropertyConverters(typeof(QueryModel));

            converters.Remove("queryName");

            converters.Add("queryKey", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    ((QueryModel)ctx.Entity).QueryName = QueryLogic.ToQueryName((string)ctx.JsonReader.Value !);
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (QueryModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonWriter.WriteValue(QueryLogic.GetQueryEntity(cr.QueryName).Key);
                }
            });
Esempio n. 17
0
        internal static WordTemplateEntity CreateDefaultTemplate(SystemWordTemplateEntity systemWordReport)
        {
            SystemWordTemplateInfo info = systemWordReports.GetOrThrow(systemWordReport.ToType());

            if (info.DefaultTemplateConstructor == null)
            {
                return(null);
            }

            WordTemplateEntity template = info.DefaultTemplateConstructor();

            if (template.Name == null)
            {
                template.Name = systemWordReport.FullClassName;
            }

            template.SystemWordTemplate = systemWordReport;
            template.Query = QueryLogic.GetQueryEntity(info.QueryName);

            return(template);
        }
Esempio n. 18
0
        private static void CustomizeChartRequest()
        {
            var converters = SignumServer.WebEntityJsonConverterFactory.GetPropertyConverters(typeof(ChartRequestModel));

            converters.Remove("queryName");

            converters.Add("queryKey", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = (ref Utf8JsonReader reader, ReadJsonPropertyContext ctx) =>
                {
                    ((ChartRequestModel)ctx.Entity).QueryName = QueryLogic.ToQueryName(reader.GetString() !);
                },
                CustomWriteJsonProperty = (Utf8JsonWriter writer, WriteJsonPropertyContext ctx) =>
                {
                    var cr = (ChartRequestModel)ctx.Entity;

                    writer.WritePropertyName(ctx.LowerCaseName);
                    writer.WriteStringValue(QueryLogic.GetQueryEntity(cr.QueryName).Key);
                }
            });
Esempio n. 19
0
        internal static EmailTemplateEntity CreateDefaultTemplate(SystemEmailEntity systemEmail)
        {
            SystemEmailInfo info = systemEmails.GetOrThrow(systemEmailToType.Value.GetOrThrow(systemEmail));

            EmailTemplateEntity template = info.DefaultTemplateConstructor();

            if (template.MasterTemplate != null)
            {
                template.MasterTemplate = EmailMasterTemplateLogic.GetDefaultMasterTemplate();
            }

            if (template.Name == null)
            {
                template.Name = systemEmail.FullClassName;
            }

            template.SystemEmail = systemEmail;
            template.Query       = QueryLogic.GetQueryEntity(info.QueryName);

            template.ParseData(DynamicQueryManager.Current.QueryDescription(info.QueryName));

            return(template);
        }
Esempio n. 20
0
        public static List <SuggestedFindOptions> GetSuggestedFindOptions(Type type)
        {
            var schema  = Schema.Current;
            var queries = QueryLogic.Queries;

            var table = schema.Tables.TryGetC(type);

            if (table == null)
            {
                return(new List <SuggestedFindOptions>());
            }

            return((from t in Schema.Current.Tables.Values
                    from c in t.Columns.Values
                    where c.ReferenceTable == table
                    where queries.TryGetQuery(t.Type) != null
                    let parentColumn = GetParentColumnExpression(t.Fields, c)?.Let(s => "Entity." + s)
                                       where parentColumn != null
                                       select new SuggestedFindOptions(
                        queryKey: QueryLogic.GetQueryEntity(t.Type).Key,
                        parentToken: parentColumn
                        )).ToList());
        }
Esempio n. 21
0
        private static void CustomizeFiltersModel()
        {
            var converters = PropertyConverter.GetPropertyConverters(typeof(QueryModel));

            converters.Remove("queryName");

            converters.Add("queryKey", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    ((QueryModel)ctx.Entity).QueryName = QueryLogic.ToQueryName((string)ctx.JsonReader.Value);
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (QueryModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonWriter.WriteValue(QueryLogic.GetQueryEntity(cr.QueryName).Key);
                }
            });

            converters.Add("filters", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var list = (List <FilterTS>)ctx.JsonSerializer.Deserialize(ctx.JsonReader, typeof(List <FilterTS>));

                    var cr = (QueryModel)ctx.Entity;

                    var qd = QueryLogic.Queries.QueryDescription(cr.QueryName);

                    cr.Filters = list.Select(l => l.ToFilter(qd, canAggregate: true)).ToList();
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (QueryModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonSerializer.Serialize(ctx.JsonWriter, cr.Filters.Select(f => FilterTS.FromFilter(f)).ToList());
                }
            });

            converters.Add("orders", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var list = (List <OrderTS>)ctx.JsonSerializer.Deserialize(ctx.JsonReader, typeof(List <OrderTS>));

                    var cr = (QueryModel)ctx.Entity;

                    var qd = QueryLogic.Queries.QueryDescription(cr.QueryName);

                    cr.Orders = list.Select(l => l.ToOrder(qd, canAggregate: true)).ToList();
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (QueryModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonSerializer.Serialize(ctx.JsonWriter, cr.Orders.Select(f => new OrderTS
                    {
                        token     = f.Token.FullKey(),
                        orderType = f.OrderType
                    }));
                }
            });

            converters.Add("pagination", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var pagination = (PaginationTS)ctx.JsonSerializer.Deserialize(ctx.JsonReader, typeof(PaginationTS));
                    var cr         = (QueryModel)ctx.Entity;
                    cr.Pagination  = pagination.ToPagination();
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (QueryModel)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonSerializer.Serialize(ctx.JsonWriter, new PaginationTS(cr.Pagination));
                }
            });
        }
Esempio n. 22
0
        public QueryEntity GetQueryEntity(string queryName)
        {
            var qn = QueryLogic.ToQueryName(queryName);

            return(QueryLogic.GetQueryEntity(qn));
        }
Esempio n. 23
0
        private static void CustomizeChartRequest()
        {
            var converters = PropertyConverter.GetPropertyConverters(typeof(ChartRequest));

            converters.Remove("queryName");

            converters.Add("queryKey", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    ((ChartRequest)ctx.Entity).QueryName = QueryLogic.ToQueryName((string)ctx.JsonReader.Value);
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (ChartRequest)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonWriter.WriteValue(QueryLogic.GetQueryEntity(cr.QueryName).Key);
                }
            });

            converters.Add("filters", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var list = (List <FilterTS>)ctx.JsonSerializer.Deserialize(ctx.JsonReader, typeof(List <FilterTS>));

                    var cr = (ChartRequest)ctx.Entity;

                    var qd = DynamicQueryManager.Current.QueryDescription(cr.QueryName);

                    cr.Filters = list.Select(l => l.ToFilter(qd, canAggregate: true)).ToList();
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (ChartRequest)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonSerializer.Serialize(ctx.JsonWriter, cr.Filters.Select(f => new FilterTS
                    {
                        token     = f.Token.FullKey(),
                        operation = f.Operation,
                        value     = f.Value
                    }).ToList());
                }
            });

            converters.Add("orders", new PropertyConverter()
            {
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var list = (List <OrderTS>)ctx.JsonSerializer.Deserialize(ctx.JsonReader, typeof(List <OrderTS>));

                    var cr = (ChartRequest)ctx.Entity;

                    var qd = DynamicQueryManager.Current.QueryDescription(cr.QueryName);

                    cr.Orders = list.Select(l => l.ToOrder(qd, canAggregate: true)).ToList();
                },
                CustomWriteJsonProperty = ctx =>
                {
                    var cr = (ChartRequest)ctx.Entity;

                    ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                    ctx.JsonSerializer.Serialize(ctx.JsonWriter, cr.Orders.Select(f => new OrderTS
                    {
                        token     = f.Token.FullKey(),
                        orderType = f.OrderType
                    }));
                }
            });
        }
Esempio n. 24
0
            QueryEntity IFromXmlContext.GetQuery(string queryKey)
            {
                var qn = QueryLogic.ToQueryName(queryKey);

                return(QueryLogic.GetQueryEntity(qn));
            }
Esempio n. 25
0
    public static void ImportPredictor()
    {
        using (AuthLogic.UnsafeUserSession("System"))
        {
            var predictor = new PredictorEntity
            {
                Name        = "Product Estimation",
                Algorithm   = TensorFlowPredictorAlgorithm.NeuralNetworkGraph,
                ResultSaver = PredictorSimpleResultSaver.Full,
                MainQuery   = new PredictorMainQueryEmbedded
                {
                    Query        = QueryLogic.GetQueryEntity(typeof(OrderEntity)),
                    GroupResults = true,
                    Columns      =
                    {
                        new PredictorColumnEmbedded
                        {
                            Usage    = PredictorColumnUsage.Input,
                            Token    = new QueryTokenEmbedded("Entity.OrderDate.Year"),
                            Encoding = DefaultColumnEncodings.NormalizeZScore
                        },
                        new PredictorColumnEmbedded
                        {
                            Usage    = PredictorColumnUsage.Input,
                            Token    = new QueryTokenEmbedded("Entity.OrderDate.Month"),
                            Encoding = DefaultColumnEncodings.NormalizeZScore
                        },
                        new PredictorColumnEmbedded
                        {
                            Usage    = PredictorColumnUsage.Input,
                            Token    = new QueryTokenEmbedded("Entity.Details.Element.Product"),
                            Encoding = DefaultColumnEncodings.OneHot
                        },
                        new PredictorColumnEmbedded
                        {
                            Usage    = PredictorColumnUsage.Output,
                            Token    = new QueryTokenEmbedded("Entity.Details.Element.Quantity.Sum"),
                            Encoding = DefaultColumnEncodings.NormalizeZScore
                        },
                    }
                },
                Settings = new PredictorSettingsEmbedded
                {
                    TestPercentage = 0.05,
                },
                AlgorithmSettings = new NeuralNetworkSettingsEntity
                {
                    PredictionType    = PredictionType.Regression,
                    Optimizer         = TensorFlowOptimizer.GradientDescentOptimizer,
                    LossFunction      = NeuralNetworkEvalFunction.MeanSquaredError,
                    EvalErrorFunction = NeuralNetworkEvalFunction.MeanAbsoluteError,
                    LearningRate      = 0.0001,
                    MinibatchSize     = 100,
                    NumMinibatches    = 1000,
                }
            }.ParseData().Execute(PredictorOperation.Save);

            predictor.TrainSync();

            predictor.Execute(PredictorOperation.Publish, ProductPredictorPublication.MonthlySales);
        }
    }//ImportPredictor
Esempio n. 26
0
        public static void Start(IApplicationBuilder app)
        {
            UserAssetServer.Start(app);

            SignumControllerFactory.RegisterArea(MethodInfo.GetCurrentMethod());

            CustomizeChartRequest();

            SignumServer.WebEntityJsonConverterFactory.AfterDeserilization.Register((ChartRequestModel cr) =>
            {
                if (cr.ChartScript != null)
                {
                    cr.GetChartScript().SynchronizeColumns(cr, null);
                }

                if (cr.QueryName != null)
                {
                    var qd = QueryLogic.Queries.QueryDescription(cr.QueryName);

                    if (cr.Columns != null)
                    {
                        foreach (var c in cr.Columns)
                        {
                            c.ParseData(cr, qd, SubTokensOptions.CanElement | SubTokensOptions.CanAggregate);
                        }
                    }
                }
            });

            SignumServer.WebEntityJsonConverterFactory.AfterDeserilization.Register((UserChartEntity uc) =>
            {
                if (uc.ChartScript != null)
                {
                    uc.GetChartScript().SynchronizeColumns(uc, null);
                }

                if (uc.Query != null)
                {
                    var qd = QueryLogic.Queries.QueryDescription(uc.Query.ToQueryName());
                    uc.ParseData(qd);
                }
            });

            UserChartEntity.SetConverters(
                query => QueryLogic.ToQueryName(query.Key),
                queryName => QueryLogic.GetQueryEntity(queryName));

            EntityPackTS.AddExtension += ep =>
            {
                if (ep.entity.IsNew || !ChartPermission.ViewCharting.IsAuthorized() || TypeAuthLogic.GetAllowed(typeof(UserChartEntity)).MaxDB() == TypeAllowedBasic.None)
                {
                    return;
                }

                var userCharts = UserChartLogic.GetUserChartsEntity(ep.entity.GetType());
                if (userCharts.Any())
                {
                    ep.extension.Add("userCharts", userCharts);
                }
            };
        }
Esempio n. 27
0
        public static void Start(SchemaBuilder sb)
        {
            if (sb.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                AuthLogic.AssertStarted(sb);
                QueryLogic.Start(sb);

                QueryLogic.Queries.AllowQuery += new Func <object, bool, bool>(dqm_AllowQuery);

                sb.Include <RuleQueryEntity>()
                .WithUniqueIndex(rt => new { rt.Resource, rt.Role });

                cache = new AuthCache <RuleQueryEntity, QueryAllowedRule, QueryEntity, object, QueryAllowed>(sb,
                                                                                                             toKey: qn => QueryLogic.ToQueryName(qn.Key),
                                                                                                             toEntity: QueryLogic.GetQueryEntity,
                                                                                                             isEquals: (q1, q2) => q1 == q2,
                                                                                                             merger: new QueryMerger(),
                                                                                                             invalidateWithTypes: true,
                                                                                                             coercer: QueryCoercer.Instance);

                sb.Schema.EntityEvents <RoleEntity>().PreUnsafeDelete += query =>
                {
                    Database.Query <RuleQueryEntity>().Where(r => query.Contains(r.Role.Entity)).UnsafeDelete();
                    return(null);
                };

                AuthLogic.ExportToXml += exportAll => cache.ExportXml("Queries", "Query", QueryUtils.GetKey, b => b.ToString(),
                                                                      exportAll ? QueryLogic.QueryNames.Values.ToList(): null);
                AuthLogic.ImportFromXml += (x, roles, replacements) =>
                {
                    string replacementKey = "AuthRules:" + typeof(QueryEntity).Name;

                    replacements.AskForReplacements(
                        x.Element("Queries") !.Elements("Role").SelectMany(r => r.Elements("Query")).Select(p => p.Attribute("Resource") !.Value).ToHashSet(),
                        QueryLogic.QueryNames.Keys.ToHashSet(),
                        replacementKey);

                    return(cache.ImportXml(x, "Queries", "Query", roles, s =>
                    {
                        var qn = QueryLogic.TryToQueryName(replacements.Apply(replacementKey, s));

                        if (qn == null)
                        {
                            return null;
                        }

                        return QueryLogic.GetQueryEntity(qn);
                    }, str =>
                    {
                        if (Enum.TryParse <QueryAllowed>(str, out var result))
                        {
                            return result;
                        }

                        var bResult = bool.Parse(str); //For backwards compatibilityS
                        return bResult ? QueryAllowed.Allow : QueryAllowed.None;
                    }));
                };

                sb.Schema.Table <QueryEntity>().PreDeleteSqlSync += new Func <Entity, SqlPreCommand>(AuthCache_PreDeleteSqlSync);
            }
        }
Esempio n. 28
0
        public static void Start(HttpConfiguration config)
        {
            UserAssetServer.Start(config);

            SignumControllerFactory.RegisterArea(MethodInfo.GetCurrentMethod());

            CustomizeChartRequest();

            PropertyConverter.GetPropertyConverters(typeof(ChartScriptParameterEmbedded)).Add("enumValues", new PropertyConverter()
            {
                CustomWriteJsonProperty = ctx =>
                {
                    var csp = (ChartScriptParameterEmbedded)ctx.Entity;

                    if (csp.Type == ChartParameterType.Enum)
                    {
                        ctx.JsonWriter.WritePropertyName(ctx.LowerCaseName);
                        ctx.JsonSerializer.Serialize(ctx.JsonWriter, csp.GetEnumValues().Select(a => new { name = a.Name, typeFilter = a.TypeFilter }).ToList());
                    }
                },
                AvoidValidate          = true,
                CustomReadJsonProperty = ctx =>
                {
                    var list = ctx.JsonSerializer.Deserialize(ctx.JsonReader);
                    //Discard
                }
            });

            EntityJsonConverter.AfterDeserilization.Register((ChartRequest cr) =>
            {
                if (cr.ChartScript != null)
                {
                    cr.ChartScript.SynchronizeColumns(cr);
                }

                if (cr.QueryName != null)
                {
                    var qd = DynamicQueryManager.Current.QueryDescription(cr.QueryName);

                    if (cr.Columns != null)
                    {
                        foreach (var c in cr.Columns)
                        {
                            c.ParseData(cr, qd, SubTokensOptions.CanElement | (c.IsGroupKey == false ? SubTokensOptions.CanAggregate : 0));
                        }
                    }
                }
            });

            EntityJsonConverter.AfterDeserilization.Register((UserChartEntity uc) =>
            {
                if (uc.ChartScript != null)
                {
                    uc.ChartScript.SynchronizeColumns(uc);
                }

                if (uc.Query != null)
                {
                    var qd = DynamicQueryManager.Current.QueryDescription(uc.Query.ToQueryName());
                    uc.ParseData(qd);
                }
            });

            UserChartEntity.SetConverters(
                query => QueryLogic.ToQueryName(query.Key),
                queryName => QueryLogic.GetQueryEntity(queryName));

            EntityPackTS.AddExtension += ep =>
            {
                if (ep.entity.IsNew || !ChartPermission.ViewCharting.IsAuthorized())
                {
                    return;
                }

                var userCharts = UserChartLogic.GetUserChartsEntity(ep.entity.GetType());
                if (userCharts.Any())
                {
                    ep.Extension.Add("userCharts", userCharts);
                }
            };
        }
Esempio n. 29
0
        public static void Start()
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                QueryClient.Start();

                UserAssetsClient.Start();
                UserAssetsClient.RegisterExportAssertLink <UserChartEntity>();

                LinksClient.RegisterEntityLinks <UserChartEntity>((lite, ctx) => new[]
                {
                    new QuickLinkAction(ChartMessage.Preview, RouteHelper.New().Action <ChartController>(cc => cc.ViewUserChart(lite, null)))
                    {
                        IsVisible = ChartPermission.ViewCharting.IsAuthorized()
                    }
                });

                Func <SubTokensOptions, Mapping <QueryTokenEmbedded> > qtMapping = ops => ctx =>
                {
                    string tokenStr = UserAssetsHelper.GetTokenString(ctx);

                    string queryKey  = ctx.Parent.Parent.Parent.Inputs[TypeContextUtilities.Compose("Query", "Key")];
                    object queryName = QueryLogic.ToQueryName(queryKey);

                    var chart = ((UserChartEntity)ctx.Parent.Parent.Parent.UntypedValue);

                    QueryDescription qd = DynamicQueryManager.Current.QueryDescription(queryName);
                    return(new QueryTokenEmbedded(QueryUtils.Parse(tokenStr, qd, ops | (chart.GroupResults ? SubTokensOptions.CanAggregate : 0))));
                };

                Navigator.AddSettings(new List <EntitySettings>
                {
                    new EntitySettings <UserChartEntity> {
                        PartialViewName = _ => ChartClient.ViewPrefix.FormatWith("UserChart"), IsCreable = EntityWhen.Never
                    }
                });

                Navigator.EntitySettings <UserChartEntity>().MappingMain = Navigator.EntitySettings <UserChartEntity>().MappingLine =
                    new EntityMapping <UserChartEntity>(true)
                    .SetProperty(cb => cb.Columns, new ChartClient.MListCorrelatedOrDefaultMapping <ChartColumnEmbedded>(ChartClient.MappingChartColumn))
                    .SetProperty(cr => cr.Filters, new MListMapping <QueryFilterEmbedded>
                {
                    ElementMapping = new EntityMapping <QueryFilterEmbedded>(false)
                                     .CreateProperty(a => a.Operation)
                                     .CreateProperty(a => a.ValueString)
                                     .SetProperty(a => a.Token, qtMapping(SubTokensOptions.CanAnyAll | SubTokensOptions.CanElement))
                })
                    .SetProperty(cr => cr.Orders, new MListMapping <QueryOrderEmbedded>
                {
                    ElementMapping = new EntityMapping <QueryOrderEmbedded>(false)
                                     .CreateProperty(a => a.OrderType)
                                     .SetProperty(a => a.Token, qtMapping(SubTokensOptions.CanAnyAll | SubTokensOptions.CanElement))
                })
                    .SetProperty(cb => cb.Parameters, new MListDictionaryMapping <ChartParameterEmbedded, string>(p => p.Name)
                {
                    OnlyIfPossible = true
                });

                RouteTable.Routes.MapRoute(null, "UC/{webQueryName}/{lite}",
                                           new { controller = "Chart", action = "ViewUserChart" });

                UserChartEntity.SetConverters(query => QueryLogic.ToQueryName(query.Key), queryName =>
                                              QueryLogic.GetQueryEntity(queryName));

                OperationClient.AddSetting(new EntityOperationSettings <UserChartEntity>(UserChartOperation.Delete)
                {
                    Click = ctx => ChartClient.Module["deleteUserChart"](ctx.Options(), Finder.FindRoute(((UserChartEntity)ctx.Entity).Query.ToQueryName())),
                });

                LinksClient.RegisterEntityLinks <Entity>((entity, ctrl) =>
                {
                    if (!ChartPermission.ViewCharting.IsAuthorized())
                    {
                        return(null);
                    }

                    return(UserChartLogic.GetUserChartsEntity(entity.EntityType)
                           .Select(cp => new UserChartQuickLink(cp, entity)).ToArray());
                });
            }
        }
Esempio n. 30
0
        public override void Execute()
        {
            DefineSection("head", () => {
                WriteLiteral("\r\n");

                WriteLiteral("    ");


            #line 12 "..\..\Help\Views\ViewEntity.cshtml"
                Write(Html.ScriptCss("~/help/Content/help.css"));


            #line default
            #line hidden
                WriteLiteral("\r\n");
            });

            WriteLiteral("\r\n");


            #line 15 "..\..\Help\Views\ViewEntity.cshtml"

            EntityHelp eh = (EntityHelp)Model;
            ViewBag.Title = eh.Type.NiceName();


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");

            WriteLiteral("\r\n\r\n<div");

            WriteLiteral(" class=\"row\"");

            WriteLiteral(">\r\n    <div");

            WriteLiteral(" class=\"col-md-9\"");

            WriteLiteral(">\r\n");


            #line 52 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 52 "..\..\Help\Views\ViewEntity.cshtml"
            using (TypeContext <EntityHelpEntity> ec = new TypeContext <EntityHelpEntity>(eh.Entity.Value, null))
            {
                var name = Navigator.ResolveWebTypeName(eh.Type);
                ec.FormGroupStyle = FormGroupStyle.None;


                using (Html.BeginForm((HelpController hc) => hc.SaveEntity(), new { id = "form-save" }))
                {
            #line default
            #line hidden

            #line 60 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(Html.HiddenRuntimeInfo(ec));


            #line default
            #line hidden

            #line 60 "..\..\Help\Views\ViewEntity.cshtml"



            #line default
            #line hidden

            #line 61 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(Html.HiddenRuntimeInfo(ec, e => e.Culture));


            #line default
            #line hidden

            #line 61 "..\..\Help\Views\ViewEntity.cshtml"



            #line default
            #line hidden

            #line 62 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(Html.HiddenRuntimeInfo(ec, e => e.Type));


            #line default
            #line hidden

            #line 62 "..\..\Help\Views\ViewEntity.cshtml"

                    if (!Navigator.IsReadOnly(typeof(EntityHelpEntity)))
                    {
                        Html.RenderPartial(HelpClient.Buttons, new ViewDataDictionary
                        {
                            { "options", Database.Query <EntityHelpEntity>()
                              .Where(e => e.Type == ec.Value.Type && e.Culture != ec.Value.Culture)
                              .Select(e => new { e.Culture })
                              .ToList()
                              .Select(e => KVP.Create(e.Culture.ToCultureInfo(), this.Url.Action((HelpController a) => a.TraslateEntity(e.Culture.Name))))
                              .ToDictionary() }
                        });
                    }


            #line default
            #line hidden
                    WriteLiteral("            <div");

                    WriteLiteral(" class=\"edit-container\"");

                    WriteLiteral(">\r\n                <h1");

                    WriteAttribute("title", Tuple.Create(" title=\"", 2876), Tuple.Create("\"", 2902)

            #line 76 "..\..\Help\Views\ViewEntity.cshtml"
                                   , Tuple.Create(Tuple.Create("", 2884), Tuple.Create <System.Object, System.Int32>(eh.Type.Namespace

            #line default
            #line hidden
                                                                                                                     , 2884), false)
                                   );

                    WriteLiteral(">");


            #line 76 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(eh.Type.NiceName());


            #line default
            #line hidden
                    WriteLiteral("</h1>\r\n                <code");

                    WriteLiteral(" class=\'shortcut\'");

                    WriteLiteral(">[e:");


            #line 77 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(name);


            #line default
            #line hidden
                    WriteLiteral("]</code>\r\n                <span");

                    WriteLiteral(" class=\"info\"");

                    WriteLiteral(">\r\n");

                    WriteLiteral("                    ");


            #line 79 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(Html.WikiParse(eh.Info, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                    WriteLiteral("\r\n                </span>\r\n");

                    WriteLiteral("                ");


            #line 81 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(Html.TextArea(ec.SubContextPrefix(a => a.Description), eh.Description, 5, 80, new { @class = "editable" }));


            #line default
            #line hidden
                    WriteLiteral("\r\n                <span");

                    WriteLiteral(" class=\"wiki\"");

                    WriteLiteral(">\r\n");

                    WriteLiteral("                    ");


            #line 83 "..\..\Help\Views\ViewEntity.cshtml"
                    Write(Html.WikiParse(eh.Description, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                    WriteLiteral("\r\n                </span>\r\n            </div>\r\n");

                    WriteLiteral("            <div");

                    WriteLiteral(" id=\"entityContent\"");

                    WriteLiteral(" class=\"help_left\"");

                    WriteLiteral(">\r\n");


            #line 87 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 87 "..\..\Help\Views\ViewEntity.cshtml"

                    var allowedProps = eh.Properties.Where(a => a.Value.IsAllowed() == null).ToDictionary();


            #line default
            #line hidden
                    WriteLiteral("\r\n\r\n");


            #line 91 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 91 "..\..\Help\Views\ViewEntity.cshtml"
                    if (allowedProps.Any())
                    {
            #line default
            #line hidden
                        WriteLiteral("                    <div");

                        WriteLiteral(" id=\"properties\"");

                        WriteLiteral(">\r\n                        <h2");

                        WriteLiteral(" class=\"greyTitle\"");

                        WriteLiteral(">");


            #line 94 "..\..\Help\Views\ViewEntity.cshtml"
                        Write(Html.PropertyNiceName(() => eh.Entity.Value.Properties));


            #line default
            #line hidden
                        WriteLiteral("</h2>\r\n");


            #line 95 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 95 "..\..\Help\Views\ViewEntity.cshtml"

                        var elementContexts = ec.TypeElementContext(e => e.Properties).ToDictionary(a => a.Value.Property.Path);

                        var tuplesDic = allowedProps.Values.Select(p => Tuple.Create(p, elementContexts.GetOrThrow(p.PropertyRoute.PropertyString()))).ToDictionary(a => a.Item1.PropertyRoute);

                        var roots = TreeHelper.ToTreeC(tuplesDic.Values, kvp =>
                        {
                            var parent = kvp.Item1.PropertyRoute.Parent;
                            if (parent.PropertyRouteType == PropertyRouteType.Root || parent.PropertyRouteType == PropertyRouteType.Mixin)
                            {
                                return(null);
                            }

                            if (parent.PropertyRouteType == PropertyRouteType.MListItems)
                            {
                                parent = parent.Parent;
                            }

                            return(tuplesDic.GetOrThrow(parent));
                        });


            #line default
            #line hidden
                        WriteLiteral("\r\n\r\n                        <dl");

                        WriteLiteral(" class=\"dl-horizontal\"");

                        WriteLiteral(">\r\n");


            #line 114 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 114 "..\..\Help\Views\ViewEntity.cshtml"
                        foreach (var node in roots)
                        {
            #line default
            #line hidden

            #line 116 "..\..\Help\Views\ViewEntity.cshtml"
                            Write(WriteProperty(node, name));


            #line default
            #line hidden

            #line 116 "..\..\Help\Views\ViewEntity.cshtml"
                            ;
                        }


            #line default
            #line hidden
                        WriteLiteral("                        </dl>\r\n                    </div>\r\n");


            #line 120 "..\..\Help\Views\ViewEntity.cshtml"
                    }


            #line default
            #line hidden
                    WriteLiteral("\r\n");


            #line 122 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 122 "..\..\Help\Views\ViewEntity.cshtml"

                    var allowedOperations = eh.Operations.Where(a => a.Value.IsAllowed() == null).ToDictionary();


            #line default
            #line hidden
                    WriteLiteral("\r\n\r\n");


            #line 126 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 126 "..\..\Help\Views\ViewEntity.cshtml"
                    if (allowedOperations.Any())
                    {
                        var operations = ec.TypeElementContext(e => e.Operations).ToDictionary(a => a.Value.Operation);



            #line default
            #line hidden
                        WriteLiteral("                    <div");

                        WriteLiteral(" id=\"operations\"");

                        WriteLiteral(">\r\n                        <h2");

                        WriteLiteral(" class=\"greyTitle\"");

                        WriteLiteral(">");


            #line 131 "..\..\Help\Views\ViewEntity.cshtml"
                        Write(Html.PropertyNiceName(() => eh.Entity.Value.Operations));


            #line default
            #line hidden
                        WriteLiteral("</h2>\r\n                        <dl");

                        WriteLiteral(" class=\"dl-horizontal\"");

                        WriteLiteral(">\r\n");


            #line 133 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 133 "..\..\Help\Views\ViewEntity.cshtml"
                        foreach (var op in allowedOperations)
                        {
                            using (TypeElementContext <OperationHelpEntity> ctx = operations.GetOrThrow(op.Key))
                            {
            #line default
            #line hidden
                                WriteLiteral("                                <dt");

                                WriteAttribute("id", Tuple.Create(" id=\"", 5953), Tuple.Create("\"", 5987)

            #line 137 "..\..\Help\Views\ViewEntity.cshtml"
                                               , Tuple.Create(Tuple.Create("", 5958), Tuple.Create <System.Object, System.Int32>(HelpUrls.IdOperation(op.Key)

            #line default
            #line hidden
                                                                                                                                 , 5958), false)
                                               );

                                WriteLiteral(">");


            #line 137 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(op.Key.NiceToString());


            #line default
            #line hidden
                                WriteLiteral("<code");

                                WriteLiteral(" class=\'shortcut\'");

                                WriteLiteral(">[o:");


            #line 137 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(op.Key.Key);


            #line default
            #line hidden
                                WriteLiteral("]</code></dt>\r\n");

                                WriteLiteral("                                <dd>\r\n                                    <span");

                                WriteLiteral(" class=\"info\"");

                                WriteLiteral(">\r\n");

                                WriteLiteral("                                        ");


            #line 140 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.WikiParse(op.Value.Info, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                                WriteLiteral("\r\n                                    </span>\r\n");

                                WriteLiteral("                                    ");


            #line 142 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.HiddenRuntimeInfo(ctx));


            #line default
            #line hidden
                                WriteLiteral("\r\n");

                                WriteLiteral("                                    ");


            #line 143 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.HiddenRuntimeInfo(ctx, e => e.Culture));


            #line default
            #line hidden
                                WriteLiteral("\r\n");

                                WriteLiteral("                                    ");


            #line 144 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.HiddenRuntimeInfo(ctx, a => a.Operation));


            #line default
            #line hidden
                                WriteLiteral("\r\n");

                                WriteLiteral("                                    ");


            #line 145 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.TextArea(ctx.SubContextPrefix(a => a.Description), op.Value.UserDescription, new { @class = "editable" }));


            #line default
            #line hidden
                                WriteLiteral("\r\n                                    <span");

                                WriteLiteral(" class=\"wiki\"");

                                WriteLiteral(">\r\n");

                                WriteLiteral("                                        ");


            #line 147 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.WikiParse(op.Value.UserDescription, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                                WriteLiteral("\r\n                                    </span>\r\n                                </" +
                                             "dd>\r\n");


            #line 150 "..\..\Help\Views\ViewEntity.cshtml"
                            }
                        }


            #line default
            #line hidden
                        WriteLiteral("                        </dl>\r\n                    </div>\r\n");


            #line 154 "..\..\Help\Views\ViewEntity.cshtml"
                    }


            #line default
            #line hidden
                    WriteLiteral("\r\n");


            #line 156 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 156 "..\..\Help\Views\ViewEntity.cshtml"

                    var allowedQueries = eh.Queries.Where(a => a.Value.IsAllowed() == null).ToDictionary();


            #line default
            #line hidden
                    WriteLiteral("\r\n\r\n");


            #line 160 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 160 "..\..\Help\Views\ViewEntity.cshtml"
                    if (allowedQueries.Any())
                    {
                        var queries = ec.TypeElementContext(e => e.Queries).ToDictionary(a => a.Value.Query);



            #line default
            #line hidden
                        WriteLiteral("                    <div");

                        WriteLiteral(" id=\"queries\"");

                        WriteLiteral(">\r\n                        <h2");

                        WriteLiteral(" class=\"greyTitle\"");

                        WriteLiteral(">");


            #line 165 "..\..\Help\Views\ViewEntity.cshtml"
                        Write(typeof(QueryEntity).NicePluralName());


            #line default
            #line hidden
                        WriteLiteral("</h2>\r\n");


            #line 166 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 166 "..\..\Help\Views\ViewEntity.cshtml"
                        foreach (var mq in allowedQueries)
                        {
                            using (TypeElementContext <QueryHelpEntity> qctx = queries.GetOrThrow(QueryLogic.GetQueryEntity(mq.Key)))
                            {
            #line default
            #line hidden

            #line 171 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.HiddenRuntimeInfo(qctx));


            #line default
            #line hidden

            #line 171 "..\..\Help\Views\ViewEntity.cshtml"



            #line default
            #line hidden

            #line 172 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.HiddenRuntimeInfo(qctx, e => e.Culture));


            #line default
            #line hidden

            #line 172 "..\..\Help\Views\ViewEntity.cshtml"



            #line default
            #line hidden

            #line 173 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.HiddenRuntimeInfo(qctx, a => a.Query));


            #line default
            #line hidden

            #line 173 "..\..\Help\Views\ViewEntity.cshtml"



            #line default
            #line hidden
                                WriteLiteral("                            <h3");

                                WriteAttribute("id", Tuple.Create(" id=\"", 8163), Tuple.Create("\"", 8193)

            #line 174 "..\..\Help\Views\ViewEntity.cshtml"
                                               , Tuple.Create(Tuple.Create("", 8168), Tuple.Create <System.Object, System.Int32>(HelpUrls.IdQuery(mq.Key)

            #line default
            #line hidden
                                                                                                                                 , 8168), false)
                                               );

                                WriteLiteral(">");


            #line 174 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(QueryUtils.GetNiceName(mq.Key));


            #line default
            #line hidden
                                WriteLiteral("</h3>\r\n");

                                WriteLiteral("                            <div");

                                WriteLiteral(" class=\"queryName\"");

                                WriteLiteral(">\r\n                                <code");

                                WriteLiteral(" class=\'shortcut\'");

                                WriteLiteral(">[q:");


            #line 176 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(QueryUtils.GetKey(mq.Key));


            #line default
            #line hidden
                                WriteLiteral("]</code>\r\n                                <span");

                                WriteLiteral(" class=\"info\"");

                                WriteLiteral(">\r\n");

                                WriteLiteral("                                    ");


            #line 178 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.WikiParse(mq.Value.Info, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                                WriteLiteral("\r\n                                </span>\r\n");

                                WriteLiteral("                                ");


            #line 180 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.TextArea(qctx.SubContextPrefix(a => a.Description), mq.Value.UserDescription, new { @class = "editable" }));


            #line default
            #line hidden
                                WriteLiteral("\r\n                                <span");

                                WriteLiteral(" class=\"wiki\"");

                                WriteLiteral(">\r\n");

                                WriteLiteral("                                    ");


            #line 182 "..\..\Help\Views\ViewEntity.cshtml"
                                Write(Html.WikiParse(mq.Value.UserDescription, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                                WriteLiteral("\r\n                                </span>\r\n                            </div>\r\n");


            #line 185 "..\..\Help\Views\ViewEntity.cshtml"

                                var allowedColumn = mq.Value.Columns.Where(a => a.Value.IsAllowed() == null);
                                if (allowedColumn.Any())
                                {
                                    var columns = qctx.TypeElementContext(a => a.Columns).ToDictionary(a => a.Value.ColumnName);



            #line default
            #line hidden
                                    WriteLiteral("                            <dl");

                                    WriteLiteral(" class=\"dl-horizontal columns\"");

                                    WriteLiteral(">\r\n");


            #line 192 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 192 "..\..\Help\Views\ViewEntity.cshtml"
                                    foreach (var qc in allowedColumn)
                                    {
                                        using (var ctx = columns.GetOrThrow(qc.Value.Column.Name))
                                        {
            #line default
            #line hidden

            #line 196 "..\..\Help\Views\ViewEntity.cshtml"
                                            Write(Html.HiddenRuntimeInfo(ctx));


            #line default
            #line hidden

            #line 196 "..\..\Help\Views\ViewEntity.cshtml"



            #line default
            #line hidden
                                            WriteLiteral("                                    <dt>");


            #line 197 "..\..\Help\Views\ViewEntity.cshtml"
                                            Write(qc.Value.NiceName);


            #line default
            #line hidden
                                            WriteLiteral("</dt>\r\n");

                                            WriteLiteral("                                    <dd>\r\n                                       " +
                                                         " <span");

                                            WriteLiteral(" class=\"info\"");

                                            WriteLiteral(">\r\n");

                                            WriteLiteral("                                            ");


            #line 200 "..\..\Help\Views\ViewEntity.cshtml"
                                            Write(Html.WikiParse(qc.Value.Info, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                                            WriteLiteral("\r\n                                        </span>\r\n");

                                            WriteLiteral("                                        ");


            #line 202 "..\..\Help\Views\ViewEntity.cshtml"
                                            Write(Html.Hidden(ctx.SubContextPrefix(a => a.ColumnName), ctx.Value.ColumnName));


            #line default
            #line hidden
                                            WriteLiteral("\r\n");

                                            WriteLiteral("                                        ");


            #line 203 "..\..\Help\Views\ViewEntity.cshtml"
                                            Write(Html.TextArea(ctx.SubContextPrefix(a => a.Description), ctx.Value.Description, new { @class = "editable" }));


            #line default
            #line hidden
                                            WriteLiteral("\r\n                                        <span");

                                            WriteLiteral(" class=\"wiki\"");

                                            WriteLiteral(">\r\n");

                                            WriteLiteral("                                            ");


            #line 205 "..\..\Help\Views\ViewEntity.cshtml"
                                            Write(Html.WikiParse(qc.Value.UserDescription, HelpWiki.DefaultWikiSettings));


            #line default
            #line hidden
                                            WriteLiteral("\r\n                                        </span>\r\n                              " +
                                                         "      </dd>\r\n");


            #line 208 "..\..\Help\Views\ViewEntity.cshtml"
                                        }
                                    }


            #line default
            #line hidden
                                    WriteLiteral("                            </dl>\r\n");


            #line 211 "..\..\Help\Views\ViewEntity.cshtml"
                                }
                            }
                        }


            #line default
            #line hidden
                        WriteLiteral("                    </div>\r\n");


            #line 216 "..\..\Help\Views\ViewEntity.cshtml"
                    }


            #line default
            #line hidden
                    WriteLiteral("            </div>\r\n");


            #line 218 "..\..\Help\Views\ViewEntity.cshtml"
                }
            }


            #line default
            #line hidden
            WriteLiteral("    </div>\r\n\r\n    <div");

            WriteLiteral(" class=\"col-md-3\"");

            WriteLiteral(">\r\n");


            #line 223 "..\..\Help\Views\ViewEntity.cshtml"


            #line default
            #line hidden

            #line 223 "..\..\Help\Views\ViewEntity.cshtml"
            Html.RenderPartial(HelpClient.MiniMenu, new ViewDataDictionary {
                { "type", eh.Type }
            });

            #line default
            #line hidden
            WriteLiteral("\r\n    </div>\r\n</div>\r\n");
        }