Error executing template "Designs/eldorado-b2b/eCom/Productlist/espresso-with-filters.cshtml"
System.Exception: _dynamicwebProduct is not Active. Settings are: {"Product":null,"Id":"29331","LanguageId":null,"VariantId":"","PrimaryVariantId":"","EmbeddedInModelList":false}
at Co3.Espresso.Website.Models.FrontEnd.Ecommerce.EspressoProduct.Populate(ProductSettings settings) in F:\TeamCity\BuildAgent 1\work\ea1444d680f7414e\Co3.Espresso.Website\Models\FrontEnd\Ecommerce\EspressoProduct.cs:line 755
at Co3.EldoradoIndsalg.Website.Frontend.Models.Frontend.Ecommerce.EldoradoProduct.Populate(ProductSettings settings) in C:\Users\ThomasLarsen\source\repos\co3.eldoradoindsalg\Co3.EldoradoIndsalg.Website.Frontend\Models\Frontend\Ecommerce\EldoradoProduct.cs:line 670
at Co3.Espresso.Website.Services.ProductService.GetEspressoProduct(ProductSettings settings) in F:\TeamCity\BuildAgent 1\work\ea1444d680f7414e\Co3.Espresso.Website\Services\ProductService.cs:line 215
at CompiledRazorTemplates.Dynamic.RazorEngine_94a611c966b44774be23cd7c0edc6c87.<>c.<Execute>b__1_0(LoopItem productLoopItem) in D:\dynamicweb.net\Solutions\eldorado.new.LIVE\Application\Files\Templates\Designs\eldorado-b2b\eCom\Productlist\espresso-with-filters.cshtml:line 106
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at CompiledRazorTemplates.Dynamic.RazorEngine_94a611c966b44774be23cd7c0edc6c87.Execute() in D:\dynamicweb.net\Solutions\eldorado.new.LIVE\Application\Files\Templates\Designs\eldorado-b2b\eCom\Productlist\espresso-with-filters.cshtml:line 105
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 @using System.Collections.Specialized
2 @using System.Net.Http
3 @using System.Text
4 @using Co3.Espresso.Base.Extensions
5 @using Co3.Espresso.Website.Models.FrontEnd
6 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce
7 @using Co3.Espresso.Website.Models.FrontEnd.Handlebars
8 @using Co3.Espresso.Website.Models.FrontEnd.Settings
9 @using Co3.Espresso.Website.Services
10 @using Dynamicweb.Ecommerce.Products
11 @using ProductService = Co3.Espresso.Website.Services.ProductService
12 @using System.Web
13 @using Dynamicweb
14 @using Dynamicweb.Frontend
15 @using Dynamicweb.Indexing.Querying
16 @using Dynamicweb.Modules
17 @using Newtonsoft.Json
18 @using Services = Dynamicweb.Ecommerce.Services
19 @using SortInfo = Dynamicweb.Indexing.Querying.Sorting.SortInfo
20 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module
21 @{
22 bool showFilters = Espresso.Item.FiltersShow == "True";
23 bool showNavigation = Espresso.Item.NavigationShow == "True";
24 bool showHeading = Espresso.Item.HeadingShow == "True";
25 EspressoSort sort = ProductListService.Instance.GetSort();
26 27 28 Properties moduleProperties = PageView.Current()?.CurrentParagraph?.ModuleProperties;
29 string moduleSortBy = sort.By;// GetString( "Ecom:ProductList.SortBy" );
30 string moduleSortOrder = sort.Order;// GetString( "Ecom:ProductList.SortOrder" );
31 32 if ( moduleProperties != null && moduleProperties.Values.ContainsKey("QuerySortByParams") )
33 {
34 IEnumerable< SortInfo > sortInfos = new List< SortInfo >();
35 StringBuilder _moduleSortBy = new StringBuilder();
36 StringBuilder _moduleSortOrder = new StringBuilder();
37 38 if ( moduleProperties.Values[ "QuerySortByParams" ]?.ToString() != "null" )
39 {
40 string querySortByParams = moduleProperties.Values[ "QuerySortByParams" ].ToString().Replace(""", "\"");
41 sortInfos = JsonConvert.DeserializeObject<IEnumerable<SortInfo>>(querySortByParams);
42 } else {
43 IQuery iQuery = new QueryService().LoadQuery( "EspressoProducts", "Products" );
44 sortInfos = iQuery.SortOrder;
45 }
46 47 foreach (SortInfo sortOrder in sortInfos )
48 {
49 _moduleSortBy.AppendLine( sortOrder.Field );
50 _moduleSortOrder.AppendLine( sortOrder.SortDirection.ToString() == "Descending" ? "DESC" : "ASC" );
51 }
52 moduleSortBy = _moduleSortBy.Replace(Environment.NewLine, ",").ToString();
53 moduleSortOrder = _moduleSortOrder.Replace( Environment.NewLine, "," ).ToString();
54 moduleSortBy = moduleSortBy.Substring( 0, moduleSortBy.Length - 1 );
55 moduleSortOrder = moduleSortOrder.Substring( 0, moduleSortOrder.Length - 1 );
56 }
57 58 ClassList asideClasses = new ClassList();
59 ClassList mainClasses = new ClassList();
60 61 if (showNavigation )
62 {
63 asideClasses.AddClasses("col-12 col-lg-3 col-xl-2");
64 mainClasses.AddClasses("col-12 col-lg-9 col-xl-10");
65 }
66 else
67 {
68 asideClasses.AddClasses("d-none");
69 mainClasses.AddClasses("col-12");
70 }
71 72 73 HandlebarsProductListTemplate handlebarsProductListTemplate = HandlebarsService.Instance.GetProductListTemplate( new HandlebarsProductListTemplateSettings
74 {
75 Classes = new ClassList( "w-100 e-productlist js-e-productlist js-e-require" ),
76 HeaderClasses = new ClassList( "col-12" ),
77 MainClasses = mainClasses,
78 AsideClasses = asideClasses,
79 FooterClasses = new ClassList( "col-12 col-lg-3 col-xl-2" ),
80 PageSize = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageSize" ] ) ? GetInteger( "Ecom:ProductList.PageSize" ).ToString() : HttpContext.Current.Request[ "PageSize" ],
81 PageNumber = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageNum" ] ) ? GetInteger( "Ecom:ProductList.CurrentPage" ).ToString() : HttpContext.Current.Request[ "PageNum" ],
82 SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? moduleSortBy : HttpContext.Current.Request[ "SortBy" ],
83 SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? moduleSortOrder : HttpContext.Current.Request[ "SortOrder" ],
84 //SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? sort.By : HttpContext.Current.Request[ "SortBy" ],
85 //SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? sort.Order : HttpContext.Current.Request[ "SortOrder" ],
86 ShowFilters = showFilters,
87 ShowSorting = Espresso.Item.SortShow == "True",
88 Heading = Espresso.Item.HeadingShow == "True" ? Espresso.Item.Name : string.Empty
89 } );
90 91 92 List< EspressoPagingPage > productListPaging = new List< EspressoPagingPage >();
93 if ( GetLoop( "Ecom:ProductList.Pages" ).Count > 0 )
94 {
95 foreach ( LoopItem page in GetLoop( "Ecom:ProductList.Pages" ) )
96 {
97 productListPaging.Add( new EspressoPagingPage
98 {
99 Url = page.GetString( "Ecom:ProductList.Pages.Page.Url" ),
100 Number = page.GetString( "Ecom:ProductList.Pages.Page.Number" )
101 } );
102 }
103 }
104105 List< EspressoProduct > productListProducts = GetLoop( "Products" ).Select(
106 productLoopItem => ProductService.Instance.GetEspressoProduct(
107 new ProductSettings
108 {
109 Id = productLoopItem.GetString( "Ecom:Product.ID" ),
110 VariantId = productLoopItem.GetString( "Ecom:Product.VariantID" ),
111 PrimaryVariantId = productLoopItem.GetString( "Ecom:Product.DefaultVariantComboID" ),
112 EmbeddedInModelList = false
113 }
114 )
115 ).ToList();
116117 EspressoProductList espressoProductList = ProductListService.Instance.GetProductList(
118 new ProductListSettings
119 {
120 Products = productListProducts,
121 Paging = productListPaging,
122 PageSize = Convert.ToInt32( handlebarsProductListTemplate.PageSize ),
123 CurrentPage = Convert.ToInt32( handlebarsProductListTemplate.PageNumber )
124 }
125 );
126127128 HttpContext.Current.Items[ "CurrentGroupID" ] = Values.ContainsKey("Ecom:Group.ID") ? Values[ "Ecom:Group.ID" ] : string.Empty;
129 string groupLink = GetString("Ecom:Group.Link.Clean");
130 string canonicalUrl = SearchEngineFriendlyURLs.GetFriendlyUrl(groupLink);
131 var queryString = Context.Current.Request.QueryString;
132 }
133134 @SnippetStart("ProductGroupCanonical")
135 <link rel="canonical" href="@canonicalUrl" />
136 @SnippetEnd("ProductGroupCanonical")
137138139 @using Co3.Espresso.Base.Extensions
140 @using Co3.Espresso.Base.Models
141 @using Co3.Espresso.Website.Models.FrontEnd
142 @using Co3.Espresso.Website.Models.FrontEnd.Elements
143 @using Co3.Espresso.Website.Models.FrontEnd.Settings
144 @using Co3.Espresso.Website.Services
145 @using Dynamicweb.Content
146 @using Dynamicweb.Content.Data
147 @using Dynamicweb.Core
148 @using Dynamicweb.Ecommerce
149 @using Dynamicweb.Ecommerce.Products
150 @using Dynamicweb.Ecommerce.Shops
151 @using Dynamicweb.Extensibility
152 @using Dynamicweb.Frontend
153 @using Dynamicweb.Security.Permissions
154155156 @{
157 PageView currentPageView = PageView.Current();
158 string areaUrlName = !string.IsNullOrEmpty( currentPageView.Area.UrlName ) ? "/" + currentPageView.Area.UrlName: "";
159160 Group group = Services.ProductGroups.GetGroup(GetString("Ecom:Group.ID"));
161 string groupName = string.Empty;
162 string groupImage = string.Empty;
163 Shop shop = new ShopService().GetShop( PageView.Current().Area.EcomShopId );
164 IEnumerable<Group> productGroupsPath = new List< Group >();
165 List<dynamic> breadCrumbCollection = new List< dynamic >();
166 string pageId = PageView.Current().Page.ID.ToString();
167168 if (group != null)
169 {
170 groupName = group.Name;
171 groupImage = !string.IsNullOrEmpty( group.LargeImage ) ? group.LargeImage : group.ParentGroups.Count > 0 ? group.ParentGroups.FirstOrDefault()?.LargeImage : string.Empty;
172 productGroupsPath = Services.ProductGroups.FindPath(shop, group );
173 }
174175176 foreach (ElementWithIndex< Group > _group in productGroupsPath.WithIndex() )
177 {
178 string _link = string.Format("/Default.aspx?ID={0}&GroupID={1}", pageId, _group.Element.Id);
179 breadCrumbCollection.Add( new
180 {
181 index = _group.Index,
182 link = _link,
183 label = _group.Element.Name
184 });
185 }
186187 ClassList sectionClasses = new ClassList();
188189190 string hideHeaderClass = "";
191 if ( Espresso.Item.HeadingShow == "False" )
192 {
193 hideHeaderClass = "d-none";
194 }
195 else
196 {
197 if(!string.IsNullOrEmpty(groupName) ) {
198 sectionClasses.AddClasses("e-section d-flex align-items-center eldorado-productlist-header");
199200 if (!string.IsNullOrEmpty(groupImage) )
201 {
202 groupImage = ImageService.Instance.GetImageURL( $"/Files{groupImage}", 1700, 300, 5, 90 );
203 sectionClasses.AddClasses("e-text-light e-section-height-xs");
204 }
205 else
206 {
207 sectionClasses.AddClasses("mt-5");
208 }
209 }
210 else
211 {
212 sectionClasses.AddClasses("e-section d-flex align-items-center eldorado-productlist-header");
213 }
214 }
215 <script>console.log(@JsonService.Instance.ToJson(Espresso.Item.HeadingShow));</script>
216 }
217218 @RenderingService.Instance.SectionEnd()
219220 @if ( ( bool )Espresso.Page.Item[ "HeaderHide" ] == false )
221 {
222 <section class="@sectionClasses @hideHeaderClass" style="background-image: url('@(groupImage)')">
223 <div class="container-fluid">
224 <div class="row">
225 <div class="col-12 col-md-12 col-lg-12 mx-auto">
226 <div class="row">
227228 <div class="p p-imagetext p-imagetext-tb col-12" >
229 <div class="row">
230 <div class="p-txt-container col-12">
231 <h2 class="mb-0">
232 @groupName
233 </h2>
234 </div>
235 </div>
236 </div>
237238 </div>
239 </div>
240 </div>
241 </div>
242 </section>
243 }
244 else
245 {
246 <a class="position-relative nav-link js-e-require" data-require="cart" href="@areaUrlName/shop/cart"></a>
247 }
248249250 <section class="p p-section e-section js-e-section pt-1 ">
251 <div class="container-fluid">
252 <div class="row">
253 <div class="col-12 mx-auto">
254 <div class="row">
255 <div class="p p-imagetext p-imagetext-tb col-12">
256257 <nav class="e-breadcrumb-container @hideHeaderClass">
258 <ol class="breadcrumb nav p-0" itemscope itemtype="https://schema.org/BreadcrumbList">
259 <li class="breadcrumb-item">
260 <a href="/">
261 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( PageView.Current().Area.ID ).MenuText
262 </a>
263 </li>
264 @foreach (dynamic breadCrumbItem in breadCrumbCollection.OrderBy(bcc => bcc.index) )
265 {
266 <li class="breadcrumb-item">
267 <a href="@breadCrumbItem.link">
268 @breadCrumbItem.label
269 </a>
270 </li>
271 }
272 </ol>
273 </nav>
274275276277278279280 <div class="@handlebarsProductListTemplate.Classes" data-current-page="@GetInteger( "Ecom:ProductList.CurrentPage" )" data-page-count="@GetLoop( "Ecom:ProductList.Pages" ).Count" data-page-size="@handlebarsProductListTemplate.PageSize" data-products-url="@Espresso.Item.ProductsUrl" data-filters-url="@Espresso.Item.ProductsUrl" data-require="productlist">
281 <div class="row">
282 <div class="col-12">
283 @RenderingService.Instance.PartialView( "ecom/productlist/partials/header.cshtml", handlebarsProductListTemplate )
284 </div>
285286 <div class="@handlebarsProductListTemplate.AsideClasses">
287288 <div class="d-lg-block d-none">
289 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters-navigation.cshtml", Espresso )
290 </div>
291292 @{
293294 if (Values.ContainsKey("Ecom:Group.ID") )
295 {
296 Group productGroup = Services.ProductGroups.GetGroup( Values[ "Ecom:Group.ID" ]?.ToString() );
297 if ( productGroup != null )
298 {
299 string productListSidebarContentPage = productGroup.GetProductGroupFieldValue< string >( "ProductListSidebarContentPage" );
300 if ( !string.IsNullOrEmpty( productListSidebarContentPage ) )
301 {
302 int.TryParse( productListSidebarContentPage.Split( new[] { "=" }, StringSplitOptions.RemoveEmptyEntries ).Last(), out int productListSidebarContentPageID );
303 if ( productListSidebarContentPageID > 0 )
304 {
305 <div class="mt-3">
306 @RenderPageContent( productListSidebarContentPageID )
307 </div>
308 }
309 }
310 }
311 }
312 }
313314 </div>
315316 <div class="@handlebarsProductListTemplate.MainClasses">
317 <form class="js-e-productlist-form">
318 <input name="PageNum" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageNumber )">
319 <input name="SortBy" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortBy )">
320 <input name="SortOrder" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortOrder )">
321 <input name="PageSize" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageSize )">
322323 @{
324 NameValueCollection urlParams = Dynamicweb.Context.Current.Request.QueryString;
325 List< string > paramsToIgnore = new List< string >() { "PageNum", "SortBy", "SortOrder" };
326327 if ( handlebarsProductListTemplate.ShowFilters )
328 {
329 foreach ( LoopItem facetGroup in GetLoop( "FacetGroups" ) )
330 {
331 <input name="fg" type="hidden" value="@facetGroup.GetString( "FacetGroup.Name" )">
332 }
333 }
334335 foreach ( LoopItem queryParameter in GetLoop( "Query.Parameters" ) )
336 {
337 if ( string.IsNullOrEmpty( queryParameter.GetString( "Parameter.Value" ) ) == false )
338 {
339 if ( queryParameter.GetBoolean( "Parameter.IsHandledAsFacet" ) == false && queryParameter.GetString( "Parameter.Name" ) != "q" )
340 {
341 string dataAttrExcludeInUrlValue = "true";
342 if ( urlParams[ queryParameter.GetString( "Parameter.Name" ) ] != null )
343 {
344 dataAttrExcludeInUrlValue = string.Empty;
345 paramsToIgnore.Add( queryParameter.GetString( "Parameter.Name" ) );
346 }
347348 <input name="@queryParameter.GetString( "Parameter.Name" )" type="hidden" value="@HttpUtility.HtmlAttributeEncode( queryParameter.GetString( "Parameter.Value" ) )" data-excludeinurl="@dataAttrExcludeInUrlValue">
349 }
350 }
351 }
352353 foreach ( object urlParam in urlParams)
354 {
355 if ( !paramsToIgnore.Contains(urlParam.ToString()) && !paramsToIgnore.Contains(urlParam.ToString()))
356 {
357 <input name="@urlParam.ToString()" type="hidden" value="@HttpUtility.HtmlAttributeEncode( urlParams[urlParam.ToString()] )">
358 }
359 }
360 }
361362363 @{
364 Uri urlReferrer = HttpContext.Current.Request.UrlReferrer;
365 string urlBack = "/";
366 if (urlReferrer != null )
367 {
368 urlBack = urlReferrer.LocalPath;
369 }
370 }
371372 @if ( (bool)Espresso.Page.Item["HeaderHide"] )
373 {
374 <a class="btn btn-sm btn-secondary mb-3 align-self-center js-e-back-link order-first arrow-left" href="@urlBack"><i class="material-icons material-icons-large d-none">arrow_back</i>Tilbage
375 </a>
376 }
377378 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters-search.cshtml", Espresso )
379380381 @RenderingService.Instance.PartialView( "ecom/productlist/partials/horizontal-filters.cshtml", Espresso )
382 </form>
383 @RenderingService.Instance.PartialView( "ecom/productlist/partials/products.cshtml", espressoProductList )
384 @RenderingService.Instance.PartialView( "ecom/productlist/partials/paging.cshtml", espressoProductList )
385 @RenderingService.Instance.PartialView( "ecom/productlist/partials/footer.cshtml", handlebarsProductListTemplate )
386 </div>
387 </div>
388 </div>
389