
<pre class='dw-error'>Error compiling template "Designs/Shared/eCom/Productlist/Shared_ProductList_Related_Products_Feed.cshtml"
Line 12: The type or namespace name 'Custom' does not exist in the namespace 'Advania' (are you missing an assembly reference?)
Line 199: The name 'ConfigReader' does not exist in the current context
<hr/>
<div class='source-code'>
<span class='line-number'>  1</span>     // &lt;auto-generated/&gt;
<span class='line-number'>  2</span>     #pragma warning disable 1591
<span class='line-number'>  3</span>     namespace CompiledRazorTemplates.Dynamic
<span class='line-number'>  4</span>     {
<span class='line-number'>  5</span>         #line hidden
<span class='line-number'>  6</span>         using System.Threading.Tasks;
<span class='line-number'>  7</span>         using System;
<span class='line-number'>  8</span>         using System.Collections.Generic;
<span class='line-number'>  9</span>         using System.Linq;
<span class='line-number'> 10</span>         using System.Web;
<span class='line-number'> 11</span>         using Newtonsoft.Json;
<span class='line-number'> 12</span>         using Advania.Custom;
<span class='line-number'> 13</span>         internal class RazorEngine_1a9faf6ce7e948c58bce8e25880e4a11 : Dynamicweb.Rendering.RazorTemplateBase&lt;Dynamicweb.Rendering.RazorTemplateModel&lt;Dynamicweb.Rendering.Template&gt;&gt;
<span class='line-number'> 14</span>         {
<span class='line-number'> 15</span>             #pragma warning disable 1998
<span class='line-number'> 16</span>             public async override global::System.Threading.Tasks.Task ExecuteAsync()
<span class='line-number'> 17</span>             {
<span class='line-number'> 18</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'> 19</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'> 20</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'> 21</span>                   
<span class='line-number'> 22</span>         var root = new List&lt;Product&gt;();
<span class='line-number'> 23</span>     
<span class='line-number'> 24</span>         foreach(var product in GetLoop(&quot;Products&quot;))
<span class='line-number'> 25</span>         {
<span class='line-number'> 26</span>             var productItem = new Product();
<span class='line-number'> 27</span>             productItem.Id = product.GetString(&quot;Ecom:Product.ID&quot;);
<span class='line-number'> 28</span>             productItem.Number = product.GetString(&quot;Ecom:Product.Number&quot;);
<span class='line-number'> 29</span>             productItem.Name = product.GetString(&quot;Ecom:Product.Name&quot;);
<span class='line-number'> 30</span>             productItem.BaseColor = product.GetString(&quot;Ecom:Product:Field.BaseColor.Value&quot;);
<span class='line-number'> 31</span>     
<span class='line-number'> 32</span>             productItem.VariantInfo = new VariantInfo
<span class='line-number'> 33</span>             {
<span class='line-number'> 34</span>                 ProductID = product.GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'> 35</span>                 Stock = product.GetDouble(&quot;Ecom:Product.Stock&quot;),
<span class='line-number'> 36</span>                 Variants = GetVariants(product.GetLoop(&quot;VariantCombinations&quot;)),
<span class='line-number'> 37</span>             };
<span class='line-number'> 38</span>     
<span class='line-number'> 39</span>             var relatedProducts = new List&lt;RelatedProduct&gt;();
<span class='line-number'> 40</span>     
<span class='line-number'> 41</span>             foreach (var group in product.GetLoop(&quot;ProductRelatedGroups&quot;))
<span class='line-number'> 42</span>             {
<span class='line-number'> 43</span>                 var groupName = group.GetString(&quot;Ecom:Product:RelatedGroup.Name&quot;);
<span class='line-number'> 44</span>                 if (groupName == &quot;Annar litur&quot;)
<span class='line-number'> 45</span>                 {
<span class='line-number'> 46</span>                     foreach (var item in group.GetLoop(&quot;Products&quot;))
<span class='line-number'> 47</span>                     {
<span class='line-number'> 48</span>                         var relatedProduct = new RelatedProduct
<span class='line-number'> 49</span>                         {
<span class='line-number'> 50</span>                             Id = item.GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'> 51</span>                             Number = item.GetString(&quot;Ecom:Product.Number&quot;),
<span class='line-number'> 52</span>                             Name = item.GetString(&quot;Ecom:Product.Name&quot;),
<span class='line-number'> 53</span>                             Image = GetImage(item),
<span class='line-number'> 54</span>                             Manufacturer = item.GetString(&quot;Ecom:Manufacturer.Name&quot;),
<span class='line-number'> 55</span>                             BaseColor = item.GetString(&quot;Ecom:Product:Field.BaseColor.Value&quot;),
<span class='line-number'> 56</span>                             StockLevel = item.GetDouble(&quot;Ecom:Product.Stock&quot;),
<span class='line-number'> 57</span>                             SoldOut = item.GetBoolean(&quot;AllVariantsOutOfStock&quot;),
<span class='line-number'> 58</span>                         };
<span class='line-number'> 59</span>     
<span class='line-number'> 60</span>                         var relatedProductPriceWithVAT = normalizePriceString(item.GetString(&quot;Ecom:Product.Price.PriceWithVAT&quot;));
<span class='line-number'> 61</span>                         var relatedProductPriceWithoutVAT = normalizePriceString(item.GetString(&quot;Ecom:Product.Price.PriceWithoutVAT&quot;));
<span class='line-number'> 62</span>                         string relatedPriceToShowWithVAT = relatedProductPriceWithVAT;
<span class='line-number'> 63</span>                         string relatedPriceToShowWithoutVAT = relatedProductPriceWithoutVAT;
<span class='line-number'> 64</span>                         string relatedProductDisplayPriceWithVAT = normalizePriceString(item.GetString(&quot;ProductDisplayPriceWithVAT&quot;));
<span class='line-number'> 65</span>                         string relatedProductDisplayPriceWithoutVAT = normalizePriceString(item.GetString(&quot;ProductDisplayPriceWithoutVAT&quot;));
<span class='line-number'> 66</span>                         double productDiscountPercent = item.GetDouble(&quot;ProductDiscountPercent&quot;);
<span class='line-number'> 67</span>     
<span class='line-number'> 68</span>                         if (!string.IsNullOrWhiteSpace(relatedProductDisplayPriceWithVAT) &amp;&amp; double.Parse(relatedProductDisplayPriceWithVAT) &gt; 0)
<span class='line-number'> 69</span>                         {
<span class='line-number'> 70</span>                             relatedPriceToShowWithVAT = relatedProductDisplayPriceWithVAT;
<span class='line-number'> 71</span>                             relatedPriceToShowWithoutVAT = relatedProductDisplayPriceWithoutVAT;
<span class='line-number'> 72</span>                         }
<span class='line-number'> 73</span>     
<span class='line-number'> 74</span>                         relatedProduct.Price = new Price
<span class='line-number'> 75</span>                         {
<span class='line-number'> 76</span>                             PriceWithoutVat = double.Parse(relatedPriceToShowWithoutVAT),
<span class='line-number'> 77</span>                             PriceWithoutVatFormatted = relatedPriceToShowWithoutVAT,
<span class='line-number'> 78</span>                             PriceWithVat = double.Parse(relatedPriceToShowWithVAT),
<span class='line-number'> 79</span>                             PriceWithVatFormatted = relatedPriceToShowWithVAT,
<span class='line-number'> 80</span>                             CurrencyCode = &quot;KR&quot;,
<span class='line-number'> 81</span>                             DiscountPercent = productDiscountPercent,
<span class='line-number'> 82</span>                         };
<span class='line-number'> 83</span>     
<span class='line-number'> 84</span>                         relatedProduct.PriceBeforeDiscount = new Price
<span class='line-number'> 85</span>                         {
<span class='line-number'> 86</span>                             PriceWithoutVat = double.Parse(relatedProductPriceWithoutVAT),
<span class='line-number'> 87</span>                             PriceWithoutVatFormatted = relatedProductPriceWithoutVAT,
<span class='line-number'> 88</span>                             PriceWithVat = double.Parse(relatedProductPriceWithVAT),
<span class='line-number'> 89</span>                             PriceWithVatFormatted = relatedProductPriceWithVAT,
<span class='line-number'> 90</span>                             CurrencyCode = &quot;KR&quot;,
<span class='line-number'> 91</span>                             DiscountPercent = productDiscountPercent,
<span class='line-number'> 92</span>                         };
<span class='line-number'> 93</span>     
<span class='line-number'> 94</span>                         relatedProduct.VariantInfo = new VariantInfo
<span class='line-number'> 95</span>                         {
<span class='line-number'> 96</span>                             ProductID = item.GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'> 97</span>                             Stock = item.GetDouble(&quot;Ecom:Product.Stock&quot;),
<span class='line-number'> 98</span>                             Variants = GetVariants(item.GetLoop(&quot;VariantCombinations&quot;)),
<span class='line-number'> 99</span>                         };
<span class='line-number'>100</span>     
<span class='line-number'>101</span>                         relatedProducts.Add(relatedProduct);
<span class='line-number'>102</span>                     }
<span class='line-number'>103</span>                 }
<span class='line-number'>104</span>             }
<span class='line-number'>105</span>             productItem.RelatedProducts = relatedProducts;
<span class='line-number'>106</span>             root.Add(productItem);
<span class='line-number'>107</span>         }
<span class='line-number'>108</span>     
<span class='line-number'>109</span>         string jsonFeed = &quot;[]&quot;;
<span class='line-number'>110</span>         jsonFeed = JsonConvert.SerializeObject(root, Formatting.Indented);
<span class='line-number'>111</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'>112</span>                 Write(jsonFeed);
<span class='line-number'>113</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'>114</span>             }
<span class='line-number'>115</span>             #pragma warning restore 1998
<span class='line-number'>116</span>                         
<span class='line-number'>117</span>         public class Product
<span class='line-number'>118</span>         {
<span class='line-number'>119</span>             public string Id { get; set; }
<span class='line-number'>120</span>             public string Number { get; set; }
<span class='line-number'>121</span>             public string Name { get; set; }
<span class='line-number'>122</span>             public string BaseColor { get; set; }
<span class='line-number'>123</span>             public VariantInfo VariantInfo { get; set; }
<span class='line-number'>124</span>             public List&lt;RelatedProduct&gt; RelatedProducts { get; set; }
<span class='line-number'>125</span>         }
<span class='line-number'>126</span>     
<span class='line-number'>127</span>         public class RelatedProduct
<span class='line-number'>128</span>         {
<span class='line-number'>129</span>             public string Id { get; set; }
<span class='line-number'>130</span>             public string Number { get; set; }
<span class='line-number'>131</span>             public string Name { get; set; }
<span class='line-number'>132</span>             public string Image { get; set; }
<span class='line-number'>133</span>             public string Manufacturer { get; set; }
<span class='line-number'>134</span>             public string BaseColor { get; set; }
<span class='line-number'>135</span>             public double StockLevel { get; set; }
<span class='line-number'>136</span>             public bool SoldOut { get; set; }
<span class='line-number'>137</span>             public Price Price { get; set; }
<span class='line-number'>138</span>             public Price PriceBeforeDiscount { get; set; }
<span class='line-number'>139</span>             public VariantInfo VariantInfo { get; set; }
<span class='line-number'>140</span>         }
<span class='line-number'>141</span>     
<span class='line-number'>142</span>         public class Price
<span class='line-number'>143</span>         {
<span class='line-number'>144</span>             public double PriceWithoutVat { get; set; }
<span class='line-number'>145</span>             public string PriceWithoutVatFormatted { get; set; }
<span class='line-number'>146</span>             public double PriceWithVat { get; set; }
<span class='line-number'>147</span>             public string PriceWithVatFormatted { get; set; }
<span class='line-number'>148</span>             public string CurrencyCode { get; set; }
<span class='line-number'>149</span>             public double DiscountPercent { get; set; }
<span class='line-number'>150</span>         }
<span class='line-number'>151</span>     
<span class='line-number'>152</span>         public class VariantInfo
<span class='line-number'>153</span>         {
<span class='line-number'>154</span>             public string ProductID { get; set; }
<span class='line-number'>155</span>             public double Stock { get; set; }
<span class='line-number'>156</span>     
<span class='line-number'>157</span>             [JsonProperty(&quot;VariantInfo&quot;)]
<span class='line-number'>158</span>             public List&lt;Variant&gt; Variants { get; set; }
<span class='line-number'>159</span>         }
<span class='line-number'>160</span>     
<span class='line-number'>161</span>         public class Variant
<span class='line-number'>162</span>         {
<span class='line-number'>163</span>             public string OptionID { get; set; }
<span class='line-number'>164</span>             public string OptionName { get; set; }
<span class='line-number'>165</span>             public string ProductID { get; set; }
<span class='line-number'>166</span>             public double Stock { get; set; }
<span class='line-number'>167</span>         }
<span class='line-number'>168</span>                        
<span class='line-number'>169</span>         public string normalizePriceString(string priceString)
<span class='line-number'>170</span>         {
<span class='line-number'>171</span>             if (string.IsNullOrWhiteSpace(priceString))
<span class='line-number'>172</span>             {
<span class='line-number'>173</span>                 return &quot;0&quot;;
<span class='line-number'>174</span>             }
<span class='line-number'>175</span>             else
<span class='line-number'>176</span>             {
<span class='line-number'>177</span>                 string strippedPriceString = priceString.Replace(&quot;.&quot;, &quot;&quot;);
<span class='line-number'>178</span>                 string fixedPriceString = strippedPriceString.Replace(&quot;,&quot;, &quot;.&quot;);
<span class='line-number'>179</span>                 double priceDouble = double.Parse(fixedPriceString, System.Globalization.CultureInfo.InvariantCulture);
<span class='line-number'>180</span>                 return String.Format(&quot;{0:n0}&quot;, Math.Round(priceDouble));
<span class='line-number'>181</span>             }
<span class='line-number'>182</span>         }
<span class='line-number'>183</span>     
<span class='line-number'>184</span>         public List&lt;Variant&gt; GetVariants(List&lt;LoopItem&gt; variantLoop)
<span class='line-number'>185</span>         {
<span class='line-number'>186</span>             var sizeOrder = new String[] { &quot;XXXS&quot;, &quot;XXS&quot;, &quot;XS&quot;, &quot;S&quot;, &quot;M&quot;, &quot;L&quot;, &quot;XL&quot;, &quot;XXL&quot;, &quot;XXXL&quot; };
<span class='line-number'>187</span>             var variants = new List&lt;Variant&gt;();
<span class='line-number'>188</span>     
<span class='line-number'>189</span>             foreach(var variantCombination in variantLoop)
<span class='line-number'>190</span>             {
<span class='line-number'>191</span>                 var variant = new Variant
<span class='line-number'>192</span>                 {
<span class='line-number'>193</span>                     OptionID = variantCombination.GetString(&quot;Ecom:VariantCombination.VariantID&quot;),
<span class='line-number'>194</span>                     OptionName = variantCombination.GetString(&quot;Ecom:VariantCombination.VariantText&quot;),
<span class='line-number'>195</span>                     ProductID = GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'>196</span>                     Stock = variantCombination.GetDouble(&quot;LiveStock&quot;),
<span class='line-number'>197</span>                 };
<span class='line-number'>198</span>     
<span class='line-number'>199</span>                 if(variant.Stock == 0 &amp;&amp; ConfigReader.IsDevelopment)
<span class='line-number'>200</span>                 {
<span class='line-number'>201</span>                     variant.Stock = variantCombination.GetDouble(&quot;Ecom:VariantCombination.Product.Stock&quot;);
<span class='line-number'>202</span>                 }
<span class='line-number'>203</span>     
<span class='line-number'>204</span>                 variants.Add(variant);
<span class='line-number'>205</span>             }
<span class='line-number'>206</span>     
<span class='line-number'>207</span>             variants = variants.OrderBy(x =&gt; Array.IndexOf(sizeOrder, x.OptionName)).ToList();
<span class='line-number'>208</span>     
<span class='line-number'>209</span>             return variants;
<span class='line-number'>210</span>         }
<span class='line-number'>211</span>     
<span class='line-number'>212</span>         string GetImage(LoopItem product)
<span class='line-number'>213</span>         {
<span class='line-number'>214</span>             var images = new List&lt;string&gt;
<span class='line-number'>215</span>             {
<span class='line-number'>216</span>                 product.GetString(&quot;Ecom:Product.PrimaryImage&quot;),
<span class='line-number'>217</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_1&quot;),
<span class='line-number'>218</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_2&quot;),
<span class='line-number'>219</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_3&quot;),
<span class='line-number'>220</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_4&quot;),
<span class='line-number'>221</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_5&quot;),
<span class='line-number'>222</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_6&quot;),
<span class='line-number'>223</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_7&quot;),
<span class='line-number'>224</span>                 product.GetString(&quot;Ecom:Product.ImageAlt_1.Clean&quot;),
<span class='line-number'>225</span>             };
<span class='line-number'>226</span>     
<span class='line-number'>227</span>             foreach (var item in images)
<span class='line-number'>228</span>             {
<span class='line-number'>229</span>                 if (item.Length &gt; 0)
<span class='line-number'>230</span>                 {
<span class='line-number'>231</span>                     return item;
<span class='line-number'>232</span>                 }
<span class='line-number'>233</span>             }
<span class='line-number'>234</span>     
<span class='line-number'>235</span>             return &quot;&quot;;
<span class='line-number'>236</span>         }
<span class='line-number'>237</span>         }
<span class='line-number'>238</span>     }
<span class='line-number'>239</span>     #pragma warning restore 1591
<span class='line-number'>240</span>     
</div>
<hr/>
<div class='template-code'>
<span class='line-number'>  1</span>     @inherits Dynamicweb.Rendering.RazorTemplateBase&lt;Dynamicweb.Rendering.RazorTemplateModel&lt;Dynamicweb.Rendering.Template&gt;&gt;
<span class='line-number'>  2</span>     @using System.Web;
<span class='line-number'>  3</span>     @using Newtonsoft.Json;
<span class='line-number'>  4</span>     @using Advania.Custom;
<span class='line-number'>  5</span>     
<span class='line-number'>  6</span>     @functions {
<span class='line-number'>  7</span>         public class Product
<span class='line-number'>  8</span>         {
<span class='line-number'>  9</span>             public string Id { get; set; }
<span class='line-number'> 10</span>             public string Number { get; set; }
<span class='line-number'> 11</span>             public string Name { get; set; }
<span class='line-number'> 12</span>             public string BaseColor { get; set; }
<span class='line-number'> 13</span>             public VariantInfo VariantInfo { get; set; }
<span class='line-number'> 14</span>             public List&lt;RelatedProduct&gt; RelatedProducts { get; set; }
<span class='line-number'> 15</span>         }
<span class='line-number'> 16</span>     
<span class='line-number'> 17</span>         public class RelatedProduct
<span class='line-number'> 18</span>         {
<span class='line-number'> 19</span>             public string Id { get; set; }
<span class='line-number'> 20</span>             public string Number { get; set; }
<span class='line-number'> 21</span>             public string Name { get; set; }
<span class='line-number'> 22</span>             public string Image { get; set; }
<span class='line-number'> 23</span>             public string Manufacturer { get; set; }
<span class='line-number'> 24</span>             public string BaseColor { get; set; }
<span class='line-number'> 25</span>             public double StockLevel { get; set; }
<span class='line-number'> 26</span>             public bool SoldOut { get; set; }
<span class='line-number'> 27</span>             public Price Price { get; set; }
<span class='line-number'> 28</span>             public Price PriceBeforeDiscount { get; set; }
<span class='line-number'> 29</span>             public VariantInfo VariantInfo { get; set; }
<span class='line-number'> 30</span>         }
<span class='line-number'> 31</span>     
<span class='line-number'> 32</span>         public class Price
<span class='line-number'> 33</span>         {
<span class='line-number'> 34</span>             public double PriceWithoutVat { get; set; }
<span class='line-number'> 35</span>             public string PriceWithoutVatFormatted { get; set; }
<span class='line-number'> 36</span>             public double PriceWithVat { get; set; }
<span class='line-number'> 37</span>             public string PriceWithVatFormatted { get; set; }
<span class='line-number'> 38</span>             public string CurrencyCode { get; set; }
<span class='line-number'> 39</span>             public double DiscountPercent { get; set; }
<span class='line-number'> 40</span>         }
<span class='line-number'> 41</span>     
<span class='line-number'> 42</span>         public class VariantInfo
<span class='line-number'> 43</span>         {
<span class='line-number'> 44</span>             public string ProductID { get; set; }
<span class='line-number'> 45</span>             public double Stock { get; set; }
<span class='line-number'> 46</span>     
<span class='line-number'> 47</span>             [JsonProperty(&quot;VariantInfo&quot;)]
<span class='line-number'> 48</span>             public List&lt;Variant&gt; Variants { get; set; }
<span class='line-number'> 49</span>         }
<span class='line-number'> 50</span>     
<span class='line-number'> 51</span>         public class Variant
<span class='line-number'> 52</span>         {
<span class='line-number'> 53</span>             public string OptionID { get; set; }
<span class='line-number'> 54</span>             public string OptionName { get; set; }
<span class='line-number'> 55</span>             public string ProductID { get; set; }
<span class='line-number'> 56</span>             public double Stock { get; set; }
<span class='line-number'> 57</span>         }
<span class='line-number'> 58</span>     }
<span class='line-number'> 59</span>     
<span class='line-number'> 60</span>     @functions{
<span class='line-number'> 61</span>         public string normalizePriceString(string priceString)
<span class='line-number'> 62</span>         {
<span class='line-number'> 63</span>             if (string.IsNullOrWhiteSpace(priceString))
<span class='line-number'> 64</span>             {
<span class='line-number'> 65</span>                 return &quot;0&quot;;
<span class='line-number'> 66</span>             }
<span class='line-number'> 67</span>             else
<span class='line-number'> 68</span>             {
<span class='line-number'> 69</span>                 string strippedPriceString = priceString.Replace(&quot;.&quot;, &quot;&quot;);
<span class='line-number'> 70</span>                 string fixedPriceString = strippedPriceString.Replace(&quot;,&quot;, &quot;.&quot;);
<span class='line-number'> 71</span>                 double priceDouble = double.Parse(fixedPriceString, System.Globalization.CultureInfo.InvariantCulture);
<span class='line-number'> 72</span>                 return String.Format(&quot;{0:n0}&quot;, Math.Round(priceDouble));
<span class='line-number'> 73</span>             }
<span class='line-number'> 74</span>         }
<span class='line-number'> 75</span>     
<span class='line-number'> 76</span>         public List&lt;Variant&gt; GetVariants(List&lt;LoopItem&gt; variantLoop)
<span class='line-number'> 77</span>         {
<span class='line-number'> 78</span>             var sizeOrder = new String[] { &quot;XXXS&quot;, &quot;XXS&quot;, &quot;XS&quot;, &quot;S&quot;, &quot;M&quot;, &quot;L&quot;, &quot;XL&quot;, &quot;XXL&quot;, &quot;XXXL&quot; };
<span class='line-number'> 79</span>             var variants = new List&lt;Variant&gt;();
<span class='line-number'> 80</span>     
<span class='line-number'> 81</span>             foreach(var variantCombination in variantLoop)
<span class='line-number'> 82</span>             {
<span class='line-number'> 83</span>                 var variant = new Variant
<span class='line-number'> 84</span>                 {
<span class='line-number'> 85</span>                     OptionID = variantCombination.GetString(&quot;Ecom:VariantCombination.VariantID&quot;),
<span class='line-number'> 86</span>                     OptionName = variantCombination.GetString(&quot;Ecom:VariantCombination.VariantText&quot;),
<span class='line-number'> 87</span>                     ProductID = GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'> 88</span>                     Stock = variantCombination.GetDouble(&quot;LiveStock&quot;),
<span class='line-number'> 89</span>                 };
<span class='line-number'> 90</span>     
<span class='line-number'> 91</span>                 if(variant.Stock == 0 &amp;&amp; ConfigReader.IsDevelopment)
<span class='line-number'> 92</span>                 {
<span class='line-number'> 93</span>                     variant.Stock = variantCombination.GetDouble(&quot;Ecom:VariantCombination.Product.Stock&quot;);
<span class='line-number'> 94</span>                 }
<span class='line-number'> 95</span>     
<span class='line-number'> 96</span>                 variants.Add(variant);
<span class='line-number'> 97</span>             }
<span class='line-number'> 98</span>     
<span class='line-number'> 99</span>             variants = variants.OrderBy(x =&gt; Array.IndexOf(sizeOrder, x.OptionName)).ToList();
<span class='line-number'>100</span>     
<span class='line-number'>101</span>             return variants;
<span class='line-number'>102</span>         }
<span class='line-number'>103</span>     
<span class='line-number'>104</span>         string GetImage(LoopItem product)
<span class='line-number'>105</span>         {
<span class='line-number'>106</span>             var images = new List&lt;string&gt;
<span class='line-number'>107</span>             {
<span class='line-number'>108</span>                 product.GetString(&quot;Ecom:Product.PrimaryImage&quot;),
<span class='line-number'>109</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_1&quot;),
<span class='line-number'>110</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_2&quot;),
<span class='line-number'>111</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_3&quot;),
<span class='line-number'>112</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_4&quot;),
<span class='line-number'>113</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_5&quot;),
<span class='line-number'>114</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_6&quot;),
<span class='line-number'>115</span>                 product.GetString(&quot;Ecom:Product.Image.Alt_7&quot;),
<span class='line-number'>116</span>                 product.GetString(&quot;Ecom:Product.ImageAlt_1.Clean&quot;),
<span class='line-number'>117</span>             };
<span class='line-number'>118</span>     
<span class='line-number'>119</span>             foreach (var item in images)
<span class='line-number'>120</span>             {
<span class='line-number'>121</span>                 if (item.Length &gt; 0)
<span class='line-number'>122</span>                 {
<span class='line-number'>123</span>                     return item;
<span class='line-number'>124</span>                 }
<span class='line-number'>125</span>             }
<span class='line-number'>126</span>     
<span class='line-number'>127</span>             return &quot;&quot;;
<span class='line-number'>128</span>         }
<span class='line-number'>129</span>     }
<span class='line-number'>130</span>     
<span class='line-number'>131</span>     @{
<span class='line-number'>132</span>         var root = new List&lt;Product&gt;();
<span class='line-number'>133</span>     
<span class='line-number'>134</span>         foreach(var product in GetLoop(&quot;Products&quot;))
<span class='line-number'>135</span>         {
<span class='line-number'>136</span>             var productItem = new Product();
<span class='line-number'>137</span>             productItem.Id = product.GetString(&quot;Ecom:Product.ID&quot;);
<span class='line-number'>138</span>             productItem.Number = product.GetString(&quot;Ecom:Product.Number&quot;);
<span class='line-number'>139</span>             productItem.Name = product.GetString(&quot;Ecom:Product.Name&quot;);
<span class='line-number'>140</span>             productItem.BaseColor = product.GetString(&quot;Ecom:Product:Field.BaseColor.Value&quot;);
<span class='line-number'>141</span>     
<span class='line-number'>142</span>             productItem.VariantInfo = new VariantInfo
<span class='line-number'>143</span>             {
<span class='line-number'>144</span>                 ProductID = product.GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'>145</span>                 Stock = product.GetDouble(&quot;Ecom:Product.Stock&quot;),
<span class='line-number'>146</span>                 Variants = GetVariants(product.GetLoop(&quot;VariantCombinations&quot;)),
<span class='line-number'>147</span>             };
<span class='line-number'>148</span>     
<span class='line-number'>149</span>             var relatedProducts = new List&lt;RelatedProduct&gt;();
<span class='line-number'>150</span>     
<span class='line-number'>151</span>             foreach (var group in product.GetLoop(&quot;ProductRelatedGroups&quot;))
<span class='line-number'>152</span>             {
<span class='line-number'>153</span>                 var groupName = group.GetString(&quot;Ecom:Product:RelatedGroup.Name&quot;);
<span class='line-number'>154</span>                 if (groupName == &quot;Annar litur&quot;)
<span class='line-number'>155</span>                 {
<span class='line-number'>156</span>                     foreach (var item in group.GetLoop(&quot;Products&quot;))
<span class='line-number'>157</span>                     {
<span class='line-number'>158</span>                         var relatedProduct = new RelatedProduct
<span class='line-number'>159</span>                         {
<span class='line-number'>160</span>                             Id = item.GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'>161</span>                             Number = item.GetString(&quot;Ecom:Product.Number&quot;),
<span class='line-number'>162</span>                             Name = item.GetString(&quot;Ecom:Product.Name&quot;),
<span class='line-number'>163</span>                             Image = GetImage(item),
<span class='line-number'>164</span>                             Manufacturer = item.GetString(&quot;Ecom:Manufacturer.Name&quot;),
<span class='line-number'>165</span>                             BaseColor = item.GetString(&quot;Ecom:Product:Field.BaseColor.Value&quot;),
<span class='line-number'>166</span>                             StockLevel = item.GetDouble(&quot;Ecom:Product.Stock&quot;),
<span class='line-number'>167</span>                             SoldOut = item.GetBoolean(&quot;AllVariantsOutOfStock&quot;),
<span class='line-number'>168</span>                         };
<span class='line-number'>169</span>     
<span class='line-number'>170</span>                         var relatedProductPriceWithVAT = normalizePriceString(item.GetString(&quot;Ecom:Product.Price.PriceWithVAT&quot;));
<span class='line-number'>171</span>                         var relatedProductPriceWithoutVAT = normalizePriceString(item.GetString(&quot;Ecom:Product.Price.PriceWithoutVAT&quot;));
<span class='line-number'>172</span>                         string relatedPriceToShowWithVAT = relatedProductPriceWithVAT;
<span class='line-number'>173</span>                         string relatedPriceToShowWithoutVAT = relatedProductPriceWithoutVAT;
<span class='line-number'>174</span>                         string relatedProductDisplayPriceWithVAT = normalizePriceString(item.GetString(&quot;ProductDisplayPriceWithVAT&quot;));
<span class='line-number'>175</span>                         string relatedProductDisplayPriceWithoutVAT = normalizePriceString(item.GetString(&quot;ProductDisplayPriceWithoutVAT&quot;));
<span class='line-number'>176</span>                         double productDiscountPercent = item.GetDouble(&quot;ProductDiscountPercent&quot;);
<span class='line-number'>177</span>     
<span class='line-number'>178</span>                         if (!string.IsNullOrWhiteSpace(relatedProductDisplayPriceWithVAT) &amp;&amp; double.Parse(relatedProductDisplayPriceWithVAT) &gt; 0)
<span class='line-number'>179</span>                         {
<span class='line-number'>180</span>                             relatedPriceToShowWithVAT = relatedProductDisplayPriceWithVAT;
<span class='line-number'>181</span>                             relatedPriceToShowWithoutVAT = relatedProductDisplayPriceWithoutVAT;
<span class='line-number'>182</span>                         }
<span class='line-number'>183</span>     
<span class='line-number'>184</span>                         relatedProduct.Price = new Price
<span class='line-number'>185</span>                         {
<span class='line-number'>186</span>                             PriceWithoutVat = double.Parse(relatedPriceToShowWithoutVAT),
<span class='line-number'>187</span>                             PriceWithoutVatFormatted = relatedPriceToShowWithoutVAT,
<span class='line-number'>188</span>                             PriceWithVat = double.Parse(relatedPriceToShowWithVAT),
<span class='line-number'>189</span>                             PriceWithVatFormatted = relatedPriceToShowWithVAT,
<span class='line-number'>190</span>                             CurrencyCode = &quot;KR&quot;,
<span class='line-number'>191</span>                             DiscountPercent = productDiscountPercent,
<span class='line-number'>192</span>                         };
<span class='line-number'>193</span>     
<span class='line-number'>194</span>                         relatedProduct.PriceBeforeDiscount = new Price
<span class='line-number'>195</span>                         {
<span class='line-number'>196</span>                             PriceWithoutVat = double.Parse(relatedProductPriceWithoutVAT),
<span class='line-number'>197</span>                             PriceWithoutVatFormatted = relatedProductPriceWithoutVAT,
<span class='line-number'>198</span>                             PriceWithVat = double.Parse(relatedProductPriceWithVAT),
<span class='line-number'>199</span>                             PriceWithVatFormatted = relatedProductPriceWithVAT,
<span class='line-number'>200</span>                             CurrencyCode = &quot;KR&quot;,
<span class='line-number'>201</span>                             DiscountPercent = productDiscountPercent,
<span class='line-number'>202</span>                         };
<span class='line-number'>203</span>     
<span class='line-number'>204</span>                         relatedProduct.VariantInfo = new VariantInfo
<span class='line-number'>205</span>                         {
<span class='line-number'>206</span>                             ProductID = item.GetString(&quot;Ecom:Product.ID&quot;),
<span class='line-number'>207</span>                             Stock = item.GetDouble(&quot;Ecom:Product.Stock&quot;),
<span class='line-number'>208</span>                             Variants = GetVariants(item.GetLoop(&quot;VariantCombinations&quot;)),
<span class='line-number'>209</span>                         };
<span class='line-number'>210</span>     
<span class='line-number'>211</span>                         relatedProducts.Add(relatedProduct);
<span class='line-number'>212</span>                     }
<span class='line-number'>213</span>                 }
<span class='line-number'>214</span>             }
<span class='line-number'>215</span>             productItem.RelatedProducts = relatedProducts;
<span class='line-number'>216</span>             root.Add(productItem);
<span class='line-number'>217</span>         }
<span class='line-number'>218</span>     
<span class='line-number'>219</span>         string jsonFeed = &quot;[]&quot;;
<span class='line-number'>220</span>         jsonFeed = JsonConvert.SerializeObject(root, Formatting.Indented);
<span class='line-number'>221</span>     }
<span class='line-number'>222</span>     
<span class='line-number'>223</span>     @jsonFeed
<span class='line-number'>224</span>     
</div>
</pre>
