Lignende destinationer
Error executing template "Designs/aal/ItemPublisher/List/destination-list-related.cshtml"
System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadString(Uri address)
at CompiledRazorTemplates.Dynamic.RazorEngine_13357656c4104d8fba64c1bad53ef6d2.Execute() in D:\dynamicweb.net\Solutions\Gotcha\aal.dev.gotcha.dk\Files\Templates\Designs\aal\ItemPublisher\List\destination-list-related.cshtml:line 7
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using AAL.Data.ViewModels;
2 @using Newtonsoft.Json;
3
4 @if (GetLoop("ItemPublisher:Items.List").Any()) {
5 <section class="destination-list related">
6 @foreach (var destination in GetLoop("ItemPublisher:Items.List")) {
7 var destinationCharterJSON = new System.Net.WebClient().DownloadString("https://www.aal.dk/CustomModules/CharterHandler.ashx?names=" + destination.GetString("ItemPublisher:Item.AlternateNames").Trim().Replace("; ", ",").Replace(";", ""));
8 CharterListViewModel destinationCharter = JsonConvert.DeserializeObject<CharterListViewModel>(destinationCharterJSON);
9
10 List<string> travelTypes = new List<string>();
11 List<string> travelSeasons = new List<string>();
12
13 foreach (var travelInfo in destination.GetLoop("ItemPublisher:Item.TravelInformation")) {
14 // Find unique travel types
15 if (!string.IsNullOrEmpty(travelInfo.GetString("ItemPublisher:Item.TravelInformation.TravelType")) && !travelTypes.Contains(travelInfo.GetString("ItemPublisher:Item.TravelInformation.TravelType"))) {
16 travelTypes.Add(travelInfo.GetString("ItemPublisher:Item.TravelInformation.TravelType"));
17 }
18
19 // Find unique travel seasons
20 if (!string.IsNullOrEmpty(travelInfo.GetString("ItemPublisher:Item.TravelInformation.TravelSeason"))) {
21 foreach (var season in travelInfo.GetString("ItemPublisher:Item.TravelInformation.TravelSeason").Split(',').ToList()) {
22 if (!travelSeasons.Contains(season.ToString())) {
23 travelSeasons.Add(season.ToString());
24 }
25 }
26 }
27 }
28
29 travelTypes.Sort();
30
31 string travelType = String.Join(",", travelTypes);
32
33 if (travelType == "charter,direct") {
34 travelType = Translate("DestinationListTypeDirectCharter", "Direkte & Charter");
35 } else if (travelType == "charter") {
36 travelType = Translate("DestinationListTypeCharter", "Charter");
37 } else if (travelType == "direct") {
38 travelType = Translate("DestinationListTypeDirect", "Direkte ruter");
39 }
40
41 string travelTime = destination.GetString("ItemPublisher:Item.TravelTime");
42 string travelTimeFormatted = travelTime + " " + Translate("DestinationFlightDetailsMinutesShort", "min.");
43
44 if (!string.IsNullOrWhiteSpace(destination.GetString("ItemPublisher:Item.TravelTime")) && Int32.Parse(travelTime) >= 90) {
45 travelTimeFormatted = TimeSpan.FromMinutes(Convert.ToDouble(travelTime)).ToString(@"%h") + " " + Translate("DestinationFlightDetailsHoursShort", "t.") + " " + TimeSpan.FromMinutes(Convert.ToDouble(travelTime)).ToString(@"mm") + " " + Translate("DestinationFlightDetailsMinutesShort", "min.");
46 }
47
48 travelSeasons.Sort();
49
50 string travelSeason = String.Join(",", travelSeasons);
51
52 if (travelSeason == "summer,winter") {
53 travelSeason = Translate("DestinationListSeasonAllYear", "Hele året");
54 } else if (travelSeason == "summer") {
55 travelSeason = Translate("DestinationListSeasonSummer", "Sommer");
56 } else if (travelSeason == "winter") {
57 travelSeason = Translate("DestinationListSeasonWinter", "Vinter");
58 }
59
60 string operatorBookingLink = "";
61
62 if (destination.GetLoop("ItemPublisher:Item.TravelInformation").Count() == 1) {
63 operatorBookingLink = destination.GetLoop("ItemPublisher:Item.TravelInformation").First().GetString("ItemPublisher:Item.TravelInformation.BookingURL");
64 }
65
66 <div class="destination-item" data-action="into-view">
67 <div class="background" style='background-image: url(/Admin/Public/GetImage.ashx?Image=@destination.GetString("ItemPublisher:Item.ListImage").Replace("\\", "/").Replace(" ", "%20")&Format=jpg&Height=450&Crop=0&Compression=85)'></div>
68 <div class="info">
69 <div class="city">@destination.GetString("ItemPublisher:Item.Name")</div>
70
71 @if (!string.IsNullOrWhiteSpace(destination.GetString("ItemPublisher:Item.Price"))) {
72 <div class="price">@Translate("DestinationListPriceFrom", "fra") @destination.GetString("ItemPublisher:Item.Price"),- t/r</div>
73 } else if (!string.IsNullOrWhiteSpace(destination.GetString("DestinationPrice")) && !string.IsNullOrWhiteSpace(destination.GetString("ItemPublisher:Item.AlternateNames")) && !string.IsNullOrWhiteSpace(destinationCharter.Cheapest)) {
74 <div class="price">@Translate("DestinationListPriceFrom", "fra") @Math.Min(destination.GetInteger("DestinationPrice"), Int32.Parse(destinationCharter.Cheapest)),- t/r</div>
75 } else if (!string.IsNullOrWhiteSpace(destination.GetString("DestinationPrice"))) {
76 <div class="price">@Translate("DestinationListPriceFrom", "fra") @destination.GetString("DestinationPrice"),- t/r</div>
77 } else if (!string.IsNullOrWhiteSpace(destination.GetString("ItemPublisher:Item.AlternateNames")) && !string.IsNullOrWhiteSpace(destinationCharter.Cheapest)) {
78 <div class="price">@Translate("DestinationListPriceFrom", "fra") @destinationCharter.Cheapest,- t/r</div>
79 }
80
81 <div class="travel-info">
82 @if (!string.IsNullOrWhiteSpace(travelSeason)) {
83 <div class="period">
84 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/aal/assets/images/icon-calendar-white.svg"))) {
85 <div class="icon">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/aal/assets/images/icon-calendar-white.svg"))</div>
86 }
87 <div class="label">@Translate("DestinationListPeriod")</div>
88 <div class="value">@travelSeason</div>
89 </div>
90 }
91 @if (!string.IsNullOrWhiteSpace(travelTime)) {
92 <div class="flight-time">
93 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/aal/assets/images/icon-clock-white.svg"))) {
94 <div class="icon">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/aal/assets/images/icon-clock-white.svg"))</div>
95 }
96 <div class="label">@Translate("DestinationListFlightTime")</div>
97 <div class="value">@travelTimeFormatted</div>
98 </div>
99 }
100 @if (!string.IsNullOrWhiteSpace(travelType)) {
101 <div class="travel-type">
102 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/aal/assets/images/icon-departure-white.svg"))) {
103 <div class="icon">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/aal/assets/images/icon-departure-white.svg"))</div>
104 }
105 <div class="label">@Translate("DestinationListTravelType")</div>
106 <div class="value">@travelType</div>
107 </div>
108 }
109 </div>
110
111 <div class="buttons">
112 <a href='@Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(destination.GetString("ItemPublisher:Item.Url").Replace("/", ""))' class="more-info button secondary">@Translate("DestinationListInfoLink")<span class="visually-hidden"> @Translate("DestinationListInfoLinkVisuallyHidden") @destination.GetString("ItemPublisher:Item.Name")</span></a>
113 @if (!string.IsNullOrWhiteSpace(destination.GetString("ItemPublisher:Item.BookingURL"))) {
114 <a href='@destination.GetString("ItemPublisher:Item.BookingURL")' class="book button" data-value="booking-url">@Translate("DestinationListBookLink")<span class="visually-hidden"> @Translate("DestinationListBookLinkVisuallyHidden") @destination.GetString("ItemPublisher:Item.Name")</span></a>
115 } else if (!string.IsNullOrWhiteSpace(operatorBookingLink)) {
116 <a href='@operatorBookingLink' class="book button" data-value="operator-booking-link">@Translate("DestinationListBookLink")<span class="visually-hidden"> @Translate("DestinationListBookLinkVisuallyHidden") @destination.GetString("ItemPublisher:Item.Name")</span></a>
117 }
118 </div>
119 </div>
120 </div>
121 }
122
123 <div class="destination-item map">
124 <a href='@(Pageview.Area.ID == 14 ? Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(10724) + "#destination-map" : Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(10723) + "#destination-map")'>
125 <div class="background"></div>
126 <div class="info">
127 <div class="heading">@Translate("OffersRelatedItemHeading", "Hvor vil du gerne rejse hen?")</div>
128 <div class="subheading">@Translate("OffersRelatedItemSubheading", "Se alle destinationer")</div>
129 </div>
130 </a>
131 </div>
132 </section>
133 }
134