Error executing template "Designs/Swift/Components/EcommerceBadge.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_138bf54c8c9e475cacf61737f8339923.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.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 99
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 21
at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 749
1 @inherits ViewModelTemplate<ProductViewModel>
2 @using Dynamicweb.Frontend
3 @using Dynamicweb.Content
4 @using Dynamicweb.Rendering
5 @using Dynamicweb.Ecommerce.ProductCatalog
6
7 @{
8 string sizeCssClass = GetViewParameter("size") != null ? GetViewParameter("size").ToString() : "";
9 string newBadgeCssClassName = GetViewParameter("newBadgeCssClassName") != null ? GetViewParameterString("newBadgeCssClassName").Trim().ToLower() : "";
10 bool newBadgeEnabled = newBadgeCssClassName != "" && newBadgeCssClassName != "none" ? true : false;
11
12 var campaignBadgesValues = GetViewParameter("campaignBadgesValues") != null ?
13 GetViewParameter("campaignBadgesValues").GetType() == typeof(System.String) ? GetViewParameterString("campaignBadgesValues").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList() : GetViewParameter("campaignBadgesValues") as List<string> : new List<string>();
14
15 }
16
17
18 @if (Model.Discount.Price != 0)
19 {
20 string saleBadgeCssClassName = GetViewParameter("saleBadgeCssClassName") != null ? GetViewParameterString("saleBadgeCssClassName").Trim().ToLower() : "";
21 bool saleBadgeEnabled = saleBadgeCssClassName != "" && saleBadgeCssClassName != "none" ? true : false;
22
23 if (saleBadgeEnabled)
24 {
25 string saleBadgeType = GetViewParameter("saleBadgeType") != null ? GetViewParameterString("saleBadgeType") : "amount";
26 string title = saleBadgeType == "amount" ? "-" + Model.Discount.PriceFormatted : "";
27 title = saleBadgeType == "percentage" ? "-" + Math.Round((Model.Discount.Price / Model.PriceBeforeDiscount.Price) * 100) + "%" : title;
28
29 string hideAutoLabel = "";
30 if (saleBadgeType == "amount" || saleBadgeType == "percentage")
31 {
32 hideAutoLabel = "badge-no-label";
33 }
34
35 <span class="@sizeCssClass"><span class="badge @hideAutoLabel @(saleBadgeCssClassName) rounded-0">@title</span></span>
36 }
37 }
38
39 @if (newBadgeEnabled)
40 {
41 DateTime createdDate = Model.Created.Value;
42 double newPublicationDays = GetViewParameter("newPublicationDays") != null ? GetViewParameterDouble("newPublicationDays") : 0;
43
44 if ((newPublicationDays == 0) || (createdDate.AddDays(newPublicationDays) > DateTime.Now))
45 {
46 <span class="@sizeCssClass"><span class="badge @newBadgeCssClassName rounded-0"></span></span>
47 }
48 }
49
50 @if (campaignBadgesValues.Any())
51 {
52 Dictionary<string, ParagraphInfoViewModel> badgeConfigurations;
53
54 if (Dynamicweb.Context.Current.Items.Contains("badgeConfigurations"))
55 {
56 badgeConfigurations = (Dictionary<string, ParagraphInfoViewModel>)Dynamicweb.Context.Current.Items["badgeConfigurations"];
57 }
58 else
59 {
60 var badgesPage = Pageview.AreaSettings.GetLink("EcommerceBadgesPage") != null ? Pageview.AreaSettings.GetLink("EcommerceBadgesPage").PageId : 0;
61 var allBadges = badgesPage != 0 ? Dynamicweb.Content.Services.Paragraphs.GetParagraphsByPageId(badgesPage) : null;
62
63 badgeConfigurations = new Dictionary<string, ParagraphInfoViewModel>();
64 foreach (Paragraph badge in allBadges)
65 {
66 var paragraphviewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(badge);
67 string cssClassName = paragraphviewModel.Item.GetString("CssClassName").Trim().ToLower();
68 if (!badgeConfigurations.ContainsKey(cssClassName))
69 {
70 badgeConfigurations.Add(cssClassName, paragraphviewModel);
71 }
72 }
73 Dynamicweb.Context.Current.Items.Add("badgeConfigurations", badgeConfigurations);
74 }
75
76 int badgesCount = 0;
77 if (badgeConfigurations.Any())
78 {
79 foreach (string campaign in campaignBadgesValues)
80 {
81 if (!string.IsNullOrEmpty(campaign))
82 {
83
84 FieldValueViewModel availableCampaignsObject;
85 Model.ProductFields.TryGetValue("Campaign", out availableCampaignsObject);
86
87 if (availableCampaignsObject != null)
88 {
89 string campaignType = string.Empty;
90
91 if (badgeConfigurations.ContainsKey(campaign))
92 {
93 ParagraphInfoViewModel paragraphviewModel;
94 if (badgeConfigurations.TryGetValue(campaign, out paragraphviewModel))
95 {
96 campaignType = paragraphviewModel.Item.GetRawValueString("CampaignType");
97 }
98 }
99
100 List<FieldOptionValueViewModel> availableCampaigns = (List<FieldOptionValueViewModel>)availableCampaignsObject.Value;
101
102 foreach (FieldOptionValueViewModel availableOption in availableCampaigns)
103 {
104 if (campaignType == availableOption.Value)
105 {
106 <span class="@sizeCssClass"><span class="badge @campaign.Trim().ToLower() rounded-0"></span></span>
107 badgesCount++;
108 break;
109 }
110 }
111 }
112 }
113 }
114 }
115
116 if (badgesCount == 0 && Pageview.IsVisualEditorMode)
117 {
118 <span class="@sizeCssClass"><span class="badge bg-success text-light rounded-0">@Translate("Badge example")</span></span>
119 }
120 }
121 else if (Pageview.IsVisualEditorMode)
122 {
123 <span class="@sizeCssClass"><span class="badge bg-success text-light rounded-0">@Translate("Badge example")</span></span>
124 }
125