<pre class='dw-error'>Error executing template "Designs/Swift/_parsed/Swift_Sitemap.xml.parsed.cshtml"
System.IO.IOException: The process cannot access the file &#39;C:\inetpub\wwwroot\DWCroata2023_Test\Solutions\Swift_v1.21.0\Files\System\Log\LiveIntegration\Potomac Live Integration_1.log&#39; because it is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
   at Dynamicweb.Core.Helpers.TextFileHelper.WriteTextFile(String value, String path, Boolean appendToFile, Encoding encoding)
   at Potomac.LiveIntegration.Logging.Logger.Log(ErrorLevel errorLevel, String logline)
   at Potomac.LiveIntegration.Providers.CustomPriceProvider.InternalFindPrice(Product product, Double quantity, String variantId, Country country, Currency currency, String unitId, User user, Boolean informative)
   at Potomac.LiveIntegration.Providers.CustomPriceProvider.Dynamicweb.Ecommerce.Prices.IPriceInfoProvider.FindPriceInfo(PriceContext context, PriceProductSelection selection)
   at Dynamicweb.Ecommerce.Prices.PriceManager.FindPriceInternal(PriceProvider provider, PriceContext context, PriceProductSelection selection, Boolean isInformative)
   at Dynamicweb.Ecommerce.Prices.PriceManager.FindPrice(PriceContext context, PriceProductSelection selection, Boolean isInformative)
   at Dynamicweb.Ecommerce.Prices.PriceManager.GetPrice(PriceContext context, Product product, String unitId, Int64 stockLocationId)
   at Dynamicweb.Ecommerce.Products.ProductService.CheckShowProductSettings(Product product, PriceContext context, StockLocation stockLocation)
   at Dynamicweb.Ecommerce.Products.ProductService.ReFactorProductList(ICollection`1 products, Currency currency, Country country, StockLocation stockLocation, User user, Boolean useAssortments)
   at Dynamicweb.Ecommerce.Products.ProductService.ReFactorProductList(ICollection`1 products, Boolean useAssortments)
   at Dynamicweb.Ecommerce.Products.ProductRepository.GetProductsBySql(CommandBuilder query, Boolean doRefactoring, Boolean bulkFill, Boolean useAssortments)
   at CompiledRazorTemplates.Dynamic.RazorEngine_6f868d823017422687da30c63d742afc.&lt;&gt;c__DisplayClass2_0.&lt;RenderEcommerceGroupNodes&gt;b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\DWCroata2023_Test\Solutions\Swift_v1.21.0\Files\Templates\Designs\Swift\_parsed\Swift_Sitemap.xml.parsed.cshtml:line 123
   at CompiledRazorTemplates.Dynamic.RazorEngine_6f868d823017422687da30c63d742afc.&lt;&gt;c__DisplayClass2_0.&lt;RenderEcommerceGroupNodes&gt;b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\DWCroata2023_Test\Solutions\Swift_v1.21.0\Files\Templates\Designs\Swift\_parsed\Swift_Sitemap.xml.parsed.cshtml:line 124
   at CompiledRazorTemplates.Dynamic.RazorEngine_6f868d823017422687da30c63d742afc.&lt;&gt;c__DisplayClass1_0.&lt;RenderNode&gt;b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\DWCroata2023_Test\Solutions\Swift_v1.21.0\Files\Templates\Designs\Swift\_parsed\Swift_Sitemap.xml.parsed.cshtml:line 85
   at CompiledRazorTemplates.Dynamic.RazorEngine_6f868d823017422687da30c63d742afc.&lt;&gt;c__DisplayClass0_0.&lt;RenderNodes&gt;b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\DWCroata2023_Test\Solutions\Swift_v1.21.0\Files\Templates\Designs\Swift\_parsed\Swift_Sitemap.xml.parsed.cshtml:line 54
   at CompiledRazorTemplates.Dynamic.RazorEngine_6f868d823017422687da30c63d742afc.Execute() in C:\inetpub\wwwroot\DWCroata2023_Test\Solutions\Swift_v1.21.0\Files\Templates\Designs\Swift\_parsed\Swift_Sitemap.xml.parsed.cshtml:line 46
   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.&lt;&gt;c__DisplayClass16_0.&lt;RunCompile&gt;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()
<hr/>
<div class='template-code'>
<span class='line-number'>  1</span>     @inherits Dynamicweb.Rendering.ViewModelTemplate&lt;Dynamicweb.Frontend.PageViewModel&gt;
<span class='line-number'>  2</span>     @using System;
<span class='line-number'>  3</span>     @using System.Collections.Generic;
<span class='line-number'>  4</span>     @using System.Linq;
<span class='line-number'>  5</span>     @using Dynamicweb.Ecommerce.Products;
<span class='line-number'>  6</span>     @using Dynamicweb.Frontend.Navigation;
<span class='line-number'>  7</span>     
<span class='line-number'>  8</span>     @{
<span class='line-number'>  9</span>     	var masterArea = Pageview.Area;
<span class='line-number'> 10</span>     	if (Pageview.Area.IsLanguage)
<span class='line-number'> 11</span>     	{
<span class='line-number'> 12</span>     		masterArea = Pageview.Area.MasterArea;
<span class='line-number'> 13</span>     	}
<span class='line-number'> 14</span>     
<span class='line-number'> 15</span>     	List&lt;int&gt; masterWebsiteAndLanguages = new List&lt;int&gt;();
<span class='line-number'> 16</span>     	masterWebsiteAndLanguages.Add(masterArea.ID);
<span class='line-number'> 17</span>     	if (masterArea.Languages is object &amp;&amp; masterArea.Languages.Any())
<span class='line-number'> 18</span>     	{
<span class='line-number'> 19</span>     		foreach (var language in masterArea.Languages)
<span class='line-number'> 20</span>     		{
<span class='line-number'> 21</span>     			masterWebsiteAndLanguages.Add(language.ID);
<span class='line-number'> 22</span>     		}
<span class='line-number'> 23</span>     	}
<span class='line-number'> 24</span>     
<span class='line-number'> 25</span>     
<span class='line-number'> 26</span>     	string hostname = Dynamicweb.Context.Current.Request.Url.GetLeftPart(UriPartial.Authority);
<span class='line-number'> 27</span>     	List&lt;NavigationTreeNodeViewModel&gt; allWebsiteAndLanguageNodes = new List&lt;NavigationTreeNodeViewModel&gt;();
<span class='line-number'> 28</span>     
<span class='line-number'> 29</span>     	foreach (int areaid in masterWebsiteAndLanguages)
<span class='line-number'> 30</span>     	{
<span class='line-number'> 31</span>     		var navigationSettingsMain = new Dynamicweb.Frontend.Navigation.NavigationSettings()
<span class='line-number'> 32</span>     		{
<span class='line-number'> 33</span>     			StartLevel = 1,
<span class='line-number'> 34</span>     			StopLevel = 10,
<span class='line-number'> 35</span>     			RootAreaId = areaid,
<span class='line-number'> 36</span>     			IncludeFoldersAndHidden = false,
<span class='line-number'> 37</span>     			ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All
<span class='line-number'> 38</span>     		};
<span class='line-number'> 39</span>     
<span class='line-number'> 40</span>     		allWebsiteAndLanguageNodes.AddRange(GetNavigation(navigationSettingsMain)?.Nodes);
<span class='line-number'> 41</span>     	}
<span class='line-number'> 42</span>     }
<span class='line-number'> 43</span>     &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
<span class='line-number'> 44</span>     &lt;urlset xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&gt;
<span class='line-number'> 45</span>     
<span class='line-number'> 46</span>     	@{ @RenderNodes(allWebsiteAndLanguageNodes, hostname) }
<span class='line-number'> 47</span>     
<span class='line-number'> 48</span>     &lt;/urlset&gt;
<span class='line-number'> 49</span>     
<span class='line-number'> 50</span>     @helper RenderNodes(IEnumerable&lt;NavigationTreeNodeViewModel&gt; nodes, string hostname)
<span class='line-number'> 51</span>     {
<span class='line-number'> 52</span>     	foreach (NavigationTreeNodeViewModel node in nodes)
<span class='line-number'> 53</span>     	{
<span class='line-number'> 54</span>     		@RenderNode(node, hostname)
<span class='line-number'> 55</span>     
<span class='line-number'> 56</span>     	}
<span class='line-number'> 57</span>     }
<span class='line-number'> 58</span>     
<span class='line-number'> 59</span>     @helper RenderNode(NavigationTreeNodeViewModel node, string hostname)
<span class='line-number'> 60</span>     {
<span class='line-number'> 61</span>     	var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId);
<span class='line-number'> 62</span>     
<span class='line-number'> 63</span>     	bool isEcommerceNavigation = false;
<span class='line-number'> 64</span>     	string navsettings = string.Empty;
<span class='line-number'> 65</span>     	if (page.NavigationSettings != null &amp;&amp; page.NavigationSettings.UseEcomGroups)
<span class='line-number'> 66</span>     	{
<span class='line-number'> 67</span>     		isEcommerceNavigation = true;
<span class='line-number'> 68</span>     		navsettings = page.NavigationSettings.Groups;
<span class='line-number'> 69</span>     	}
<span class='line-number'> 70</span>     
<span class='line-number'> 71</span>     	if (isEcommerceNavigation)
<span class='line-number'> 72</span>     	{
<span class='line-number'> 73</span>     		if (page.Allowclick &amp;&amp; page.ShowInSitemap &amp;&amp; !page.Noindex)
<span class='line-number'> 74</span>     		{
<span class='line-number'> 75</span>     			var productPageid = node.PageId;
<span class='line-number'> 76</span>                 if (!string.IsNullOrEmpty(page.NavigationSettings.ProductPage)) { 
<span class='line-number'> 77</span>     				productPageid = Dynamicweb.Environment.Helpers.LinkHelper.GetInternalPageId(page.NavigationSettings.ProductPage);
<span class='line-number'> 78</span>     			}
<span class='line-number'> 79</span>     			&lt;url&gt;
<span class='line-number'> 80</span>     				@*&lt;loc pageid=&quot;@node.PageId&quot; groups=&quot;@navsettings&quot;&gt;@hostname@node.Link&lt;/loc&gt;*@
<span class='line-number'> 81</span>     				&lt;loc&gt;@hostname@node.Link&lt;/loc&gt;
<span class='line-number'> 82</span>     				&lt;lastmod&gt;@page.Audit.LastModifiedAt.ToString(&quot;s&quot;)&lt;/lastmod&gt;
<span class='line-number'> 83</span>     			&lt;/url&gt;
<span class='line-number'> 84</span>     
<span class='line-number'> 85</span>     			@RenderEcommerceGroupNodes(GetGroupsBySettings(page.NavigationSettings), node, hostname, productPageid)
<span class='line-number'> 86</span>     		}
<span class='line-number'> 87</span>     	}
<span class='line-number'> 88</span>     	else
<span class='line-number'> 89</span>     	{
<span class='line-number'> 90</span>     		if (page.Allowclick &amp;&amp; page.ShowInSitemap &amp;&amp; !page.Noindex)
<span class='line-number'> 91</span>     		{
<span class='line-number'> 92</span>     			&lt;url&gt;
<span class='line-number'> 93</span>     				&lt;loc&gt;@hostname@node.Link&lt;/loc&gt;
<span class='line-number'> 94</span>     				&lt;lastmod&gt;@page.Audit.LastModifiedAt.ToString(&quot;s&quot;)&lt;/lastmod&gt;
<span class='line-number'> 95</span>     			&lt;/url&gt;
<span class='line-number'> 96</span>     		}
<span class='line-number'> 97</span>     		if (node.Nodes.Any())
<span class='line-number'> 98</span>     		{
<span class='line-number'> 99</span>     			@RenderNodes(node.Nodes, hostname)
<span class='line-number'>100</span>     		}
<span class='line-number'>101</span>     	}
<span class='line-number'>102</span>     }
<span class='line-number'>103</span>     
<span class='line-number'>104</span>     @helper RenderEcommerceGroupNodes(IEnumerable&lt;Dynamicweb.Ecommerce.Products.Group&gt; groups, NavigationTreeNodeViewModel node, string hostname, int detailProductPageId)
<span class='line-number'>105</span>     {
<span class='line-number'>106</span>     	foreach (Group group in groups)
<span class='line-number'>107</span>     	{
<span class='line-number'>108</span>     
<span class='line-number'>109</span>     		if (group.NavigationClickable &amp;&amp; group.NavigationShowInSiteMap)
<span class='line-number'>110</span>     		{
<span class='line-number'>111</span>     			//Remember to check if this group is not having another primary page
<span class='line-number'>112</span>     			//Remember to check if this group does not have multiple parents - and if it has, decide if the group should be shown here
<span class='line-number'>113</span>     			//int primarypageid = group.Meta.PrimaryPageId; //Use this if needed - send it into the product
<span class='line-number'>114</span>     			string url = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(&quot;Default.aspx?ID=&quot; + node.PageId + &quot;&amp;GroupID=&quot; + group.IdUrlEncoded);
<span class='line-number'>115</span>     
<span class='line-number'>116</span>     			&lt;url&gt;
<span class='line-number'>117</span>     				@*&lt;loc pageid=&quot;@node.PageId&quot; groupid=&quot;@group.Id&quot; group=&quot;@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlEncode(group.Name)&quot;&gt;@hostname@url&lt;/loc&gt;*@
<span class='line-number'>118</span>     				&lt;loc&gt;@hostname@url&lt;/loc&gt;
<span class='line-number'>119</span>     			&lt;/url&gt;
<span class='line-number'>120</span>     		}
<span class='line-number'>121</span>     
<span class='line-number'>122</span>     //DIGNET - iskljuceno RenderEcommerceProductNodes
<span class='line-number'>123</span>            @RenderEcommerceProductNodes(Dynamicweb.Ecommerce.Services.Products.GetProductsByGroupId(group.Id, true, group.LanguageId, false), node, hostname, group, detailProductPageId)
<span class='line-number'>124</span>     		@RenderEcommerceGroupNodes(group.Subgroups, node, hostname, detailProductPageId)
<span class='line-number'>125</span>     
<span class='line-number'>126</span>     	}
<span class='line-number'>127</span>     }
<span class='line-number'>128</span>     
<span class='line-number'>129</span>     @helper RenderEcommerceProductNodes(IEnumerable&lt;Dynamicweb.Ecommerce.Products.Product&gt; products, NavigationTreeNodeViewModel node, string hostname, Group group, int detailProductPageId)
<span class='line-number'>130</span>     {
<span class='line-number'>131</span>     	//Locate the right pageid. This group is shown on a page that might link to another page to show product detail. So on this page, find the paragraph, lookup the setting, change pageid to the detail page.
<span class='line-number'>132</span>     	//The product might be in 2 groups - ensure this is the primary or default group of the product - if not, do not render
<span class='line-number'>133</span>     	foreach (Product product in products)
<span class='line-number'>134</span>     	{
<span class='line-number'>135</span>     		
<span class='line-number'>136</span>     		string number = product.Id;
<span class='line-number'>137</span>     		bool isNotGiftBox = !number.StartsWith(Translate(&quot;140100-&quot;));
<span class='line-number'>138</span>     		if (isNotGiftBox){
<span class='line-number'>139</span>     		
<span class='line-number'>140</span>               string url = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(&quot;Default.aspx?ID=&quot; + detailProductPageId + &quot;&amp;GroupID=&quot; + group.IdUrlEncoded + &quot;&amp;ProductID=&quot; + product.Id);
<span class='line-number'>141</span>               &lt;url&gt;
<span class='line-number'>142</span>                   @*&lt;loc pageid=&quot;@node.PageId&quot; detailpageid=&quot;@detailProductPageId&quot; groupid=&quot;@group.Id&quot; group=&quot;@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlEncode(group.Name)&quot; productid=&quot;@product.Id&quot; product=&quot;@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlEncode(product.Name)&quot; variantid=&quot;@product.VariantId&quot;&gt;@hostname@url&lt;/loc&gt;*@
<span class='line-number'>143</span>                   &lt;loc&gt;@hostname@url&lt;/loc&gt;
<span class='line-number'>144</span>               &lt;/url&gt;
<span class='line-number'>145</span>     		}
<span class='line-number'>146</span>     	}
<span class='line-number'>147</span>     }
<span class='line-number'>148</span>     
<span class='line-number'>149</span>     @functions{
<span class='line-number'>150</span>     
<span class='line-number'>151</span>     	public IEnumerable&lt;Dynamicweb.Ecommerce.Products.Group&gt; GetGroupsBySettings(Dynamicweb.Content.PageNavigationSettings ecomSettings)
<span class='line-number'>152</span>     	{
<span class='line-number'>153</span>     		IEnumerable&lt;Dynamicweb.Ecommerce.Products.Group&gt; topLevelGroups;
<span class='line-number'>154</span>     
<span class='line-number'>155</span>     		string languageId = Dynamicweb.Ecommerce.Common.Context.LanguageID;
<span class='line-number'>156</span>     		switch (ecomSettings.ParentType)
<span class='line-number'>157</span>     		{
<span class='line-number'>158</span>     			case Dynamicweb.Content.EcommerceNavigationParentType.Groups:
<span class='line-number'>159</span>     				{
<span class='line-number'>160</span>     					Dynamicweb.Ecommerce.Extensibility.Controls.ProductsAndGroupsHandler groupHandler = new Dynamicweb.Ecommerce.Extensibility.Controls.ProductsAndGroupsHandler(ecomSettings.Groups);
<span class='line-number'>161</span>     					if (groupHandler.Type == Dynamicweb.Ecommerce.Extensibility.Controls.HandlerConfigurationType.All)
<span class='line-number'>162</span>     					{
<span class='line-number'>163</span>     						Dynamicweb.Ecommerce.Shops.Shop shop = Dynamicweb.Ecommerce.Services.Shops.GetShop(string.IsNullOrEmpty(groupHandler.ShopSelected) ? ecomSettings.ShopID : groupHandler.ShopSelected);
<span class='line-number'>164</span>     						if (shop == null)
<span class='line-number'>165</span>     							topLevelGroups = Enumerable.Empty&lt;Dynamicweb.Ecommerce.Products.Group&gt;();
<span class='line-number'>166</span>     						else
<span class='line-number'>167</span>     							topLevelGroups = shop.get_TopLevelGroups(languageId);
<span class='line-number'>168</span>     					}
<span class='line-number'>169</span>     					else
<span class='line-number'>170</span>     						topLevelGroups = groupHandler.GroupsSelected;
<span class='line-number'>171</span>     					break;
<span class='line-number'>172</span>     				}
<span class='line-number'>173</span>     
<span class='line-number'>174</span>     			case Dynamicweb.Content.EcommerceNavigationParentType.Shop:
<span class='line-number'>175</span>     				{
<span class='line-number'>176</span>     					Dynamicweb.Ecommerce.Shops.Shop shop = Dynamicweb.Ecommerce.Services.Shops.GetShop(ecomSettings.ShopID);
<span class='line-number'>177</span>     					if (shop == null)
<span class='line-number'>178</span>     						topLevelGroups = Enumerable.Empty&lt;Dynamicweb.Ecommerce.Products.Group&gt;();
<span class='line-number'>179</span>     					else
<span class='line-number'>180</span>     						topLevelGroups = shop.get_TopLevelGroups(languageId);
<span class='line-number'>181</span>     					break;
<span class='line-number'>182</span>     				}
<span class='line-number'>183</span>     
<span class='line-number'>184</span>     			default:
<span class='line-number'>185</span>     				{
<span class='line-number'>186</span>     					topLevelGroups = Enumerable.Empty&lt;Dynamicweb.Ecommerce.Products.Group&gt;();
<span class='line-number'>187</span>     					break;
<span class='line-number'>188</span>     				}
<span class='line-number'>189</span>     		}
<span class='line-number'>190</span>     
<span class='line-number'>191</span>     		return topLevelGroups;
<span class='line-number'>192</span>     	}
<span class='line-number'>193</span>     
<span class='line-number'>194</span>     }
<span class='line-number'>195</span>     
</div>
</pre>
