








<pre class='dw-error'>Error executing template "Designs/Mireille/eCom/ProductCatalog/PLP-List-Async.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_f85cadb0e1594f9b88d8e8283fa6629d.Execute() in C:\Solutions\Mireille-Live\Files\Templates\Designs\Mireille\eCom\ProductCatalog\PLP-List-Async.cshtml:line 35
   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.Template.RenderRazorTemplate()
<hr/>
<div class='template-code'>
<span class='line-number'>  1</span>	@using System.Web.Hosting;
<span class='line-number'>  2</span>	@using Dynamicweb.Rendering
<span class='line-number'>  3</span>	@using Dynamicweb.Ecommerce.ProductCatalog
<span class='line-number'>  4</span>	@using Mireille.Web.CustomCode.Razor
<span class='line-number'>  5</span>	@using Mireille.Web.CustomCode.Services
<span class='line-number'>  6</span>	@using Mireille.Web.DwDependentModels
<span class='line-number'>  7</span>	@using Newtonsoft.Json
<span class='line-number'>  8</span>	@using NLWI.Core.Factory
<span class='line-number'>  9</span>	@using Dynamicweb.Indexing.Querying
<span class='line-number'> 10</span>	
<span class='line-number'> 11</span>	@inherits ViewModelTemplate&lt;ProductListViewModel&gt;
<span class='line-number'> 12</span>	@{
<span class='line-number'> 13</span>	    var products = new List&lt;ProductWithSpecifications&gt;();
<span class='line-number'> 14</span>	    var facetList = new List&lt;FacetViewModel&gt;();
<span class='line-number'> 15</span>	    var hasGroupIdInQuery = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request[&quot;GroupID&quot;]);
<span class='line-number'> 16</span>	
<span class='line-number'> 17</span>	    var currentPage = Model.CurrentPage;
<span class='line-number'> 18</span>	    var paginationTotalPages = Model.GetPageCount();
<span class='line-number'> 19</span>	    var pageSize = Model.PageSize;
<span class='line-number'> 20</span>	    var navigation = new PaginationModel(currentPage, paginationTotalPages, pageSize, hasGroupIdInQuery);
<span class='line-number'> 21</span>	
<span class='line-number'> 22</span>	
<span class='line-number'> 23</span>	    var result = new ProductListPage(products, facetList, navigation);
<span class='line-number'> 24</span>	    //nuke dw cache as it is query specific, and not user specific.
<span class='line-number'> 25</span>	    var queryService = new QueryService();
<span class='line-number'> 26</span>	    var query = queryService.LoadQuery(HostingEnvironment.MapPath(&quot;/Files/System/Repositories/B2B/ProductList.query&quot;));
<span class='line-number'> 27</span>	
<span class='line-number'> 28</span>	    queryService.SaveQuery(HostingEnvironment.MapPath(&quot;/Files/System/Repositories/B2B/ProductList.query&quot;),query);
<span class='line-number'> 29</span>	    QueryHelper.RemoveQueryFromCache(query);
<span class='line-number'> 30</span>	}
<span class='line-number'> 31</span>	
<span class='line-number'> 32</span>	@if (Model.Products != null)
<span class='line-number'> 33</span>	{
<span class='line-number'> 34</span>	
<span class='line-number'> 35</span>	    var oldModelProductIds = ObjectFactory.GetInstance&lt;OldSelectionService&gt;().GetOldSelectionsForCustomerAndProductIds(Pageview.User.CustomerNumber, Model.Products.ToList());
<span class='line-number'> 36</span>	
<span class='line-number'> 37</span>	    foreach (var product in Model.Products)
<span class='line-number'> 38</span>	    {
<span class='line-number'> 39</span>	        var specifications = product.GetSpecifications();
<span class='line-number'> 40</span>	
<span class='line-number'> 41</span>	        var defaultVariant = product.Variants?.FirstOrDefault().Number;
<span class='line-number'> 42</span>	        var hasVariants = product.Variants?.Count &gt; 0;
<span class='line-number'> 43</span>	        string code;
<span class='line-number'> 44</span>	        oldModelProductIds.TryGetValue(product.Id, out code);
<span class='line-number'> 45</span>	        var simpleProduct = new SimpleProduct(product.Id,
<span class='line-number'> 46</span>	            product.VariantId,
<span class='line-number'> 47</span>	            product.LanguageId,
<span class='line-number'> 48</span>	            product.Name,
<span class='line-number'> 49</span>	            product.ShortDescription,
<span class='line-number'> 50</span>	            product.LongDescription,
<span class='line-number'> 51</span>	            product.Number, hasVariants,
<span class='line-number'> 52</span>	            defaultVariant,
<span class='line-number'> 53</span>	            product.GetUnitId(),
<span class='line-number'> 54</span>	            oldModelProductIds.ContainsKey(product.Id),
<span class='line-number'> 55</span>	            !string.IsNullOrEmpty(code) ? code : &quot;&quot;,
<span class='line-number'> 56</span>	            &quot;&quot;);
<span class='line-number'> 57</span>	        products.Add(new ProductWithSpecifications(simpleProduct, specifications));
<span class='line-number'> 58</span>	    }
<span class='line-number'> 59</span>	}
<span class='line-number'> 60</span>	@if (Model.FacetGroups != null)
<span class='line-number'> 61</span>	{
<span class='line-number'> 62</span>	    foreach (var facets in Model.FacetGroups)
<span class='line-number'> 63</span>	    {
<span class='line-number'> 64</span>	        foreach (var facet in facets.Facets.Where(e =&gt; e.Options.Any()))
<span class='line-number'> 65</span>	        {
<span class='line-number'> 66</span>	            facetList.Add(facet);
<span class='line-number'> 67</span>	
<span class='line-number'> 68</span>	        }
<span class='line-number'> 69</span>	    }
<span class='line-number'> 70</span>	}
<span class='line-number'> 71</span>	@JsonConvert.SerializeObject(result)
</div>
</pre>
