Menü schließen 
             
        
        
            
                
                    
                         
                     
                 
                Menü schließen 
             
        
     
    
    
        
            ... 
                / 
                Produktspezifikationen 
                / 
                Una Brick 
         
Error executing template "Designs/Ege/Paragraph/CollectionSpecificationPartials/Details_Data.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_a09f889c656e49e79ba20acc86fd0fcb.Execute() in E:\Solutions\egecarpets.dk\Files\Templates\Designs\Ege\Paragraph\CollectionSpecificationPartials\Details_Data.cshtml:line 11
   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 ViewModelTemplate<ProductViewModel>
  2      @using Dynamicweb.Rendering
  3      @using Dynamicweb.Ecommerce.ProductCatalog
  4      @using Dynamicweb.Frontend
  5      @using EGE.Website.CustomModules.Extensions
  6      @using EGE.Website.CustomModules
  7      @using Dynamicweb.Ecommerce.Variants;
  8      
  9      @{
 10          var product = Dynamicweb.Ecommerce.Services.Products.GetProductById(Model.Id, Model.VariantId, Model.LanguageId);
 11          var variantCombinations = product.VariantCombinations;
 12          var variantGroups = product.VariantGroups;
 13          var qualityVariants = variantGroups.SingleOrDefault(x => x.Id == "VARGRP3");
 14          var backingVariants = variantGroups.SingleOrDefault(x => x.Id == "VARGRP2");
 15          var sampleVariants = variantGroups.SingleOrDefault(x => x.Id == "VARGRP4");
 16          var relatedSamples = Model.GetRelatedGroupById("RELGRP1");
 17          var keyDictionary = new Dictionary<string, int>();
 18          var keyValue = 0;
 19          var architectFolders = Model.GetRelatedGroupByIdOfDefaultGroupInMasterLang("RELGRP3");
 20      }
 21      
 22      <script>
 23          var languageId = "@Model.LanguageId";
 24          var languageCode = "@Pageview.Area.EcomCountryCode";
 25          var architectFolderItems = [
 26              @foreach (var folder in architectFolders)
 27              {
 28                  @:{
 29                      @:"preTitle": "@folder.Name",
 30                      @:"title": "@folder.Name",
 31                      @:"id": "@folder.Id",
 32                      @:"imagePath": "@(ProductExtensions.GetProductImagePath(folder.Id, out bool isExternal))"
 33                  @:},
 34              }
 35          ];
 36      
 37          var listJsonSampleSizeItems = [
 38          @if (sampleVariants != null)
 39          {
 40              foreach (var sample in sampleVariants.GetVariantOptions(Model.Id))
 41              {
 42                  keyDictionary.Add(sample.Id, keyValue);
 43                  if (sample != null)
 44                  {
 45                      @:{
 46                          @:"preTitle": "@sample.Name",
 47                          @:"title": "@sample.Name",
 48                          @:"id": @keyValue,
 49                          @:"variantId": "@sample.Id"
 50                      @:}
 51                      if (sample != sampleVariants.GetVariantOptions(Model.Id).Last())
 52                      {
 53                          @:,
 54                      }
 55                      keyValue++;
 56                  }
 57              }
 58          }
 59          ];
 60      
 61          var listJsonQualityItems = [
 62              @{
 63                  var qualityVariantOptions = new List<Dynamicweb.Ecommerce.Variants.VariantOption>();
 64                  var isCollectionQuality = false;
 65              }
 66          @if (qualityVariants != null)
 67          {
 68              qualityVariantOptions = qualityVariants.GetVariantOptions(Model.Id).ToList();
 69          }
 70          else
 71          {
 72              var collectionCode = product.GetFieldValue<string>("ProductCollectionCode").TrimStart(new char[] { '0' });
 73      
 74              if (!string.IsNullOrEmpty(collectionCode))
 75              {
 76                  isCollectionQuality = true;
 77      
 78                  var qualOption = new Dynamicweb.Ecommerce.Variants.VariantOption
 79                  {
 80                      Id = product.Number,
 81                      MediumImage = collectionCode,
 82                      LanguageId = product.LanguageId
 83                  };
 84                  qualityVariantOptions.Add(qualOption);
 85              }
 86          }
 87          @foreach (var quality in qualityVariantOptions)
 88          {
 89              keyDictionary.Add(quality.Id, keyValue);
 90              if (quality != null)
 91              {
 92                  var prod = Dynamicweb.Ecommerce.Services.Products.GetProductByNumber(quality.Id, quality.LanguageId);
 93                  // Fallback to main product if it is not a configurable product
 94                  if (qualityVariants == null)
 95                  {
 96                      prod = product;
 97                  }
 98                  // If the quality is not active in back office it should not be rendered
 99                  if (!prod.IsActive)
100                  {
101                      continue;
102                  }
103      
104                  var productDefinedTitle = ProductExtensions.GetValueForVariantSpecField(prod, "QualityVariantTitle");
105                  var variantTitle = "";
106                  var variantImageUrl = (Constants.VariantImagePath + quality.MediumImage + ".jpg");
107                  if (!string.IsNullOrWhiteSpace(productDefinedTitle))
108                  {
109                      variantTitle = productDefinedTitle;
110                      var productDefinedImage = ProductExtensions.GetValueForVariantSpecField(prod, "QualityVariantImage");
111                      if (!string.IsNullOrWhiteSpace(productDefinedImage))
112                      {
113                          variantImageUrl = productDefinedImage.Replace("..", "/Files");
114                      }
115                  }
116                  else if (isCollectionQuality && !string.IsNullOrEmpty(prod.PrimaryGroupId))
117                  {
118                      var primaryGroup = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(prod.PrimaryGroupId, prod.LanguageId);
119                      variantTitle = primaryGroup.GetFieldValue<string>("M3GroupName");
120                  }
121                  else
122                  {
123                      variantTitle = quality.Name;
124      
125                  }
126                      @:{
127                          @:"preTitle": "@variantTitle",
128                          @:"title": "@variantTitle",
129                          @:"id": @keyValue,
130                          @:"variantId": "@quality.Id",
131                          @:"forceSelect": @isCollectionQuality.ToString().ToLower(),
132                          @:"toolTip": {
133                              @:"title": "@variantTitle",
134                              @:"text": [{
135                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F1Title")",
136                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F1Text")",
137                                  @:"link": "@SearchEngineFriendlyURLs.GetFriendlyUrl(ProductExtensions.GetValueForVariantSpecField(prod, "F1Link"))"
138                              @:},
139                              @:{
140                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F2Title")",
141                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F2Text")"
142                              @:},
143                              @:{
144                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F3Title")",
145                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F3Text")"
146                              @:},
147                              @:{
148                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F4Title")",
149                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F4Text")"
150                              @:},
151                              @:{
152                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F5Title")",
153                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F5Text")"
154                              @:},
155                              @:{
156                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F6Title")",
157                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F6Text")"
158                              @:}
159                              @:],
160                              @:"paragraph": {
161                                  @:"title": "@ProductExtensions.GetValueForVariantSpecField(prod, "DescriptionTitle")",
162                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "SpecDescriptionText")"
163                              @:},
164                              @:"link": "@SearchEngineFriendlyURLs.GetFriendlyUrl(ProductExtensions.GetValueForVariantSpecField(prod, "F8Link"))",
165                              @:"linkText": "@ProductExtensions.GetValueForVariantSpecField(prod, "F8Title")",
166                              @:"imageUrl": "@variantImageUrl"
167                          @:}
168                      @:}
169                      if (qualityVariants != null && quality != qualityVariantOptions.Last())
170                  {
171                          @:,
172                      }
173                      keyValue++;
174                  }
175          }
176          ];
177      
178          var listJsonBackingItems = [
179              @{
180                  var forceSelectBacking = false;
181                  IList<VariantOption> backingVariantOptions = new List<VariantOption>();
182                  if (backingVariants == null)
183                  {
184                      var backingCode = product.GetFieldValue<string>("ProductBacking");
185                      if (!string.IsNullOrEmpty(backingCode))
186                      {
187                          var backingOption = new Dynamicweb.Ecommerce.Variants.VariantOption
188                          {
189                              Id = backingCode,
190                              MediumImage = backingCode,
191                              LanguageId = product.LanguageId
192                          };
193                          backingVariantOptions.Add(backingOption);
194                          forceSelectBacking = true;
195                      }
196                  }
197                  else
198                  {
199                      backingVariantOptions = backingVariants.GetVariantOptions(Model.Id);
200                  }
201              }
202          @if (backingVariantOptions.Any())
203          {
204              foreach (var backing in backingVariantOptions)
205              {
206                  keyDictionary.Add(backing.Id, keyValue);
207                  var prod = Dynamicweb.Ecommerce.Services.Products.GetProductByNumber(backing.Id, backing.LanguageId);
208      
209                  if (backing != null && prod != null && prod.Active)
210                  {
211                      var variantTitle = ProductExtensions.GetProductName(prod);
212                      @:{
213                          @:"preTitle": "@ProductExtensions.GetCustomFieldValue(prod, "M3ProductName")",
214                          @:"title": "@variantTitle",
215                          @:"id": @keyValue,
216                          @:"variantId": "@backing.Id",
217                          @:"forceSelect": @forceSelectBacking.ToString().ToLower(),
218                          @:"toolTip": {
219                              @:"title": "@variantTitle",
220                              @:"text": [{
221                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F1Title")",
222                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F1Text")",
223                                  @:"link": "@SearchEngineFriendlyURLs.GetFriendlyUrl(ProductExtensions.GetValueForVariantSpecField(prod, "F1Link"))"
224                              @:},
225                              @:{
226                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F2Title")",
227                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F2Text")"
228                              @:},
229                              @:{
230                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F3Title")",
231                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F3Text")"
232                              @:},
233                              @:{
234                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F4Title")",
235                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F4Text")"
236                              @:},
237                              @:{
238                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F5Title")",
239                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F5Text")"
240                              @:},
241                              @:{
242                                  @:"subtitle": "@ProductExtensions.GetValueForVariantSpecField(prod, "F6Title")",
243                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "F6Text")"
244                              @:}
245                              @:],
246                              @:"paragraph": {
247                                  @:"title": "@ProductExtensions.GetValueForVariantSpecField(prod, "DescriptionTitle")",
248                                  @:"text": "@ProductExtensions.GetValueForVariantSpecField(prod, "SpecDescriptionText")"
249                              @:},
250                              @:"link": "@SearchEngineFriendlyURLs.GetFriendlyUrl(ProductExtensions.GetValueForVariantSpecField(prod, "F8Link"))",
251                              @:"linkText": "@ProductExtensions.GetValueForVariantSpecField(prod, "F8Title")",
252                              @:"imageUrl": "@(Constants.VariantImagePath + backing.MediumImage + ".jpg")"
253                          @:}
254                      @:}
255                      if (backing != backingVariantOptions.Last())
256                      {
257                          @:,
258                      }
259                      keyValue++;
260                      }
261                  }
262          }
263          ];
264      
265          @if (!variantGroups.Any())
266          {
267              int countRelated = 0;
268              @:var relatedSamples = [
269                  foreach (var sample in relatedSamples)
270                  {
271                      @:{
272                          @:"preTitle": "@sample.Id",
273                          @:"title": "@sample.Name",
274                          @:"variantId": "@sample.Id",
275                          @:"id": @countRelated,
276                          @:"imageUrl": "@ProductExtensions.GetProductImagePath(sample.Id, out bool isExternal, "XS")"
277                      @:}
278                      if (sample != relatedSamples.Last())
279                      {
280                          @:,
281                      }
282                      countRelated++;
283                  }
284              @:];
285          }
286      
287          var variantCombinations = [
288              @if (variantCombinations.Any())
289              {
290                  foreach (var variantCombination in variantCombinations)
291                  {
292                      var variants = variantCombination.GetVariantOptionIds();
293                      if (variants.Any())
294                      {
295                          @:{
296                              @:"qualityId": @keyDictionary[variants[0]],
297                              @:"sampleSizeId": @(variants.Length >= 2 ? keyDictionary[variants[1]] : 0),
298                              @:"backingId": @(variants.Length >= 3 ? keyDictionary[variants[2]] : 0)
299                          @:}
300                      }
301                      if (variantCombination != variantCombinations.Last())
302                      {
303                          @:,
304                      }
305                  }
306              }
307          ];
308          var combinations = [
309              @foreach (var variantCombination in variantCombinations)
310              {
311                  var variants = variantCombination.GetVariantOptionIds();
312                  if (variants.Any(x => x == "NA"))
313                  {
314                      continue;
315                  }
316                  if (variants.Any() && variants.Length > 2)
317                  {
318                      int qualityId;
319                      int sampleSizeId;
320                      int backingId;
321                      @:{
322                          if (keyDictionary.TryGetValue(variants[0], out qualityId))
323                          {
324                              @:"qualityId": @qualityId,
325                          }
326                          if (keyDictionary.TryGetValue(variants[1], out sampleSizeId))
327                          {
328                              @:"sampleSizeId": @sampleSizeId,
329                          }
330                          if (keyDictionary.TryGetValue(variants[2], out backingId))
331                          {
332                              @:"backingId": @backingId
333                          }
334                      @:}
335                  }
336                  if (variantCombination != variantCombinations.Last())
337                  {
338                      @:,
339                  }
340              }
341          ];
342      
343      </script>
 
    
        
            
                
                    
                        
                            
                            
                                
                                    
                                        
                                            
                                                Qualität wählen
                                             
                                            
                                                Gewählt: 
                                                    {{selectedQuality.title}}
                                                 
                                             
                                        
                                        
                                            
                                                
                                                     
                                                    
                                                         
                                                     
                                                    
                                                        
                                                         
                                                     
                                                 
                                                {{item.title}}
                                             
                                         
                                     
                                 
                             
                            
                                
                                    
                                        
                                            
Wählen Sie die Teppichrücken 
                                            
                                                Gewählt: {{selectedBacking.title}} 
                                             
                                        
                                        
                                            
                                                
                                                     
                                                    
                                                         
                                                     
                                                    
                                                        
                                                         
                                                     
                                                 
                                                {{item.title}}
                                             
                                         
                                     
                                 
                                
                                    
                                        
                                            
Wählen Sie die Stichprobengröße 
                                            
                                                Gewählt: {{selectedSize.title}} 
                                             
                                        
                                        
                                        Nachdem Sie die Qualität und einen Rücken ausgesucht haben, werden hier die verfügbaren Probengrößen angezeigt.
                                     
                                 
                             
                            
                                Zurücksetzen 
                                
                                    
                                        Sie müssen jeweils eine Variante auswählen: Qualität, Rücken und Probengröße.
                                     
                                    
                                         
                                         
                                         
                                         
                                     
                                    
                                        
                                            
                                                 
                                             
                                         
                                        
                                            Bestellen 
                                            Save 
                                         
                                     
                                 
                            
                         
                        
                            
                                
                                    
                                         
                                     
                                 
                                Schließen 
                             
                        
                     
                 
             
         
     
    
        
            
                
                    
                        
                            
                            
                                
                                    
                                        
                                            
                                                Muster auswählen
                                             
                                            
                                                Gewählt: 
                                                    {{selectedRelated.title}}
                                                 
                                             
                                        
                                        
                                            
                                                
                                                     
                                                    
                                                         
                                                     
                                                    
                                                        
                                                         
                                                     
                                                 
                                                {{item.title}}
                                             
                                         
                                     
                                 
                             
                            
                                    Zurücksetzen 
                                
                                    Sie müssen eins jeder Variante auswählen. 
                                    
                                         
                                         
                                         
                                         
                                     
                                    
                                        
                                            
                                                 
                                             
                                         
                                        
                                            Bestellen 
                                            Save 
                                         
                                     
                                 
                            
                         
                        
                            
                                
                                    
                                         
                                     
                                 
                                Schließen 
                             
                        
                     
                 
             
         
     Error executing template "Designs/Ege/Paragraph/CollectionSpecificationPartials/Details_OutletData.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Ecommerce.Products.ProductService.GetProductsAndVariantsByProduct(Product product)
   at CompiledRazorTemplates.Dynamic.RazorEngine_fa77ed3c2a2548c0b77794b943ecd795.Execute() in E:\Solutions\egecarpets.dk\Files\Templates\Designs\Ege\Paragraph\CollectionSpecificationPartials\Details_OutletData.cshtml:line 12
   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 ViewModelTemplate<ProductViewModel>
  2      @using Dynamicweb.Rendering
  3      @using Dynamicweb.Ecommerce.ProductCatalog
  4      @using Dynamicweb.Ecommerce.Prices
  5      @using Dynamicweb.Frontend
  6      @using EGE.Website.CustomModules.Extensions
  7      @using EGE.Website.CustomModules
  8      @using Dynamicweb.Ecommerce.Variants;
  9      
 10      @{
 11          var product = Dynamicweb.Ecommerce.Services.Products.GetProductById(Model.Id, Model.VariantId, Model.LanguageId);
 12          var productVariants = Dynamicweb.Ecommerce.Services.Products.GetProductsAndVariantsByProduct(product).Where(x => !string.IsNullOrEmpty(x.VariantId) && x.Active);
 13      
 14          var productVariantObjects = productVariants.Select(x => new
 15          {
 16              Id = x.Id,
 17              VariantId = x.VariantId,
 18              ProductNumber = x.Number,
 19              M3ProductNumber = x.GetCategoryValue("OutletSpecs", "M3ProductNumber"),
 20              M3BatchNumber = x.GetCategoryValue("OutletSpecs", "M3BatchNumber"),
 21              M3Version = x.GetCategoryValue("OutletSpecs", "Version"),
 22              AvailableArea = x.GetCategoryValue("OutletSpecs", "AvailableArea"),
 23              RollCorners = x.GetCategoryValue("OutletSpecs", "RollCorners"),
 24              NumberOfFlaws = x.GetCategoryValue("OutletSpecs", "NumberOfFlaws"),
 25              IsWasteCarpet = x.GetCategoryValue("OutletSpecs", "WasteCarpet"),
 26              Backing = product.GetFieldValue<string>("ProductBacking"),
 27              PatternNumber = x.GetCategoryValue("OutletSpecs", "PatternNumber"),
 28              UnitPrice = Dynamicweb.Ecommerce.Prices.Price.GetPrices(x.Id, Dynamicweb.Ecommerce.Common.Context.Currency.Code, $"{x.GetCategoryValue("OutletSpecs", "M3ProductNumber")}-{x.GetCategoryValue("OutletSpecs", "M3BatchNumber")}-UNIT{Dynamicweb.Ecommerce.Common.Context.Currency.Code}")?.FirstOrDefault()?.Amount,
 29              Price = x.GetPrice(new PriceContext(Dynamicweb.Ecommerce.Common.Context.Currency, Dynamicweb.Ecommerce.Common.Context.Country)).Price,
 30              CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code
 31          }).ToList();
 32      }
 33      
 34      <script>
 35          var productVariantObjects = {"productVariantOptions": @Newtonsoft.Json.JsonConvert.SerializeObject(productVariantObjects)};
 36      </script>
 
    
        
            
                
                    
                        
                            Vielen Dank für Ihre Anfrage! 
                            
                                Wir bereiten Ihr digitales Datenpaket vor. Sie erhalten in Kürze Ihren persönlichen Download-Link per E-Mail.    
                                In der Zwischenzeit können Sie kostenlos physische Muster aus Ihrer Konfiguration auswählen und bestellen. Wir senden Ihnen diese gerne zu.
                            
                         
                        
                            {{ title }} 
                            
                                 
                                 
                                 
                                 
                             
                            
                                 
                                
                                 
                                
                                    Angepasst
                                    {{ carpet.name }} 
                                    {{ carpet.product }} 
                                 
                                
                                    
                                        Qualität: {{carpet.sampleInfo.quality.title}} 
                                        Teppichrücken: {{carpet.sampleInfo.backing.title}} 
                                        Grösse: {{carpet.sampleInfo.size.title}} 
                                        Muster: {{carpet.sampleInfo.selectedRelated.title}} 
                                    
                                    
                                        Bearb. 
                                        
                                            
                                                 
                                             
                                         
                                    
                                 
                             
                            Es tut uns leid, wir konnten keine Daten von einem oder mehreren der Produkte abrufen.
                         
                     
                    
                    
                        
                            
                                Bitte wählen Sie ein oder mehrere Muster aus, um sie in den Warenkorb zu legen.
                             
                            
                                 
                                 
                                 
                                 
                             
                            
                                
                                    
                                         
                                     
                                 
                                Zum Warenkorb hinzufügen 
                             
                         
                    
                    
                        
                            
                                
                                     
                                 
                             
                            Schließen 
                         
                    
                 
             
         
     
 
Error executing template "Designs/Ege/Paragraph/CollectionSpecificationPartials/Details_SpecificationsAndHighlights.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_f7eac835eb9a4a0584aee0efb855c072.Execute() in E:\Solutions\egecarpets.dk\Files\Templates\Designs\Ege\Paragraph\CollectionSpecificationPartials\Details_SpecificationsAndHighlights.cshtml:line 11
   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 ViewModelTemplate<ProductViewModel>
  2      @using Dynamicweb.Rendering
  3      @using Dynamicweb.Ecommerce.ProductCatalog
  4      @using EGE.Website.CustomModules
  5      @using EGE.Website.CustomModules.Extensions
  6      @using EGE.Website.CustomModules.Helpers
  7      @using EGE.Website.CustomModules.ViewModels
  8      
  9      @{
 10          var product = Dynamicweb.Ecommerce.Services.Products.GetProductById(Model.Id, Model.VariantId, Model.LanguageId);
 11          var variantCombinations = product.VariantCombinations;
 12          string specificationCode;
 13          string backingCode;
 14          string qualityId;
 15          string conceptCode = product.GetFieldValue<string>("ProductConcept");
 16          var CurrentLang = Dynamicweb.Frontend.PageView.Current().Area.CultureInfo.Parent.NativeName.ToLower();
 17          byte[] tempBytes = System.Text.Encoding.GetEncoding("ISO-8859-8").GetBytes(CurrentLang);
 18          CurrentLang = System.Text.Encoding.UTF8.GetString(tempBytes);
 19      
 20      
 21          if (variantCombinations.Any())
 22          {
 23              var defaultVariantCombination = variantCombinations.First();
 24              var defaultVariantCombinationIds = defaultVariantCombination.GetVariantOptionIds();
 25              qualityId = defaultVariantCombinationIds[0];
 26      
 27              var qualityVariantOption = Dynamicweb.Ecommerce.Services.VariantOptions.GetVariantOption(qualityId, Model.LanguageId);
 28              specificationCode = EGE.Website.CustomModules.Services.VariantService.GetPropertyValue("SpecificationCode", qualityVariantOption.Id, Model.LanguageId);
 29              backingCode = defaultVariantCombinationIds[2];
 30          }
 31          else
 32          {
 33              qualityId = string.Empty;
 34              specificationCode = Model.GetFieldValue<string>("ProductSpecificationCode");
 35              backingCode = Model.GetFieldValue<string>("ProductBacking");
 36          }
 37      
 38          var specificationsFeed = Dynamicweb.Services.Pages.GetPageByNavigationTag(Pageview.AreaID, Constants.SpecificationsFeedNavigationTag);
 39          var highlightsFeed = Dynamicweb.Services.Pages.GetPageByNavigationTag(Pageview.AreaID, Constants.HighlightsFeedNavigationTag);
 40      
 41          SpecificationHighlightsViewModel highlightsViewModel = null;
 42          SpecificationsViewModel specificationsViewModel = null;
 43      
 44          var specFound = false;
 45          if (!string.IsNullOrWhiteSpace(specificationCode) && !string.IsNullOrWhiteSpace(backingCode))
 46          {
 47              var specificationsContainer = EGE.Specification.SpecificationContainer.Instance;
 48              var specifications = specificationsContainer.GetSpecification(specificationCode, backingCode, Dynamicweb.Ecommerce.Common.Context.Language.Code2);
 49              if (specifications != null)
 50              {
 51                  specFound = true;
 52                  var highlights = specificationsContainer.GetSpecificationHighlight(specificationCode, backingCode, Dynamicweb.Ecommerce.Common.Context.Language.Code2);
 53                  specificationsViewModel = new EGE.Website.CustomModules.ViewModels.SpecificationsViewModel(specifications);
 54                  highlightsViewModel = new EGE.Website.CustomModules.ViewModels.SpecificationHighlightsViewModel(highlights);
 55              }
 56          }
 57      
 58          var sustainabilityChoices = string.Empty;
 59          bool hideSpecs = false;
 60          bool hideSpecsManually = Pageview.AreaSettings.GetBoolean("HideProductCertificates");
 61      
 62          if (Model.ProductCategories.ContainsKey("CarpetCategory"))
 63          {
 64              var susChoiceList = (Model.ProductCategories["CarpetCategory"].Fields["PdfSustainBlocks"]?.Value as List<FieldOptionValueViewModel>);
 65      
 66              foreach (var choice in susChoiceList)
 67              {
 68                  sustainabilityChoices += choice.Value;
 69              }
 70              Boolean.TryParse((Model.ProductCategories["CarpetCategory"].Fields["HideSpecifications"]?.Value)?.ToString(), out hideSpecs);
 71          }
 72      
 73      }
 74      
 75      @if (specFound)
 76      {
 77          if (specificationsFeed == null)
 78          {
 79              <h5>SpecificationsFeed not found. Check Nav-tag.</h5>
 80          }
 81          else if (highlightsFeed == null)
 82          {
 83              <h5>HighlightsFeed not found. Check Nav-tag.</h5>
 84          }
 85          else
 86          {
 87              if (highlightsViewModel != null)
 88              {
 89                  <script>
 90                  var highlightsFeedUrl = '/api/specifications/gethighlights';
 91                  var specificationHighlights = [
 92                      @foreach (var highlightSection in highlightsViewModel.HighlightSections)
 93                      {
 94                          @:{
 95                          @:'title': '@highlightSection.Title',
 96                          @:'specificationLines': [
 97      
 98                          foreach (var highlight in highlightSection.SpecificationLines)
 99                          {
100                              var defaulDocCount = highlight.Documents.Where(x => x.Name.ToLower().Contains(CurrentLang)).Count();
101                              @:{
102                              @:'name': '@highlight.Name',
103                              @:'selectedDocument': {
104                              if(defaulDocCount > 0)
105                              {
106                                      @:'name': "@highlight.Documents.Where(x => x.Name.ToLower().Contains(CurrentLang)).FirstOrDefault().Name",
107                                      @:'link': '@highlight.Documents.Where(x => x.Name.ToLower().Contains(CurrentLang)).FirstOrDefault().Link',
108                              } else
109                              {
110                                  @:'name': "",
111                                  @:'link': '',
112                              }
113      
114                              @:},
115                              @:'documents': [
116                              foreach (var document in highlight.Documents)
117                              {
118                                  if (!string.IsNullOrEmpty(document.Link) && !string.IsNullOrEmpty(document.Name))
119                                  {
120                                      @:{
121                                      @:'name': "@document.Name",
122                                      @:'link': '@document.Link'
123                                      @:},
124                                  }
125                              }
126                              @:]
127                              @:},
128                          }
129                          @:]
130                          @:},
131                      }
132                  ];
133                  </script>
134              }
135      
136              <div class="product-specification-and-highlights" id="js-product-specification-and-highlights">
137                  <section class="product-specs" id="js-product-specs">
138      
139                      <div class="container">
140                          <div class="product-specs__inner">
141                              <div class="row">
142                                  <h1 class="product-specs__title js-alt-color">@Translate("Product details | Specifications | Title", "Product Specifications")</h1>
143                              </div>
144      
145                              <transition name="tooltip-show">
146                                  <div class="product-specs-tool-tip" v-if="toolTip !== null" id="js-product-specs-tool-tip">
147                                      <div class="product-specs-tool-tip__close" @@click="closeToolTip">
148                                          <svg class="icon icon--cross">
149                                              <use xmlns:xlink="http://www.w3.org/1999/xlink"
150                                                   xlink:href="@Constants.DistPath/icons/icons.svg#cross">
151                                              </use>
152                                          </svg>
153                                      </div>
154                                      <figure class="product-specs-tool-tip__image" v-if="toolTip.imageUrl" :alt="toolTip.title">
155                                          <img v-bind:src="toolTip.imageUrl" :alt="toolTip.title">
156                                      </figure>
157                                      <div>
158                                          <div class="product-specs-tool-tip__title">{{toolTip.title}}</div>
159                                          <div class="product-specs-tool-tip__text">
160                                              <div v-for="item in toolTip.text" class="product-specs-tool-tip__lines">
161                                                  <span v-if="item.subtitle" class="product-specs-tool-tip__subtitle">{{item.subtitle}}:</span>
162                                                  <a v-bind:href="item.link" v-if="item.link">
163                                                      <span class="product-specs-tool-tip__speclink">{{item.text}}</span>
164                                                  </a>
165                                                  <span v-else class="product-specs-tool-tip__spec">{{item.text}}</span>
166                                              </div>
167                                              <div class="product-specs-tool-tip__paragraph">
168                                                  <div class="product-specs-tool-tip__subtitle">{{toolTip.paragraph.title}}</div>
169                                                  <span>{{toolTip.paragraph.text}}</span>
170                                              </div>
171                                          </div>
172                                          <a class="product-specs-tool-tip__link" v-bind:href="toolTip.link">{{toolTip.linkText}}</a>
173                                      </div>
174                                  </div>
175                              </transition>
176      
177                              <div class="row">
178                                  <div class="col-xs-12">
179                                      <h2 class="product-specs__subtitle">
180                                          @Translate("Product details | Specifications | Subtitle", "Specifications<br>based on")
181                                      </h2>
182                                  </div>
183                              </div>
184                              <div class="row">
185                                  <div class="col-xs-12 col-md-10 col-md-offset-1">
186                                      <div class="product-specs-info">
187                                          <div id="product-specs-info__name" class="product-specs-info__name">@product.DefaultGroup.Name</div>
188                                          <div class="product-specs-info__item" v-if="selectedQuality != null && selectedQuality != 0">
189                                              <span class="product-specs-info__label">@Translate("Product details | Specifications | Quality", "Quality"):</span>
190                                              {{selectedQuality.preTitle}}
191                                          </div>
192                                          <div class="product-specs-info__item" v-if="selectedBacking != null && selectedBacking != 0">
193                                              <span class="product-specs-info__label">@Translate("Product details | Specifications | Backing", "Backing"):</span>
194                                              {{selectedBacking.preTitle}}
195                                          </div>
196                                      </div>
197                                  </div>
198                              </div>
199                              <div class="row">
200                                  <div class="col-xs-12 col-md-6 col-md-offset-1">
201                                      <div class="product-specs-quality">
202                                          <h3 class="product-specs-quality__title">@Translate("Product details | Specifications | Quality", "Quality")</h3>
203                                          <div class="product-specs-list">
204                                              <div class="product-specs-list-item" v-if="availableOptions.quality"
205                                                   :class="{'product-specs-list-item--selected': selectedQuality === item ,'product-specs-list-item--hide':availableOptions.quality[item.id]===false}"
206                                                   v-for="item in qualityItems">
207                                                  <figure class="product-specs-list-item__image"
208                                                          @@click="selectOption(item,'selectedQuality')">
209                                                      <img :src="item.toolTip.imageUrl" :alt="item.title">
210                                                      <svg class="icon icon--checkmark">
211                                                          <use xmlns:xlink="http://www.w3.org/1999/xlink"
212                                                               xlink:href="@Constants.DistPath/icons/icons.svg#checkmark">
213                                                          </use>
214                                                      </svg>
215                                                  </figure>
216                                                  <div class="product-specs-list-item__title">{{item.title}}</div>
217                                                  <div class="product-specs-list-item__read-more" v-if="item.toolTip"
218                                                       @@click="showToolTip(item.toolTip, $event)">
219                                                      @Translate("Read more", "Read more")
220                                                  </div>
221                                              </div>
222                                          </div>
223                                      </div>
224                                  </div>
225                                  <div class="col-xs-12 col-md-3 col-md-offset-1">
226                                      <div class="product-specs-backing">
227                                          <h3 class="product-specs-backing__title" v-if="Object.keys(backingItems).length !== 0">@Translate("Product details | Specifications | Backing", "Backing")</h3>
228                                          <div class="product-specs-list">
229                                              <div class="product-specs-list-item" v-if="availableOptions.backing"
230                                                   :class="{'product-specs-list-item--selected': selectedBacking === item ,'product-specs-list-item--hide':availableOptions.backing[item.id]===false}"
231                                                   v-for="item in backingItems">
232                                                  <figure class="product-specs-list-item__image"
233                                                          @@click="selectOption(item,'selectedBacking')">
234                                                      <img :src="item.toolTip.imageUrl" alt="">
235                                                      <svg class="icon icon--checkmark">
236                                                          <use xmlns:xlink="http://www.w3.org/1999/xlink"
237                                                               xlink:href="@Constants.DistPath/icons/icons.svg#checkmark">
238                                                          </use>
239                                                      </svg>
240                                                  </figure>
241                                                  <div class="product-specs-list-item__title">{{item.title}}</div>
242                                                  <div class="product-specs-list-item__read-more" v-if="item.toolTip"
243                                                       @@click="showToolTip(item.toolTip, $event)">
244                                                      @Translate("Read more", "Read more")
245                                                  </div>
246                                              </div>
247                                          </div>
248                                      </div>
249                                  </div>
250                              </div>
251                              @if (!hideSpecs)
252                              {
253                                  <div class="product-specs-buttons">
254                                      <div class="button-double product-specs-buttons">
255                                          <form method="post" action="/api/specifications/getpdf">
256                                              <input type="hidden" v-if="selectedBacking != null" name="backingCode" :value="selectedBacking.variantId" />
257                                              <input type="hidden" v-if="selectedBacking != null" name="backingName" :value="selectedBacking.title" />
258                                              <input type="hidden" v-if="selectedQuality != null" name="qualityName" :value="selectedQuality.title" />
259                                              <input type="hidden" name="collectionCode" value="@Model.GetFieldValue("ProductCollectionCode")" />
260      
261                                              @if (variantCombinations.Any())
262                                              {
263                                                  <input type="hidden" v-if="selectedQuality != null" name="qualityId" :value="selectedQuality.variantId" />
264                                              }
265                                              else
266                                              {
267                                                  <input type="hidden" name="specificationCode" value="@specificationCode" />
268                                              }
269                                              <input type="hidden" name="nationalityCode" value="@Dynamicweb.Ecommerce.Common.Context.Language.Code2" />
270                                              <input type="hidden" name="areaId" value="@Pageview.AreaID" />
271                                              <input type="hidden" name="productName" value="@Model.Name" />
272                                              <input type="hidden" name="sustainabilityChoice" value="@sustainabilityChoices" />
273                                              <button type="submit" title="" property="url" class="button button--ghost button--gold" data-text="Download specifications" :class="{ 'button--error':showDownloadFullSpecificationsError }" @@click="downloadFullSpecifications" ref="showFullSpecificationsSubmitButton">
274                                                  <span class="button__error-message">@Translate("Product details | Specifications | View full specifications error message", "Please choose both a quality and backing above to view full specifications")</span>
275                                                  <span class="button__content">
276                                                      <span class="button__icon">
277                                                          <svg class="svg-icon  button__svg">
278                                                              <use xlink:href="@Constants.DistPath/icons/icons.svg#arrow-down-in-circle"></use>
279                                                          </svg>
280                                                      </span>
281                                                      <span class="button__text">
282                                                          @Translate("Product details | Specifications | Download full specifications", "Download full specifications")
283                                                      </span>
284                                                  </span>
285                                              </button>
286                                          </form>
287                                          <button type="button" class="button button--solid button--gold " data-text="@Translate("Product details | Specifications | View full specifications", "View full specifications")" @@click="viewFullSpecs" data-service="@Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(specificationsFeed.ID)" data-highlights-service="@Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(highlightsFeed.ID)" data-specification-code="@specificationCode" :class="{ 'button--error':showFullSpecificationsError }">
288                                              <span class="button__error-message">@Translate("Product details | Specifications | View full specifications error message", "Please choose both a quality and backing above to view full specifications")</span>
289                                              <span class="button__content">
290                                                  <span class="button__icon">
291                                                      <svg class="svg-icon  button__svg">
292                                                          <use xlink:href="@Constants.DistPath/icons/icons.svg#arrow"></use>
293                                                      </svg>
294                                                  </span>
295                                                  <span class="button__text">@Translate("Product details | Specifications | View full specifications", "View full specifications")</span>
296                                              </span>
297                                          </button>
298                                      </div>
299                                  </div>
300                              }
301                          </div>
302                      </div>
303                  </section>
304              
305                  @if (!hideSpecs)
306                  {
307                      
308                      if (specificationsViewModel != null && highlightsViewModel != null)
309                      {
310                          <div id="js-spec-list" class="overlay-template">
311                              @TemplateHelper.RenderPartial("Feeds/SpecificationsFeed.cshtml", specificationsViewModel)
312                          </div>
313      
314                          if (conceptCode != "10" && !hideSpecsManually)
315                          {
316                              <transition name="product-highlights-fade">
317      
318                                  <section class="product-highlights">
319                                      <div class="container">
320                                          <div class="product-highlights__inner">
321                                              <div class="row">
322                                                  <div class="col-xs-12 col-md-2">
323                                                      <h2 class="product-highlights__subtitle">@Translate("Product details | Specifications | Specification highlights", "Specification<br/>highlights")</h2>
324                                                  </div>
325                                                  <div class="col-xs-12 col-md-10">
326                                                      <div class="product-highlights__options">
327                                                          <div v-for="category in specificationHighlights">
328                                                              <h3 class="product-highlights__options-title">{{category.title}}</h3>
329                                                              <div class="product-highlights__options-list">
330                                                                  <div class="product-highlights__options-list-item"
331                                                                       v-for="line in category.specificationLines">
332                                                                      <span class="product-highlights__options-list-item-label">{{line.name}}</span>
333                                                                      <span class="product-highlights__options-list-item-dropdown">
334                                                                          <div class="dropdown dropdown--not-standalone">
335                                                                              <div class="dropdown__header"
336                                                                                   v-bind:class="{ 'dropdown__header-active': line.showDropdown}"
337                                                                                   @@click="toggleDropdown(line)">
338                                                                                  <span class="dropdown__type">
339                                                                                      <span v-if="!line.selectedValue && line.defaultValue">
340                                                                                          {{line.defaultValue.name}}
341                                                                                      </span>
342                                                                                      <span v-if="line.selectedValue">
343                                                                                          {{line.selectedValue.name}}
344                                                                                      </span>
345                                                                                  </span>
346                                                                                  <span class="dropdown__direction">
347                                                                                      <figure class="dropdown__icon"
348                                                                                              v-bind:class="{ 'dropdown__icon-active': line.showDropdown}">
349                                                                                          <svg class="svg-icon  dropdown__icon-arrow">
350                                                                                              <use xlink:href="../../dist/icons/icons.svg#arrow-down-in-circle"></use>
351                                                                                          </svg>
352                                                                                      </figure>
353                                                                                  </span>
354                                                                              </div>
355      
356                                                                              <div class="dropdown__body"
357                                                                                   v-bind:class="{ 'dropdown__body-active': line.showDropdown}"
358                                                                                   v-if="line.showDropdown != undefined">
359                                                                                  <div class="dropdown__body-header"
360                                                                                       v-bind:class="{ 'dropdown__body-header-active': line.showDropdown}"
361                                                                                       @@click="toggleDropdown(line)">
362                                                                                      <span class="dropdown__type dropdown__type-body">
363                                                                                          <span v-if="!line.selectedValue.name">
364                                                                                              {{line.defaultValue.name}}
365                                                                                          </span>
366                                                                                          <span v-if="line.selectedValue.name">
367                                                                                              {{line.selectedValue.name}}
368                                                                                          </span>
369                                                                                      </span>
370                                                                                      <span class="dropdown__direction">
371                                                                                          <figure class="dropdown__icon dropdown_icon"
372                                                                                                  v-bind:class="{ 'dropdown__icon-active': line.showDropdown}">
373                                                                                              <svg class="svg-icon  dropdown__icon-arrow">
374                                                                                                  <use xlink:href="../../dist/icons/icons.svg#arrow-down-in-circle"></use>
375                                                                                              </svg>
376                                                                                          </figure>
377                                                                                      </span>
378                                                                                  </div>
379                                                                                  <hr class="dropdown__body-hr" />
380                                                                                  <div class="dropdown__select-container">
381                                                                                      <div class="dropdown__select-list">
382                                                                                          <div class="dropdown__select-list-item"
383                                                                                               v-for="doc in line.documents"
384                                                                                               @@click="itemListSelected(line,doc)">
385                                                                                              <label class="dropdown__select-label">{{doc.name}}</label>
386                                                                                          </div>
387                                                                                      </div>
388                                                                                  </div>
389                                                                              </div>
390                                                                          </div>
391                                                                          <a v-if="line.selectedValue" :href="line.selectedValue.link" download
392                                                                             class="product-highlights__options-list-item-link">@Translate("Global | Download", "Download")</a>
393                                                                      </span>
394                                                                  </div>
395                                                              </div>
396                                                          </div>
397                                                      </div>
398                                                  </div>
399                                              </div>
400                                          </div>
401                                      </div>
402                                  </section>
403                              </transition>
404                          }
405                      }
406                  }
407              </div>
408          }
409      }
410      else
411      {
412          <p>No specifications found with Backing: <b>@backingCode</b> & <b>Specificationcode: @specificationCode</b></p>
413      }
     
    
        
    
    
        
        
            
                
                
                    
                        
                            
                                
                                     
                                 
                                
                                    
                                        Diese Website unterstützt Ihren aktuellen Internet Explorer Browser nicht
                                    
                                    
                                          
                                    
                                    
                                        Wenn Sie Windows 10 bereits haben, können Sie stattdessen den Microsoft Edge Browser nutzen.
Ansonsten empfehlen wir die Nutzung eines anderen Browsers.