Error executing template "Designs/Swift-v2/CPQ_PageClean.cshtml"
System.InvalidOperationException: Endpoint authentication '0' was not found.
at DW_CPQ_API.Helpers.EndpointHelper..ctor(Int32 requestTimeout, LogHelper logger, Int32 authenticationId)
at DW_CPQ_API.BCHelper.TryResolveDefaultConnectorConnection(EndpointHelper& endpointWriter, String& odataUrlCompany)
at DW_CPQ_API.ModelController.LoadModelSetting(String ModelVersionId)
at DW_CPQ_API.ModelController.LoadModelSetting()
at DW_CPQ_API.CPQConfiguration..ctor(ModelController controller)
at DW_CPQ_API.ModelController..ctor(String modelVersionId, Nullable`1 pageId, NameValueCollection requestVars, Boolean quickConfigure)
at DW_CPQ_API.ModelController..ctor(Int32 pageId, NameValueCollection requestVars)
at CompiledRazorTemplates.Dynamic.RazorEngine_94ef341d52de4652b2c7ba49fabecfd2.ExecuteAsync()
at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String templateSource, String name, Type modelType, Object model, DynamicViewBag viewBag)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
@using System
@using Dynamicweb
@using Dynamicweb.Environment
@using Dynamicweb.Frontend
@using Dynamicweb.Frontend.Devices
@using Dynamicweb.Rendering
@using Dynamicweb.Configuration
@{
Pageview.Meta.AddTag("fb:app_id", Model.Area?.Item?.GetString("FacebookAppId"));
Pageview.Meta.AddTag("google-site-verification", Model.Area?.Item?.GetString("GoogleSiteVerification"));
Pageview.Meta.AddTag("site_name", Model.Area?.Item?.TryGetString("MetaSiteName", out string? siteName) is true ? siteName : Model.Area?.Name);
Pageview.Meta.AddTag("url", Pageview.Meta.Canonical?.ToString());
Pageview.Meta.AddTag("twitter:site", Model.Area?.Item?.GetString("TwitterSite"));
Pageview.Meta.AddOpenGraphTag("type", "website");
Pageview.Meta.AddOpenGraphTag("url", Pageview.Meta.Canonical?.ToString());
Pageview.Meta.AddOpenGraphTag("title", Model.Title);
Pageview.Meta.AddOpenGraphTag("description", Model.Description);
if (Model.Area?.Item?.TryGetImageFile("MetaImage", out ImageFileViewModel? image) ?? false) {
Pageview.Meta.AddOpenGraphTag("image", image.Path);
Pageview.Meta.AddOpenGraphTag("image:alt", Model.Area?.Item?.GetString("MetaImageALT"));
}
string? googleTagManagerID = string.Empty;
if (Model.Area?.Item?.TryGetString("GoogleTagManagerID", out googleTagManagerID) ?? false)
{
googleTagManagerID = googleTagManagerID.Trim();
}
@* Stylesheets *@
AddStylesheet("/Files/Templates/Designs/Swift-v2/Assets/css/swift.css");
@* Color schemes stylesheet *@
@if (Model.TryGetColorSchemeStyle(out string? colorSchemeStyle))
{
AddStylesheet(colorSchemeStyle);
}
@* Button stylesheet *@
@if (Model.TryGetButtonStyle(out string? buttonStyle)) {
AddStylesheet(buttonStyle);
}
@* Typography stylesheet *@
@if (Model.TryGetTypographyStyle(out string? typographyStyle)) {
AddStylesheet(typographyStyle);
}
@* Scripts *@
AddScript("/Files/Templates/Designs/Swift-v2/Assets/lib/bootstrap/dist/js/bootstrap.bundle.min.js");
AddScript("/Files/Templates/Designs/Swift-v2/Assets/lib/htmx.org/dist/htmx.min.js");
AddScript("/Files/Templates/Designs/Swift-v2/Assets/js/swift.js");
@* CPQ *@
string cpqTheme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("CPQ_Theme")) ? Model.Item.GetRawValueString("CPQ_Theme") : "bold";
AddStylesheet("/Files/Templates/Designs/Swift-v2/Assets/css/cpq.css");
AddStylesheet("/Files/Templates/Designs/Swift-v2/Assets/css/cpq-inputs.css");
AddStylesheet($"/Files/Templates/Designs/Swift-v2/Assets/css/{cpqTheme}.css");
AddScript("https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js");
@* Summernote CSS/JS *@
AddStylesheet("https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.20/summernote-bs4.min.css");
AddScript("https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.20/summernote-bs4.min.js");
@* Flatpickr CSS/JS *@
AddStylesheet("https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css");
AddScript("https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.js");
AddScript("/Files/Templates/Designs/Swift-v2/Assets/js/cpq-summary.js", true); // summary module
AddScript("/Files/Templates/Designs/Swift-v2/Assets/js/cpq-table.js", true); // cpq table module
AddScript("/Files/Templates/Designs/Swift-v2/Assets/js/cpq.js", true); // defer to avoid blocking page load
const string cpqCustomJsVirtualPath = "/Files/Templates/Designs/Swift-v2/Assets/js/cpq-custom.js";
if (System.IO.File.Exists(Dynamicweb.Core.SystemInformation.MapPath(cpqCustomJsVirtualPath)))
{
AddScript(cpqCustomJsVirtualPath, true); // defer to avoid blocking page load
}
string enableFrontendDebuggingRaw = SystemConfiguration.Instance.GetValue("/Globalsettings/CPQ/EnableFrontendDebugging") ?? "False";
bool enableFrontendDebugging = bool.TryParse(enableFrontendDebuggingRaw, out bool enabledFlag) && enabledFlag;
if (enableFrontendDebugging)
{
AddScript("/Files/Templates/Designs/Swift-v2/Assets/js/cpq-debug.js", true);
}
@* Custom <head> include *@
if (Model.Area?.Item?.TryGetFile("CustomHeadInclude", out FileViewModel? customHeadInclude) ?? false)
{
@RenderPartial($"Designs/Swift-v2/Custom/{customHeadInclude?.Name}")
}
}
<!doctype html>
<html lang="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName" data-swift-version="@(ReadFile("/Files/Templates/Designs/Swift-v2/swift_version.txt")?.Trim())">
<head>
@* Required meta tags *@
<meta charset="utf-8">
<meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0">
@if (Model.Area?.Item?.TryGetImageFile("Favicon", out ImageFileViewModel? faviconImage) ?? false)
{
<link rel="shortcut icon" href="@faviconImage?.Path">
}
@if (Model.Area?.Item?.TryGetImageFile("AppleTouchIcon", out ImageFileViewModel? appleTouchIconImage) ?? false)
{
<link rel="apple-touch-icon" href="@appleTouchIconImage?.Path">
}
@* Pageview Meta *@
<title>@Model.Title</title>
@* MetaTags *@
@Model.MetaTags
@* Get stylesheets *@
@Model.GetStylesheetsMarkup()
@* Media Query Limit *@
@if(Model.Area?.Item?.TryGetString("MediaQueryLimit", out string? mediaQueryLimit) ?? false) {
<style>
@@media screen and (min-width: @(mediaQueryLimit)px) {
[data-swift-container] {
--dw-container-limit: @(mediaQueryLimit)px;
}
[data-swift-container],
[data-dw-container-width="3"] {
--dw-container-width: calc(var(--dw-container-limit) * .8);
}
[data-dw-container-width="1"] {
--dw-container-width: var(--swift-text-width);
}
[data-dw-container-width="2"] {
--dw-container-width: calc(var(--dw-container-limit) * .65);
}
}
</style>
}
@* Get scripts *@
@Model.GetScriptsMarkup()
@* Google gtag method - always include even if it is not used for anything *@
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
</script>
@* Google tag manager *@
@if (!string.IsNullOrWhiteSpace(googleTagManagerID))
{
<script>
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
</script>
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', '@(googleTagManagerID)');
</script>
if (AllowTracking())
{
<script>
gtag('consent', 'update', {
'ad_storage': '@CookieManager.IsCookieOptInGranted("Marketing")',
'ad_user_data': '@CookieManager.IsCookieOptInGranted("Marketing")',
'ad_personalization': '@CookieManager.IsCookieOptInGranted("Marketing")',
'analytics_storage': '@CookieManager.IsCookieOptInGranted("Statistical")'
});
</script>
}
}
</head>
<body data-dw-page-id="@(Model.ID)" data-dw-itemtype="@Model.Item?.SystemName?.ToLower()">
@* Google tag manager *@
@if (!string.IsNullOrWhiteSpace(googleTagManagerID) && AllowTracking())
{
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=@(googleTagManagerID)" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
}
@inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
@using DW_CPQ_API
@{
string jsonTxt = "";
ModelController modelController = null;
if( Model.Item.GetRawValueString("CPQ_ModelVersionId") != null )
{
modelController = new ModelController(Pageview.Page.ID, Dynamicweb.Context.Current.Request.Params);
Dynamicweb.Context.Current.Items["ModelController"] = modelController;
jsonTxt = System.Text.Json.JsonSerializer.Serialize(modelController.DocumentResult);
}
<input type="hidden" id="model_version_id" value="@(Model.Item.GetRawValueString("CPQ_ModelVersionId"))" />
string cpqCardItemId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form["cpqCardItemId"])
? Dynamicweb.Context.Current.Request.Form["cpqCardItemId"]
: "";
if( string.IsNullOrEmpty(cpqCardItemId) ) cpqCardItemId = Dynamicweb.Context.Current?.Request?.QueryString.Get("cpqCardItemId") ?? "";
<input type="hidden" id="cpqCardItemId" value="@(cpqCardItemId)" />
string quoteNo = Dynamicweb.Context.Current.Request.QueryString.Get("quote") ?? Dynamicweb.Context.Current.Request.Form["CardNumber"] ?? modelController.CardNumber ?? "";
<input type="hidden" id="quote_no" value="@(quoteNo)" />
string paragraphId = Dynamicweb.Context.Current?.Request?.QueryString.Get("ParagraphID") ?? "";
}
@if (!string.IsNullOrEmpty(paragraphId)) {
@RenderParagraphContent(Convert.ToInt32(paragraphId))
}
else
{
@Model.Grid("Grid", "Grid", "default:true;sort:1", "Page")
@* Render classic content, if any *@
@Model.Placeholder("dwcontent", "content", "default:true;sort:1")
}
@{
string debugmode = Dynamicweb.Context.Current.Request.QueryString.Get("debugmode") ?? "";
bool pageDebugEnabled = bool.TryParse(Dynamicweb.Configuration.SystemConfiguration.Instance.GetValue("/Globalsettings/CPQ/EnableFrontendDebugging") ?? "False", out bool pageDebugEnabledFlag) && pageDebugEnabledFlag;
if( pageDebugEnabled && debugmode=="true" )
{
<table class="table table-sm table-bordered table-striped" id="debug-table" style="border-color: white;font-size: 13px;">
<tr>
<thead>
<th style="background-color: #3498db; color:white;" width="50%">Action Code</th>
<th style="background-color: #3498db; color:white;" width="50%">Debug Print</th>
</thead>
</tr>
<tr>
<td><textarea id="actioncode" class="debugterminal"></textarea>
<br>
<button onclick="runactioncode()" class="retro-btn">Execute</button>
<select id="debugFormInputSelect" class="retro-btn" style="margin-left:8px;" onclick="populateDebugFormInputDropdown()" onchange="cpqDebugAddSelectedFormInput(this)">
<option value="">Select form input</option>
</select>
<input id="debugVariableName" type="text" placeholder="enter variable name" style="margin-left:8px;" />
<button onclick="cpqDebugAddVariable()" class="retro-btn" style="margin-left:8px;">Add variable</button>
</td>
<td><pre class="debugterminal" id="jsonViewer"></pre>
<button onclick="cleardebug()" class="retro-btn">Clear</button>
</td>
</tr>
</table>
}
}
@if( Model.Item.GetRawValueString("CPQ_ModelVersionId") != null && bool.TryParse(Dynamicweb.Configuration.SystemConfiguration.Instance.GetValue("/Globalsettings/CPQ/EnableFrontendDebugging") ?? "False", out bool pageDebugScriptEnabledFlag) && pageDebugScriptEnabledFlag )
{
<script>
function runactioncode() {
updateModelForm({rundebugaction:true});
}
console.log(@Raw(jsonTxt));
</script>
}
</body>
</html>
@functions {
bool AllowTracking()
{
bool allowTracking = true;
if (CookieManager.IsCookieManagementActive)
{
var cookieOptInLevel = CookieManager.GetCookieOptInLevel();
var cookieOptInCategories = CookieManager.GetCookieOptInCategories();
bool consentEither = (cookieOptInCategories.Contains("Statistical") || cookieOptInCategories.Contains("Marketing"));
bool consentFunctional = cookieOptInLevel == CookieOptInLevel.Functional;
bool consentAtLeastOne = cookieOptInLevel == CookieOptInLevel.All || (consentFunctional && consentEither);
allowTracking = consentAtLeastOne;
}
return allowTracking;
}
}