Error executing template "Designs/Shared/Smartpage_MenuPlanning/Custom__Weekplan.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at Smartpage.FruHansensKaelder.MenuPlanning.Helpers.MenuHelper.GetUserCustomField[T](User user, String customSystemFieldName) in D:\a\1\s\Smartpage.FruHansensKaelder.MenuPlanning\Helpers\MenuHelper.cs:line 19 at CompiledRazorTemplates.Dynamic.RazorEngine_2050a3b4f1394d82bb3f3df37b7b44cd.Execute() in E:\Solutions\Fru Hansens Kælder\Files\Templates\Designs\Shared\Smartpage_MenuPlanning\Custom__Weekplan.cshtml:line 40 at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, 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 Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb; 3 @using Dynamicweb.Core; 4 @using System.Web; 5 @using System.IO; 6 @using Smartpage.FruHansensKaelder.MenuPlanning.Helpers 7 8 @{ 9 int count = 0; 10 string monShadow = Pageview?.CurrentParagraph?.Item["MonShadow"]?.ToString(); 11 string tueShadow = Pageview?.CurrentParagraph?.Item["TueShadow"]?.ToString(); 12 string wedShadow = Pageview?.CurrentParagraph?.Item["WedShadow"]?.ToString(); 13 string thuShadow = Pageview?.CurrentParagraph?.Item["ThuShadow"]?.ToString(); 14 string friShadow = Pageview?.CurrentParagraph?.Item["FriShadow"]?.ToString(); 15 int addWeeks = Converter.ToInt32(HttpContext.Current.Request.QueryString.Get("addweeks")); 16 addWeeks = addWeeks <= 0 ? 0 : 1; 17 IDictionary<int, string> list = new Dictionary<int, string>(); 18 19 list.Add(1, monShadow); 20 list.Add(2, tueShadow); 21 list.Add(3, wedShadow); 22 list.Add(4, thuShadow); 23 list.Add(5, friShadow); 24 25 string firstDate = GetLoop("Smartpage:MenuPlan").Any() ? GetLoop("Smartpage:MenuPlan").First().GetDate("MenuDate").ToString("dd. MMMM") : ""; 26 string lastDate = GetLoop("Smartpage:MenuPlan").Any() ? GetLoop("Smartpage:MenuPlan").Last().GetDate("MenuDate").ToString("dd. MMMM") : ""; 27 string weekNumber = GetLoop("Smartpage:MenuPlan").Any() ? Converter.ToString(WeekNumber.GetIso8601WeekOfYear(GetLoop("Smartpage:MenuPlan").First().GetDate("MenuDate"))) : ""; 28 29 string querystring = Dynamicweb.Environment.Helpers.LinkHelper.StripQueryString("addweeks"); 30 var previousPath = Dynamicweb.Environment.Helpers.LinkHelper.AddToQueryString(querystring, "addweeks=" + (addWeeks - 1)); 31 var nextPath = Dynamicweb.Environment.Helpers.LinkHelper.AddToQueryString(querystring, "addweeks=" + (addWeeks + 1)); 32 string recipePath = ""; 33 34 if (GetPageIdByNavigationTag("RecipePage") > 0) 35 { 36 recipePath = "/Default.aspx?ID=" + GetPageIdByNavigationTag("RecipePage"); 37 } 38 39 var currentUser = Dynamicweb.Security.UserManagement.User.GetCurrentExtranetUser(); 40 string menuCategorizationModel = !string.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("MenuModel")) ? HttpContext.Current.Request.QueryString.Get("MenuModel") : MenuHelper.GetUserCustomField<string>(currentUser, "AccessUser_MenuCategorizationModel"); 41 var ecologyImg = "/Admin/Public/GetImage.ashx?Image=" + Pageview?.CurrentParagraph?.Item["EcologyImage"]?.ToString() + "&width=250&height=250&compression=75&format=webp&quality=95&"; 42 43 string halalImgPath = "/Admin/Public/GetImage.ashx?Image=" + Pageview?.CurrentParagraph?.Item["HalalImage"]?.ToString() + "&width=250&height=250&compression=75&format=webp&quality=95&"; 44 string halalImg = string.Format("<img style='display:inline-block; vertical-align: middle' height='20' src='{0}'>", halalImgPath); 45 var halalImgFormatted = string.Format(Translate("{0} = Halalcertificeret"), halalImg); 46 string allergensText = Translate("Custom.Weekplan.AllergeneInformation", "ALLERGENER: G=Gluten, M=Mælk, LM=Laktosefri mælk, Æ=Æg, N=Nød, J=Jordnød, F=Fisk, K=Krebsdyr, SO=Soya, SF=Sesamfrø, SL=Selleri, SN=Sennep, L=Lupin, SU=Sulfitter, *=Kan indeholde spor af"); 47 48 string menuCategorization = GetLoop("Smartpage:MenuPlan").Any() ? GetLoop("Smartpage:MenuPlan").First().GetString("MenuCategorization") : ""; 49 var menuCategorizationBgColor = "#000000"; 50 var menucategorizationColorMappingItems = Pageview.GetParagraphViewModels()?.FirstOrDefault()?.Item.GetItems("MenuCategorizationColorMapping"); 51 if (menucategorizationColorMappingItems != null) 52 { 53 var settingColor = menucategorizationColorMappingItems.FirstOrDefault(item => item.GetRawValueString("Category").Equals(menuCategorization, StringComparison.InvariantCultureIgnoreCase))?.GetRawValueString("Color"); 54 55 if(!string.IsNullOrEmpty(settingColor)) 56 { 57 menuCategorizationBgColor = settingColor; 58 } 59 } 60 // Below variables only work when accessed from a rapido page. 61 var customItemTab = Pageview.AreaSettings.GetItem("Custom"); 62 string downloadPath = ""; 63 if (customItemTab != null) 64 { 65 downloadPath = customItemTab.GetItems("Weekmenu_PDF").Any(item => item.GetString("Model").ToLower() == menuCategorizationModel.ToLower()) ? Pageview.AreaSettings.GetItem("Custom").GetItems("Weekmenu_PDF").FirstOrDefault(item => item.GetString("Model").ToLower() == menuCategorizationModel.ToLower())?.GetString("FolderPath") + "/" + menuCategorization + "_" + weekNumber + ".pdf" : ""; 66 } 67 68 } 69 70 <div class="container custom-weekplan-page"> 71 <div class="model-circle" style="background-color: @menuCategorizationBgColor;"> 72 <div class="model-text"> 73 @Translate("Ugeplan") 74 </div> 75 </div> 76 <img class="model-img model-img-ecology" src="@ecologyImg"> 77 78 <h1>@Translate("Ugeplan")</h1> 79 @if (GetLoop("Smartpage:MenuPlan").Any()) 80 { 81 82 if (!string.IsNullOrEmpty(downloadPath) && File.Exists(downloadPath)) 83 { 84 <a class="download" title="@HttpUtility.HtmlAttributeEncode(Translate("Custom:Weekplan.Download weekplan", "Download ugeplan"))" href="@downloadPath" target="_blank" download> 85 <i class="fa fa-download"></i> 86 </a> 87 } 88 <div class="date custom-shadow" style="background-color: @menuCategorizationBgColor"> 89 90 <mark>@firstDate - @lastDate</mark> 91 @if (addWeeks == 0) 92 { 93 <a class="next" rel="nofollow" href="@nextPath" style="background-color: @menuCategorizationBgColor"><i class="fal fa-angle-right"></i></a> 94 } 95 else if (addWeeks == 1) 96 { 97 <a class="previous" rel="nofollow" href="@previousPath" style="background-color: @menuCategorizationBgColor"><i class="fal fa-angle-left"></i></a> 98 } 99 </div> 100 101 var pageId = System.Web.HttpContext.Current.Request["menumodel"] != null ? Pageview.Page.ID.ToString() + "&menumodel=" + System.Web.HttpContext.Current.Request["menumodel"] : Pageview.Page.ID.ToString(); 102 pageId += System.Web.HttpContext.Current.Request["addweeks"] != null ? "&addweeks=" + System.Web.HttpContext.Current.Request["addweeks"] : ""; 103 <a class="print-button" href="/Default.aspx?ID=@(pageId)&pdf=true">@Translate("Custom.Weekmenu.Print", "Print ugeplanen")</a> 104 105 foreach (var menu in GetLoop("Smartpage:MenuPlan")) 106 { 107 count++; 108 var pid = menu.GetString("ProductId"); 109 var date = menu.GetDate("MenuDate").ToString("dddd"); 110 if (!string.IsNullOrEmpty(recipePath)) 111 { 112 string recipeLink = recipePath + "&ProductID=" + menu.GetString("ProductId"); 113 <a href="@recipeLink"> 114 <div class="menu-wrap grid"> 115 @if (count % 2 == 0) 116 { 117 @RenderImage(menu, count, list) 118 @RenderInfo(date, menu) 119 } 120 else 121 { 122 @RenderInfo(date, menu) 123 @RenderImage(menu, count, list) 124 } 125 126 127 <div class="teaser-text grid__col-md-4 grid__col-sm-12"> 128 @menu.GetString("MenuTeaser") 129 </div> 130 </div> 131 </a> 132 } 133 else 134 { 135 <a> 136 <div class="menu-wrap grid"> 137 @if (count % 2 == 0) 138 { 139 @RenderImage(menu, count, list) 140 @RenderInfo(date, menu) 141 } 142 else 143 { 144 @RenderInfo(date, menu) 145 @RenderImage(menu, count, list) 146 } 147 148 149 <div class="teaser-text grid__col-md-4 grid__col-sm-12"> 150 @menu.GetString("MenuTeaser") 151 </div> 152 </div> 153 </a> 154 } 155 156 157 } 158 <div class="allergens"> 159 @allergensText 160 <div> 161 <p class="left">@halalImgFormatted</p> 162 <p class="right">@Translate("Custom:Weekplan.SubjectToChange", "Forbehold for ændringer © Fru Hansens Kælder 2024")</p> 163 </div> 164 </div> 165 } 166 else 167 { 168 <h2 class="error"><mark>@Translate("Custom:Weekplan.NotFound", "Vi fandt ingen menuer")</mark></h2> 169 } 170 171 </div> 172 173 @helper RenderInfo(string date, LoopItem menu) 174 { 175 string menuCategorization = GetLoop("Smartpage:MenuPlan").Any() ? GetLoop("Smartpage:MenuPlan").First().GetString("MenuCategorization") : ""; 176 var menuCategorizationBgColor = "#000000"; 177 var menucategorizationColorMappingItems = Pageview.GetParagraphViewModels()?.FirstOrDefault()?.Item.GetItems("MenuCategorizationColorMapping"); 178 if (menucategorizationColorMappingItems != null) 179 { 180 var settingColor = menucategorizationColorMappingItems.FirstOrDefault(item => item.GetRawValueString("Category").Equals(menuCategorization, StringComparison.InvariantCultureIgnoreCase))?.GetRawValueString("Color"); 181 182 if(!string.IsNullOrEmpty(settingColor)) 183 { 184 menuCategorizationBgColor = settingColor; 185 } 186 } 187 <div class="info grid__col-md-4 grid__col-sm-4"> 188 <mark style="color: @menuCategorizationBgColor">@date</mark> 189 <h2 class="header">@menu.GetString("ProductName")</h2> 190 </div> 191 } 192 193 @helper RenderImage(LoopItem menu, int count, IDictionary<int, string> list) 194 { 195 string missingPlatePath = "/Files/Templates/Designs/Rapido/Images/Menus/Background/missing-plate.png"; 196 string menuImageSettings = "&width=250&height=250&compression=75&format=webp&quality=95"; 197 string menuBgSettings = "&width=160&height=160&compression=75&format=webp"; 198 string imagePrefix = "/Admin/Public/GetImage.ashx?Image="; 199 //string bgPositionClass = count % 2 == 0 ? "left" : "right"; 200 201 <div class="image grid__col-md-4 grid__col-sm-4"> 202 <img class="bg right" src="@(imagePrefix + list.First(x => x.Key == count).Value + menuBgSettings)" onerror="this.remove()" /> 203 <img class="product-image" src="@(imagePrefix + "/Files/Images/Products/Tallerkener/" + menu.GetString("ProductId") + ".png" + menuImageSettings + "&altFmImage_path=" + missingPlatePath)" /> 204 </div> 205 } 206