コード例 #1
0
        private IEnumerable <KeyValuePair <string, string> > GetQueryParameters(QueryScopeReportBlock block, IReadOnlyDictionary <string, object> parameterValues)
        {
            var queryParameters = new List <KeyValuePair <string, string> >();

            if (block.Parameters == null)
            {
                return(queryParameters);
            }

            foreach (var parameter in block.Parameters)
            {
                var template = _templateBuilder.Build(parameter.Template);

                foreach (var parameterValue in parameterValues)
                {
                    template.Add(parameterValue.Key, parameterValue.Value);
                }

                try
                {
                    var parameterValue = template.Render();

                    queryParameters.Add(new KeyValuePair <string, string>(parameter.Key, parameterValue));
                }
                catch (Exception)
                {
                    // TODO: typed exception
                    throw new Exception($"Failed to render report query block parameter template. BlockId='{block.Id}'");
                }
            }

            return(queryParameters);
        }
コード例 #2
0
        protected override void ExecuteStage([NotNull] ReportBundle reportBundle)
        {
            if (reportBundle == null)
            {
                throw new ArgumentNullException(nameof(reportBundle));
            }

            if (string.IsNullOrEmpty(reportBundle.Rule?.ReportTitle))
            {
                reportBundle.Title = reportBundle.Report.DisplayName;

                return;
            }

            var titleTemplate = _templateBuilder.Build(reportBundle.Rule.ReportTitle);

            foreach (var parameter in reportBundle.ParameterValues)
            {
                titleTemplate.Add(parameter.Key, parameter.Value);
            }

            foreach (var queryResult in reportBundle.QueryResults)
            {
                titleTemplate.Add(queryResult.Key, queryResult.Result.Items);
            }

            reportBundle.Title = titleTemplate.Render();
        }
コード例 #3
0
        public Task Handle(RegisterUserCommand command)
        {
            var emailMessage = new EmailMessage
            {
                Content = _templateBuilder.Build(Template.Get(), new TemplateModel
                {
                    Title    = "Email Confirmation",
                    Content  = "Please confirm your email by clicking like below.",
                    Link     = $"{command.SiteAddress}/Account/ConfirmEmail?emailId={command.EmailId}&token={command.ConfirmationToken}",
                    LinkName = "Confirm"
                })
            };

            emailMessage.To.Add(command.EmailId);
            emailMessage.Subject = "Email Confirmation";
            _emailProvider.Send(1, emailMessage);

            return(Task.CompletedTask);
        }
コード例 #4
0
        public void Vizualize([NotNull] HtmlTextWriter htmlTextWriter,
                              [NotNull] BoolReportBlock block,
                              IReadOnlyDictionary <string, object> parameterValues,
                              IReadOnlyCollection <ReportQueryResult> queryResults,
                              long userId)
        {
            if (htmlTextWriter == null)
            {
                throw new ArgumentNullException(nameof(htmlTextWriter));
            }
            if (block == null)
            {
                throw new ArgumentNullException(nameof(block));
            }

            var templateSource = $"$if({block.Variable})$1$endif$";

            var template = _templateBuilder.Build(templateSource);

            if (parameterValues != null)
            {
                foreach (var parameterValue in parameterValues)
                {
                    template.Add(parameterValue.Key, parameterValue.Value);
                }
            }

            var result = template.Render();

            if (result.Equals("1"))
            {
                if (block.Positive != null)
                {
                    _reportBlockVizualizationManager.Vizualize(
                        htmlTextWriter,
                        (dynamic)block.Positive,
                        parameterValues,
                        queryResults,
                        userId);
                }
            }
            else
            {
                if (block.Negative != null)
                {
                    _reportBlockVizualizationManager.Vizualize(
                        htmlTextWriter,
                        (dynamic)block.Negative,
                        parameterValues,
                        queryResults,
                        userId);
                }
            }
        }
コード例 #5
0
        public void ShouldReturnTemplateWithTitle()
        {
            const string titleTemplate = "title";

            const string bodyTemplate = "body";

            var result = _target.Build(titleTemplate, bodyTemplate);

            result.Should().NotBeNull();
            result.Should().BeOfType <TemplateWithTitle>();
        }
コード例 #6
0
        protected BodyBuilder GetBody(string templateFile)
        {
            var    builder = new BodyBuilder();
            string path    = $"{HostingEnvironment.WebRootPath}/emailTemplate/{templateFile}";

            using (StreamReader sourceReader = System.IO.File.OpenText(path))
            {
                builder.HtmlBody = TemplateBuilder.Build(sourceReader.ReadToEnd());
            }

            return(builder);
        }
コード例 #7
0
        private string GetTemplate(HtmlReportBlock block,
                                   IReadOnlyDictionary <string, object> parameterValues,
                                   IReadOnlyCollection <ReportQueryResult> queryResults)
        {
            var template = _templateBuilder.Build(block.Template);

            RenderParameters(parameterValues, template);

            RenderQueryResults(queryResults, template);

            return(template.Render());
        }
コード例 #8
0
        public void Vizualize([NotNull] HtmlTextWriter htmlTextWriter,
                              [NotNull] LinkReportBlock block,
                              IReadOnlyDictionary <string, object> parameterValues,
                              IReadOnlyCollection <ReportQueryResult> queryResults,
                              long userId)
        {
            if (htmlTextWriter == null)
            {
                throw new ArgumentNullException(nameof(htmlTextWriter));
            }
            if (block == null)
            {
                throw new ArgumentNullException(nameof(block));
            }

            if (block.Target == null)
            {
                throw new EmptyLinkReportBlockTargetException(block.Id);
            }

            if (block.Child == null)
            {
                throw new EmptyLinkReportBlockChildException(block.Id);
            }

            var template = _templateBuilder.Build(block.Target);

            if (parameterValues != null)
            {
                foreach (var parameterValue in parameterValues)
                {
                    template.Add(parameterValue.Key, parameterValue.Value);
                }
            }

            var renderedTemplate = template.Render();

            renderedTemplate = _htmlEncoder.Encode(renderedTemplate);

            htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Href, renderedTemplate);
            htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.A);

            _blockVizualizationManager.Vizualize(
                htmlTextWriter,
                (dynamic)block.Child,
                parameterValues,
                queryResults,
                userId);

            htmlTextWriter.RenderEndTag();
        }
コード例 #9
0
        public async Task <AzureValidatedFile> Validate(string path, string contents)
        {
            var valid = new AzureValidatedFile
            {
                FilePath = path,
                Message  = ""
            };

            try
            {
                //load all the subtemplates and process them through
                var parsed = JObject.Parse(contents);

                var builtTemplate = _templateBuilder.Build("FullTemplate.json", contents);

                var result = await _restChecker.CheckArm(builtTemplate, _secrets);

                if (result.error != null)
                {
                    valid.Failed = true;

                    var mString = "";

                    if (result?.error?.details != null && result?.error?.details.Count > 0)
                    {
                        mString = string.Join(" \r\n ", result.error.details.Select(_ => _.message + "\r\n").ToList());
                    }
                    else
                    {
                        mString = result.error.message;
                    }

                    valid.Message += $"{mString}\r\n";
                }
            }
            catch (Exception ex)
            {
                valid.Failed  = true;
                valid.Message = $"JSON is not valid or process failed -> {ex.Message}";
                Debug.WriteLine(ex.Message);
            }

            return(valid);
        }
コード例 #10
0
        private string RenderTemplate(LabelReportBlock block, IReadOnlyDictionary <string, object> parameterValues)
        {
            var template = _templateBuilder.Build(block.Text);

            if (parameterValues == null)
            {
                return(template.Render());
            }

            foreach (var parameterValue in parameterValues)
            {
                template.Add(parameterValue.Key, parameterValue.Value);
            }

            try
            {
                return(template.Render());
            }
            catch (Exception)
            {
                throw new Exception($"Incorrect label template. LabelId='{block.Id}'");
            }
        }
コード例 #11
0
 private ITemplateWithTitle Get(Templates template) =>
 _templateBuilder.Build(template.Title, template.Body);