Error executing template "Designs/RTC/eCom/Product/ProductDetail.cshtml"
System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
at System.String.Substring(Int32 startIndex, Int32 length)
at CompiledRazorTemplates.Dynamic.RazorEngine_32e33f128e5147bea740bb6162bee019.Execute() in D:\dynamicweb.net\Solutions\Altex Holding\altexrtc.cloud.dynamicweb-cms.com\Files\Templates\Designs\RTC\eCom\Product\ProductDetail.cshtml:line 300
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 RazorTemplateBase<RazorTemplateModel<Template>>
2 @using Dynamicweb.Rendering;
3 @using System;
4 @using System.IO;
5 @using System.Web;
6 @using System.Text;
7 @using System.Collections.Generic;
8 @using System.Text.RegularExpressions;
9
10 @using Dynamicweb.Ecommerce.Products;
11 @using Dynamicweb.Modules.UserManagement;
12 @using System.Web;
13 @using System;
14
15
16 @{
17
18 var currentUserAccess = Dynamicweb.Security.UserManagement.User.GetCurrentExtranetUser();
19 var user = currentUserAccess;
20 var currentUser = currentUserAccess;
21 bool userIsLoggedIn = currentUser != null; // Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn();
22
23 string customerNo = userIsLoggedIn && currentUser.CustomerNumber != null ? currentUser.CustomerNumber.ToString() : null;
24
25 int todayDay = (int)DateTime.Now.Day;
26 string fakecustomer = "xxx";
27 bool commandIsEditted = !string.IsNullOrEmpty(GetString("EditedFromOrderId.Clean")) ? true : false;
28 var cartURL = "";
29 if(commandIsEditted) {
30 cartURL = "/Default.aspx?ID=78";
31 } else {
32 cartURL = "/Default.aspx?ID=37";
33 }
34
35 if(!System.Web.HttpContext.Current.Request.Cookies.AllKeys.Contains("showMaintenanceBanner")) {
36 System.Web.HttpContext.Current.Response.Cookies["showMaintenanceBanner"].Value = "False";
37 }
38
39 if(!userIsLoggedIn) {
40 System.Web.HttpContext.Current.Response.Cookies["showMaintenanceBanner"].Value = "False";
41 }
42
43
44 bool bannerMentenanta = System.Web.HttpContext.Current.Request.Cookies["showMaintenanceBanner"].Value == "True" ? true : false;
45
46 string bannerMentenantaClass = "banner-mentenanta";
47 if(bannerMentenanta) {
48 bannerMentenantaClass = "banner-mentenanta hidden";
49 }
50
51 }
52
53 @{ string designName = GetString("Template:DesignBaseUrl").Replace("/Files/Templates/Designs/", "").Replace("/", ""); }@functions{
54 public static string GetImage(string sourceString, int imageWidth, int imageHeight, int imageWidthTablet = 0, int imageHeightTablet = 0, int imageWidthMobile = 0, int imageHeightMobile = 0, string imageFormat = "png", int imageCompression = 0, int imageCrop = 5, string background = "", string designName = "CRS")
55 {
56 Dynamicweb.Frontend.PageView currentPageview = Dynamicweb.Frontend.PageView.Current();
57 background ="#ffffff";
58 string currDevice = currentPageview.Device.ToString(),
59 alternativeImage = currentPageview.Area.Item["NoImage"] != null ? currentPageview.Area.Item["NoImage"].ToString() : "/Files/Images/Products/Large/no-image-available_inter.png",
60 widthString = "",
61 heightString = "",
62 //getImageFormat = "&Format=jpg",
63 getImageFormat = "&Format="+ imageFormat,
64 getImageCompression = imageCompression != 0 ? "&Compression=" + imageCompression : "",
65 bgColor = !string.IsNullOrEmpty(background) ? "&background=" + background : "";
66 int getImageWidth = imageWidth != 0 ? imageWidth : 0,
67 getImageHeight = imageHeight != 0 ? imageHeight : 0;
68
69 //if (currDevice == Dynamicweb.Frontend.PageView.DeviceType.Tablet.ToString())
70 if (currDevice == Dynamicweb.Frontend.Devices.DeviceType.Tablet.ToString())
71 {
72 getImageWidth = imageWidthTablet != 0 ? imageWidthTablet : getImageWidth;
73 getImageHeight = imageHeightTablet != 0 ? imageHeightTablet : getImageHeight;
74 }
75 //else if (currDevice == Dynamicweb.Frontend.PageView.DeviceType.Mobile.ToString())
76 else if (currDevice == Dynamicweb.Frontend.Devices.DeviceType.Mobile.ToString())
77 {
78 getImageWidth = imageWidthMobile != 0 ? imageWidthMobile : getImageWidth;
79 getImageHeight = imageHeightMobile != 0 ? imageHeightMobile : getImageHeight;
80 }
81
82 if (getImageWidth != 0)
83 {
84 widthString = "&Width=" + getImageWidth;
85 }
86 if (getImageHeight != 0)
87 {
88 heightString = "&Height=" + getImageHeight;
89 }
90
91 string output = "/Admin/Public/GetImage.ashx?Image=" + sourceString + widthString + heightString + "&altFmImage_path=" + alternativeImage + getImageFormat + getImageCompression + "&Crop=" + imageCrop + bgColor;
92 return output;
93 }
94 }
95 @* getImageFormat = imageFormat != "jpg" ? "&Format=" + imageFormat : "", *@
96 @inherits RazorTemplateBase<RazorTemplateModel<Template>>
97 @using Dynamicweb.Rendering;
98
99 @functions{
100 private string GetImagePathUrl(string small, string medium, string large, string pattern)
101 {
102 string imagePath;
103
104 if (!string.IsNullOrEmpty(small))
105 imagePath = small;
106 else if (!string.IsNullOrEmpty(medium))
107 imagePath = medium;
108 else if (!string.IsNullOrEmpty(large))
109 imagePath = large;
110 else
111 imagePath = pattern;
112
113 return imagePath;
114 }
115 }
116
117 @helper GetPriceMain(string price) {
118 @price.Substring(0,price.Length - 3);
119 }
120 @helper GetPriceUnits(string price) {
121 @price.Substring(price.Length - 3,3);
122 }
123
124 @{
125
126 var lincu = GetString("Ecom:Product.Link1");
127 var stopOrder = false;
128 var variantLoop = GetLoop("VariantCombinations");
129 var productID = GetString("Ecom:Product.ID");
130 string productVariantID = GetString("Ecom:Product.VariantID");
131 string productVariantText = GetString("Ecom:Product.VariantText");
132 bool isVariant = !string.IsNullOrEmpty(productVariantID)? true : false;
133 var productName = GetString("Ecom:Product.Name");
134 var productCode = GetString("Ecom:Product:Field.Cod");
135 var productPrice = GetString("Ecom:Product.Price.PriceWithVAT");
136 var productOnlinePrice = GetString("Ecom:Product:Field.OnlinePrice");
137 var productCurrency = GetString("Ecom:Product.Price.Currency.Symbol");
138 var productStockText = GetString("Ecom:Product:Stock.Text");
139 var productDiscount = GetString("Ecom:Product.Discount.TotalAmount.PriceWithoutVATFormatted");//GetString("Ecom:Product.Discount.Price.VATPercentFormatted");
140 var productDiscountValue = GetDouble("Ecom:Product.Discount.TotalAmount.Price.Value");// GetString("Ecom:Product.Discount.Price.VATPercent");
141
142
143 var productStock = GetString("Ecom:Product.Stock");
144 var productMainImage = GetString("Ecom:Product.ImageLarge.Clean");
145 var productVideo1 = GetString("Ecom:Product:Field.VideoLink1.Value");
146 var productVideo2 = GetString("Ecom:Product:Field.VideoLink2.Value");
147 var productCurrentUM = GetString("Ecom:Product:Field.UM");
148 var productDescription = GetValue("Ecom:Product.LongDescription");
149 var productLoyalityPoints = GetString("Ecom:Product.PointPrice");
150 var productManufacturerId= GetString("Ecom:Manufacturer.ID");
151 var productManufacturerName = GetString("Ecom:Manufacturer.Name");
152 var productManufacturerImage = "/Files/Images/Products/logo/" + productManufacturerName +".jpg";
153 var productManufacturerLink = "/Default.aspx?ID=73&Brand=" + productManufacturerId;
154 string ProductReferenceId = productCode;
155 string imagesFolder = "/Files/Images/Products/Large/";
156 string imagePattern = imagesFolder + ProductReferenceId + ".jpg";
157 string productImage = GetImagePathUrl(GetString("Ecom:Product.ImageSmall.Clean"), GetString("Ecom:Product.ImageMedium.Clean"), GetString("Ecom:Product.ImageLarge.Clean"), imagePattern);
158 string productGetImage = GetImage(productImage, 0, 600);
159 string productGetImageZoom = GetImage(productImage, 0, 1200,0,0,0,0,"jpg");
160 string productGetImageMica = GetImage(productImage, 0, 105);
161 string pattern = ProductReferenceId + "_*.jpg";
162 var bonus = GetString("Ecom:Product:Field.Bonus");
163 var stocfurnizor = GetString("Ecom:Product:Field.stocfurnizor");
164 var InfoAmbalare = GetString("Ecom:Product:Field.InfoAmbalare");
165 var testeaza = GetString("Ecom:Product:Field.Testeaza");
166 string titleKey = "title",
167 title = "",
168 imageKey = "image",
169 fileKey = "file",
170 image = "";
171 var groupId = GetString("Ecom:Group.ID");
172 if(GetBoolean("Ecom:Product:Field.ProdusDeComandaSpeciala") || GetString("Ecom:Product:Field.ItemsCustClassification") == "E"){
173 if(productCode == "xFW122201" || productCode == "xFW222202" || productCode == "xFW122211" || productCode == "xFW222212" || productCode == "xFW122221" || productCode == "xFW222222")
174 {productStockText = Translate("StocFurnizor", "Stoc Furnizor");}
175 else {
176 productStockText = Translate("ComandaSpeciala", "Comanda speciala");
177 if((productCode.Substring(0, 2) == "AX" || GetString("Ecom:Product:Field.ItemsCustClassification") == "E") && stocfurnizor == "99999") {
178 productStockText =Translate("Solicita Informatii", "Solicita Informatii");
179 }
180 if(productCode.Substring(0, 2) == "AX" && stocfurnizor == "0") {
181 productStockText =Translate("Stoc Epuizat", "Stoc Epuizat");
182 }
183 if(productCode.Substring(0, 2) == "AX" && stocfurnizor != "0" && stocfurnizor != "99999") {
184 productStockText = Translate("InStocFurnizor", "In Stoc Furnizor");
185 }
186
187 if(productCode.Substring(0, 2) != "AX" && stocfurnizor != "0" && stocfurnizor != "99999" && GetString("Ecom:Product:Field.ItemsCustClassification") == "E") {
188 productStockText = Translate("InStocFurnizor", "In Stoc Furnizor");
189 }
190 if(productCode.Substring(0, 2) != "AX" && stocfurnizor == "0" && stocfurnizor != "99999" && GetString("Ecom:Product:Field.ItemsCustClassification") == "E") {
191 productStockText =Translate("Stoc Epuizat", "Stoc Epuizat");
192 }
193
194
195 }
196
197 }
198 if(GetBoolean("Ecom:Product:Field.fidelizare")) {
199 var yfidelizare = "1";
200 }
201 else {
202 var yfidelizare = "2";
203 }
204
205
206 List<LoopItem> loopVariantCombinations = variantLoop,
207 loopVariantGroups = GetLoop("VariantGroups"),
208 loopBOMProducts = GetLoop("BOMConfigurators"),
209 loopProdPrices = GetLoop("Product.Prices"),
210 loopDetails = GetLoop("Details");
211
212 bool hasVariants = variantLoop.Count() > 1 ? true : false;
213
214 //if(!string.IsNullOrEmpty(currentUser.CustomerNumber)) {
215 if(userIsLoggedIn) {
216 productPrice = GetString("Ecom:Product.Price.PriceWithoutVAT");
217 }
218 var found = 0;
219 foreach(var variant in variantLoop) {
220
221 var variantStock = variant.GetString("Ecom:Product.Stock");
222 if (variantStock != "0") {
223 found++;
224 }
225 }
226 if (found == 0 ) {
227 stopOrder = true;
228 }
229
230 bool PriceUnavailable = productPrice == "0,00";
231 if(PriceUnavailable) {
232
233 productStockText = Translate("ProdusMomentanIndisponibil","Momentan indisponibil");
234 }
235
236
237 List<Dictionary<string, string>> imagesList = new List<Dictionary<string, string>>();
238 string folderPath = Path.GetDirectoryName(HttpContext.Current.Server.MapPath("/Files/Images/Products/Large/"));
239
240 if (Directory.Exists(folderPath))
241 {
242 string temp = @"\";
243 foreach (string file in Directory.GetFiles(folderPath, pattern))
244 {
245 Dictionary<string, string> dct_image = new Dictionary<string, string>();
246 image = "/Files/Images/Products/Large/" + file.Substring((file.LastIndexOf(@temp) + 1), (file.Length - file.LastIndexOf(@temp) - 1));
247 string metafield = "title";
248 var metadata = Dynamicweb.Content.Files.Metadata.EditorFactory.GetMetadataForFile(image);
249 title = metadata != null ? metadata.GetValue(metafield).ToString() : productName;
250 dct_image.Add(titleKey, title);
251 dct_image.Add(imageKey, image);
252 imagesList.Add(dct_image);
253 }
254 }
255
256
257
258
259 }
260
261
262
263 <div class="product clearfix" data-compare-category='@groupId'>
264
265
266
267 <div class="col-sm-6">
268
269
270 <div id="mainImage">
271 @if(GetBoolean("Ecom:Product:Field.Nou.Value") && !GetBoolean("Ecom:Product:Field.Lichidare.Value")) {
272
273 <span class="newproductdetail">Nou</span>
274
275 } else if(!GetBoolean("Ecom:Product:Field.Nou.Value") && GetBoolean("Ecom:Product:Field.Lichidare.Value")){
276
277 <span class="lichidareProductDetail">Lichidare</span>
278
279 }
280
281 else if(bonus != "" && bonus != " "){
282 if(bonus == "666") {
283 <span class="bonusProductDetail" style="background-color: none;"><a href="#"><img src='@("/Files/Images/badges/bonus-1-6.png")'></a></span>
284 }
285 else {
286 <span class="bonusProductDetail" style="background-color: none; top: 0%;"><a href="http://rtc.ro/Content/Newsletter/Leitz-Culori-WOW/index.html"><img src='@("/Files/Images/badges/" + @bonus + ".png")'></a></span>
287 }
288 }
289
290
291
292 @if(testeaza != "" && testeaza != " "){
293 if(testeaza == "1") {
294 <span class="rtcProductDetail" style="background-color: none;"><a href="https://www.rtc.ro/testeaza-gratuit-produsele-rtc?idp=@productCode"><img src='@("/Files/Images/badges/testeaza.png")'></a></span>
295 }
296
297 }
298 @if(GetBoolean("Ecom:Product:Field.fidelizare") && !GetBoolean("Ecom:Product:Field.Lichidare.Value")) {
299
300 if(productCode.Substring(0, 4) == "zSL11" || productCode.Substring(0, 4) == "zSL12" || productCode.Substring(0, 4) == "zSL80" || productCode.Substring(0, 5) == "zSL549") {
301 <span class="bonusProductDetail xfidelizare" style="background-color: none; display: none;"><a href="https://www.rtc.ro/cauta?q=rtcstars"><img src='@("/Files/Images/badges/rtcstarsx2.png")'></a></span>
302 }
303 else {
304
305 <span class="bonusProductDetail xfidelizare" style="background-color: none; display: none;"><a href="https://www.rtc.ro/cauta?q=rtcstars"><img src='@("/Files/Images/badges/rtcstars.png")'></a></span>
306 }
307 }
308 <div class="main-image">
309 <img src="@productGetImage" alt="@productName" title="@productName" class="selectedImage" />
310 </div>
311 </div>
312
313 <div class="thumbs row">
314
315
316 @if(imagesList.Count() > 0) {
317 <a href="@productGetImage" class="swipebox hidden" title="@productName" id="galeriz">Deschide galeria </a>
318 <div class="item col-sm-4 col-xs-4">
319 <a href="@productGetImageZoom" title="" data-type='main' class="active">
320 <img data-image="@productGetImage" data-image-big="@productGetImageZoom" data-image-thumb="@productGetImageMica" class="img-responsive" src="@productGetImageZoom" title="productName" alt="@productName" />
321 <span class="shadow"></span>
322 </a>
323
324 <a href="@productGetImageZoom" title="@productName" data-type='main' class="swipebox hidden">
325 <img data-image="@productGetImage" data-image-big="@productGetImageZoom" data-image-thumb="@productGetImageMica" class="img-responsive" src="@productGetImageZoom" title="productName" alt="@productName" />
326
327 </a>
328
329 </div>
330 foreach (System.Collections.Generic.Dictionary<String, String> imageStr in imagesList)
331 {
332 bool isAnImage = imageStr["image"].ToString().Contains(".jpg");
333 string getimageImg = GetImage(imageStr["image"].ToString(), 0, 105),
334 getimageDataImg = isAnImage ? GetImage(imageStr["image"].ToString(), 600, 600) : imageStr["image"].ToString(),
335 getimageDataImgBig = isAnImage ? GetImage(imageStr["image"].ToString(), 1200, 1200, 0, 0, 0, 0, "jpg") : imageStr["image"].ToString(),
336 liClass = imagesList.IndexOf(imageStr) == 0 ? "active" : "";
337 <div class="item col-sm-4 col-xs-4">
338 <a href="@getimageDataImgBig#" title="" data-type='@imageStr["image"].ToString().Substring(imageStr["image"].ToString().LastIndexOf('/') + 1).Replace(productCode, "").Replace(".jpg","").Replace(".mp4","")' class="@liClass">
339 <img data-image="@getimageDataImg" data-image-big="@getimageDataImgBig" data-image-thumb="@getimageImg" class="img-responsive" src="@getimageDataImgBig" title="@imageStr["title"]" alt="@imageStr["title"]" />
340 <span class="shadow"></span>
341 </a>
342 </div>
343
344 <div class="item col-sm-4 col-xs-4 hidden">
345 <a href="@getimageDataImgBig" title="@imageStr["title"]" data-type='@imageStr["image"].ToString().Substring(imageStr["image"].ToString().LastIndexOf('/') + 1).Replace(productCode, "").Replace(".jpg","").Replace(".mp4","")' class="@liClass swipebox">
346 <img data-image="@getimageDataImg" data-image-big="@getimageDataImgBig" data-image-thumb="@getimageImg" class="img-responsive" src="@getimageDataImgBig" title="@imageStr["title"]" alt="@imageStr["title"]" />
347 <span class="shadow"></span>
348 </a>
349 </div>
350 }
351 }
352 else {
353 <a href="@productGetImage" class="swipebox hidden" title="@productName" id="galeriz">Deschide galeria </a>
354 }
355
356
357 @foreach(var thumbs in loopDetails) {
358 <div class="item col-sm-4 col-xs-4">
359
360 @if(!string.IsNullOrEmpty(thumbs.GetString("Ecom:Product:Detail.Image.Clean"))) {
361 <a href="#" title="">
362 <img src='@thumbs.GetString("Ecom:Product:Detail.Image.Clean")' alt="">
363 <span class="shadow"></span>
364 </a>
365 } else {
366 <a href="#" title="">
367 <img src="/Files/Images/Products/Large/no-image-available_inter.png" />
368
369 <span class="shadow"></span>
370 </a>
371 }
372 </div>
373 }
374 @if (!string.IsNullOrEmpty(productVideo1)) {
375 var productVideo1Link = productVideo1.Substring(17,GetString("Ecom:Product:Field.VideoLink1.Value").Length - 17);
376 <div class="col-xs-12">
377 <iframe src="https://www.youtube.com/embed/@productVideo1Link?rel=0" frameborder="0" allowfullscreen style="width: 100%; height: 315px;"></iframe>
378 </div>
379 }
380 @if (!string.IsNullOrEmpty(productVideo2)) {
381 var productVideo2Link = productVideo2.Substring(17,GetString("Ecom:Product:Field.VideoLink2.Value").Length - 17);
382 <div class="col-xs-12">
383 <iframe src="https://www.youtube.com/embed/@productVideo2Link?rel=0" frameborder="0" allowfullscreen style="width: 100%; height: 315px;"></iframe>
384 </div>
385 }
386
387 </div>
388 </div>
389 <div class="col-sm-6 detail">
390 <div class="breadcrumbs col-xs-12 noPadding">
391 <ul id="breadcrumbs" vocab="http://schema.org/" typeof="BreadcrumbList">
392 <li property="itemListElement" typeof="ListItem"><a href='/' title="Acasa" property="item" typeof="WebPage"><span property="name">Acasa</span></a></li>
393
394 @RenderNavigation(new {
395 template = "Breadcrumb.xslt",
396 expandmode = "pathonly",
397 sitemapmode="true",
398 id = "NavBreadcrumb"
399 })
400 </ul>
401 </div>
402
403 <h1 class="title">@productName</h1>
404 <p class="code">@Translate("Product Code", "cod"): @productCode</p>
405
406
407 @if(userIsLoggedIn) {
408 if(GetBoolean("Ecom:Product.IsProductInFavoriteList")){
409 <p class="favorite"><a href='@GetValue("Ecom:Product.RemoveFromFavorites")'><i class="fa fa-heart" aria-hidden="true"></i> Sterge produsul din lista de favorite</a></p>
410 }else{
411 <p class="favorite"><a href='@GetValue("Ecom:Product.AddToFavorites")'><i class="fa fa-heart-o" aria-hidden="true"></i> Adauga produsul in lista de favorite</a></p>
412 }
413 }
414
415
416
417
418
419 <div class="addthis_sharing_toolbox"></div>
420
421
422 <div class="row" style="position: relative;">
423 <div class="col-sm-12">
424 @if(userIsLoggedIn) {
425 if (!PriceUnavailable) {
426 <p class="price">@GetPriceMain(productPrice)<sup>@GetPriceUnits(productPrice)</sup><span style="font-size: 22px">@productCurrency</span> <span style="font-size: 14px">(fara TVA)</span></p>
427 if (productOnlinePrice != "0,00") {
428 <p class="old-price">@GetPriceMain(productOnlinePrice)<sup>@GetPriceUnits(productOnlinePrice)</sup> <span>@productCurrency</span> (fara TVA)</p>
429 }
430
431 if (productDiscountValue > 9) {
432 <p class="discount">@productDiscount @Translate("Product Discount","discount")</p>
433
434 }
435 }
436 }
437
438 <div class="variant">
439 @* @if (stopOrder == false) { *@
440 <div class="btn-group">
441 @*if(hasVariants && !isVariant) {
442
443 <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
444 <span><i class="fa fa-angle-down"></i></span>
445 </button>
446 <ul class="dropdown-menu">
447 @foreach(var variant in variantLoop) {
448 var link = variant.GetString("Ecom:Product.LinkGroup.Clean") + "&VariantID=" + variant.GetString("Ecom:Product.VariantID");
449 var variantStock = variant.GetString("Ecom:Product.Stock");
450 <li><a href='@link'>@variant.GetString("Ecom:VariantCombination.VariantText")</a></li>
451 }
452 </ul>
453 }else{
454 <button type="button" class="btn btn-rtc" data-select='@GetString("Ecom:Product.SelectedVariantComboName")'>@productVariantText</button>
455 }
456 *@
457
458
459
460
461 @*if (!string.IsNullOrEmpty(GetString("Ecom:Product.VariantID.Extended"))) {
462 <button type="button" class="btn btn-rtc" data-select='@GetString("Ecom:Product.SelectedVariantComboName")'>@GetString("Ecom:Product.SelectedVariantComboName")</button>
463 } else {
464 <button type="button" class="btn btn-rtc" data-select=""> @Translate("alege unitatea de vanzare","alege unitatea de vanzare")</button>
465 } *@
466 @if(currentUser != null && !string.IsNullOrEmpty(currentUser.CustomerNumber)) {
467 if(hasVariants && variantLoop.Count() >1) {
468
469 if(isVariant){
470 <button type="button" class="btn btn-rtc" data-select="">@productVariantText</button>
471 }else{
472 <button type="button" class="btn btn-rtc" data-select="">@Translate("alege unitatea de vanzare","alege unitatea de vanzare")</button>
473 }
474 <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
475 <span><i class="fa fa-angle-down"></i></span>
476 </button>
477 <ul class="dropdown-menu">
478 @foreach(var variant in variantLoop) {
479 var link = variant.GetString("Ecom:Product.LinkGroup.Clean") + "&VariantID=" + variant.GetString("Ecom:Product.VariantID");
480 var variantStock = variant.GetString("Ecom:Product.Stock");
481 <li><a href='@link'>@variant.GetString("Ecom:VariantCombination.VariantText")</a></li>
482 }
483 </ul>
484 } else {
485 <button type="button" class="btn btn-rtc" data-select='@productVariantText'>@productVariantText</button>
486 }
487 } else {
488 <p> Pentru pret si disponibilitate stoc, autentifica-te sau solicita cont</p>
489 <a href="/Default.aspx?ID=7" class="button-login">@Translate("Login", "Login")</a>
490 }
491 </div>
492 @* } *@
493
494 </div>
495 </div>
496
497 <div class="col-sm-12">
498 @if(userIsLoggedIn) {
499 if (!PriceUnavailable) {
500 <form name="order" method="post" id="product-page-order" >
501 @if (!string.IsNullOrEmpty(productStockText))
502 {
503 if(@productStockText == "Momentan indisponibil")
504 {
505 if(GetBoolean("Ecom:Product:Field.fidelizare"))
506 {
507 <p style = "color: red; display: none; font-size: 15px;" class="xfidelizare">
508 @{
509 double puncte = Convert.ToDouble(productPrice);
510 }
511
512 @if(GetBoolean("Ecom:Product:Field.Lichidare.Value") || productCode.Substring(0, 4) == "zSL11" || productCode == "FK024" || productCode == "FK183" || productCode == "FK424" || productCode == "LX810136" || productCode == "LX813900" || productCode == "LX814000" || productCode == "LX815000" || productCode == "LX818700" || productCode == "LX818800" || productCode == "LX819930" || productCode == "LX830002" || productCode == "LX830003" || productCode == "LX830004" || productCode == "LX830005" || productCode == "LX830006" || productCode == "LX830007" || productCode == "LX830008" || productCode == "LX830009" || productCode == "LX830010" || productCode == "LX850000" || productCode == "LX851000" || productCode == "MLTMB2236I") {
513 <span style="color: black; font-weight: bold">2XStele » </span><b>Primesti @(Math.Round(puncte, 0)*2) </b><b>stele pentru acest produs</b>
514 }
515 else {
516 <b>Primesti @(Math.Round(puncte, 0)) </b><b>stele pentru acest produs</b>
517 }
518 </p>
519 }
520 <p class="availability indisponibil">@productStockText </p>
521 } else {
522 if(GetBoolean("Ecom:Product:Field.fidelizare"))
523 {
524 <div> </div>
525 <div class="item xfidelizare">
526 <p style = "color: red; display: none; font-size: 15px;" class="xfidelizare">
527 <a href="https://www.rtc.ro/cauta?q=rtcstars" class="xfidelizare" style="display: none;"><img src='@("/Files/Images/badges/rtcstars.png")' width='38' alt='Vezi toate produsele RtcStars' title='Vezi toate produsele RtcStars'></a>
528 @{
529 double puncte = Convert.ToDouble(productPrice);
530 }
531
532 @if(GetBoolean("Ecom:Product:Field.Lichidare.Value") || productCode.Substring(0, 4) == "zSL11" || productCode == "FK024" || productCode == "FK183" || productCode == "FK424" || productCode == "LX810136" || productCode == "LX813900" || productCode == "LX814000" || productCode == "LX815000" || productCode == "LX818700" || productCode == "LX818800" || productCode == "LX819930" || productCode == "LX830002" || productCode == "LX830003" || productCode == "LX830004" || productCode == "LX830005" || productCode == "LX830006" || productCode == "LX830007" || productCode == "LX830008" || productCode == "LX830009" || productCode == "LX830010" || productCode == "LX850000" || productCode == "LX851000" || productCode == "MLTMB2236I") {
533 <span style="color: black; font-weight: bold">2XStele » </span><b>Primesti @(Math.Round(puncte, 0)*2) </b><b>stele pentru acest produs</b>
534 }
535 else {
536 <b>Primesti @(Math.Round(puncte, 0)) </b><b>stele pentru acest produs</b>
537 }
538 </p>
539 @if(productCode == "LC000940" || productCode == "LC000941" || productCode == "LC000942" )
540 {
541 <h4 style="margin-top: 15px; color: orange; padding: 5px;">Discounturi cantitative!</h4>
542 <table border=1 style="padding: 4px;">
543 <tr style="background: orange; padding: 5px; color:white;">
544 <th style="background: orange; padding: 5px;">1000 seturi</th><th style="background: orange; padding: 5px;">2000 seturi</th><th style="background: orange; padding: 5px;">3000 seturi</th>
545 </tr>
546 <tr style="padding: 5px; background: #EEEEEE;">
547 <td style="padding: 5px;">10% discount</td><td style="padding: 5px;">20% discount</td><td style="padding: 5px;">30% discount</td>
548 </tr>
549 <tr>
550 <td style="padding: 5px;">@(Math.Round(Convert.ToDouble(productPrice) * 0.9,2)) lei</td><td style="padding: 5px;">@(Math.Round(Convert.ToDouble(productPrice) * 0.8,2)) lei</td><td style="padding: 5px;">@(Math.Round(Convert.ToDouble(productPrice) * 0.7,2)) lei</td>
551 </tr>
552 </table>
553 }
554 </div>
555 }
556 if(@stocfurnizor == "0" && (GetString("Ecom:Product:Field.ItemsCustClassification") == "E" || (productCode.Substring(0, 2) == "AX" && productStock == "0"))) {
557 <p class="availability indisponibil" style="color: red; font-size: 14px!important; font-weight:bold;">@productStockText.ToUpper() </p>
558 }
559 else if (@stocfurnizor == "99999" && @productCode.Substring(0, 2) == "AX") {
560 <p class="availability indisponibilai" style="font-size: 14px!important; font-weight:bold;">@productStockText.ToUpper() </p>
561 }
562 else {
563 if(@productStockText == "Comanda Speciala")
564 {
565 <p class="availability indisponibil" style="color: red; font-size: 14px!important; font-weight:bold;">@productStockText.ToUpper()</p>
566 }
567 else {
568 <p class="availability">@productStockText.ToUpper() </p>
569 }
570 }
571
572 }
573
574 }
575 <div class="quantity">
576 <span>@Translate("Produs Cantitate","cantitate")</span>
577
578 <input type="number" name="Quantity" class="form-control stepValue" value="1" data-stock="@productStock" step="1" min="1" />
579
580 </div>
581 <input type="hidden" name="ProductURL" id="ProductURL" value="" />
582 <input type="hidden" name="CartCmd" id="CartCmd" value="add" />
583 <input type="hidden" name="ProductID" id="ProductID" value="@productID" /><!--VR221002-->
584 <input type="hidden" name="VariantID" id="VariantID" value='@GetString("Ecom:Product.VariantID")' />
585 <input type="hidden" name="UnitID" id="UnitID" value="" />
586 <input type="hidden" name="wishListID" id="wishListID" value="0" />
587 <input type="hidden" name="EcomOrderLineFieldInput_UM" value="@productCurrentUM"/>
588 <input type="hidden" name="EcomOrderLineFieldInput_Cod" value="@productCode"/>
589
590 @if(GetString("Ecom:Product.VariantCount") == "0") {
591 <button type="submit" class="button">@Translate("Adauga in cos","Adauga in cos")</button>
592 } else {
593 if(GetString("Ecom:Product.VariantID") != "") {
594 if((GetString("Ecom:Product:Field.ItemsCustClassification") == "E" && stocfurnizor == "99999") || stocfurnizor == "99999") {
595 <div class="disabled-submit" data-toggle="tooltip" data-placement="top" title='@Translate("Contactati consultantul de vanzari!","Contactati consultantul de vanzari!")'>
596 <button type="submit" class="button" style="background: gray" disabled>@Translate("Adauga in cos","Adauga in cos")</button>
597 </div>
598 }
599 else {
600 if((GetString("Ecom:Product:Field.ItemsCustClassification") == "E" || productCode.Substring(0, 2) == "AX") && stocfurnizor == "0" && productStock == "0") {
601 <div class="disabled-submit" data-toggle="tooltip" data-placement="top" title='@Translate("Contactati consultantul de vanzari!","Contactati consultantul de vanzari!")'>
602 <button type="submit" class="button" style="background: gray; display: none" disabled>@Translate("Adauga in cos","Adauga in cos")</button>
603 </div>
604 }
605 else {
606 <button type="submit" class="button">@Translate("Adauga in cos","Adauga in cos")</button>
607 }
608 }
609 } else {
610 <div class="disabled-submit" data-toggle="tooltip" data-placement="top" title='@Translate("Alege o optiune","Alege o optiune")'>
611 <button type="submit" class="button" disabled>@Translate("Adauga in cos","Adauga in cos")</button>
612 </div>
613
614 }
615 }
616 </form>
617 } else {
618
619 if(@productStockText == "Momentan indisponibil")
620 {<p class="availability indisponibil">@productStockText </p>
621 }else{
622 <p class="availability">@productStockText </p>
623 }
624
625
626
627 }
628 }
629 </div>
630
631 @if(!string.IsNullOrEmpty(GetString("Ecom:Manufacturer.Logo"))) {
632 <div class="product-brand-logo">
633 @* <a href="@productManufacturerLink" title="@productManufacturerName"> *@
634 <img src='/Files/@GetString("Ecom:Manufacturer.Logo")' alt="@productManufacturerName" />
635 @* </a> *@
636 </div>
637 }
638
639 </div>
640
641 <div class="badges">
642
643 @if(GetBoolean("Ecom:Product:Field.SimteVerde")) {
644 <div class="item">
645 <a href="/rtc-simte-verde/" title="Vezi toate produsele sustenabile RTC"><img src="/Files/Images/badges/Simte-verde-2023_site.jpg" style="height:40px;" title="Vezi toate produsele sustenabile- Simte Verde" /></a>
646 </div>
647 <div class="item">
648 <p style="color:gray; background-color: #daf9b1; padding: 7px;"> <a href="/rtc-simte-verde/" style="color: white;" title="Vezi toate produsele sustenabile RTC"><b>Vezi toate produsele Simte Verde!</b> <i class="fa fa-leaf" style="color:#2a3b8f; margin-right: 10px; padding: 3px; font-size: 18px;"> </i></a> </p>
649 </div>
650 }
651
652 @if(InfoAmbalare!="") {
653 <div class="item" style="clear:both;">
654 <p style="color:gray; background-color: #ececec; padding: 7px;"> <i class="fa fa-info-circle" style="color:#2a3b8f; margin-right: 10px; padding: 3px; font-size: 18px;"> </i><b>INFO</b> - ambalare superioara: @InfoAmbalare</p>
655 </div>
656
657 }
658
659 @if(testeaza != "") {
660 if(testeaza == "1") {
661 <div class="item">
662
663 <a href="https://www.rtc.ro/testeaza-gratuit-produsele-rtc?idp=@productCode"><img src='@("/Files/Images/badges/testeaza.png")' width='38' alt='Testeaza Gratuit' title='Testeaza Gratuit'>
664 </a>
665
666 </div>
667 } }
668
669
670
671 @if(bonus != "") {
672 if(bonus == "666") {
673 <div class="item">
674
675 <a href="#"><img src='@("/Files/Images/badges/bonus-1-6.png")' width='38' alt='Produs cu Bonus' title='Produs cu Bonus'>
676 </a>
677
678 </div>
679 }
680 else {
681 <div class="item">
682
683 <a href="http://rtc.ro/Content/Newsletter/Leitz-Culori-WOW/index.html"><img src='@("/Files/Images/badges/" + @bonus + ".png")' width='38' alt='Puncte in Promotia Leitz WOW' title='Puncte in Promotia Leitz WOW'>
684 </a>
685
686 </div>
687 }
688 }
689 </div>
690
691 @if(testeaza != "") {
692 if(testeaza == "1") {
693 <div class="badges">
694
695 <p> Testeaza gratuit acest produs! – click <a href="https://www.rtc.ro/testeaza-gratuit-produsele-rtc?idp=@productCode"><strong>AICI</strong></a> si iti trimitem produsul!</p>
696
697 </div>
698 } }
699 @if(userIsLoggedIn) {
700 <button type="button" class="compare" data-group-id="@groupId" data-product-id="@productCode">@Translate("compara","compara") <i class="fa fa-square-o"></i></button>
701
702 <div class="compare-input-box form-inline">
703 <p>@Translate("Compara cu:","Compara cu:")</p>
704 <select class="form-control" id="input-compare" data-group-id="@groupId" data-product-id="@productCode">
705 <option value="" disabled>Alege un produs...</option>
706 </select>
707 <button type="button" class="btn-main">@Translate("Compara","Compara")</button>
708 </div>
709 }
710 <div class="description">
711 <h2>Descriere</h2>
712 @{
713 if(GetString("Ecom:Product:Field.stoppromo").Length > 4 && GetString("Ecom:Product:Field.startpromo").Length > 4) {
714 if (Convert.ToDateTime(@DateTime.Now.ToString("yyyy-MM-dd")) <= Convert.ToDateTime(@GetString("Ecom:Product:Field.stoppromo")) && Convert.ToDateTime(@DateTime.Now.ToString("yyyy-MM-dd")) >= Convert.ToDateTime(@GetString("Ecom:Product:Field.startpromo")))
715 {
716 @GetString("Ecom:Product:Field.textpromo")
717 }
718
719 }
720
721 }
722 @if(lincu !="") {
723 <a href="@lincu"><img src="http://rtc.ro/Files/Images/Badges/PDF-icon.jpg" width="50" title="Descarca Documentatia Tehnica" /></a>
724 }
725 @productDescription
726 </div>
727
728 <div class="specifications">
729
730 @foreach(var item in GetLoop("ProductCategories")) {
731
732 if(item.GetLoop("ProductCategoryFields").Count()>0) {
733 <hr style="clear:both;" />
734 <h2>Specificatii</h2>
735 }}
736 <table>
737 <colgroup>
738 <col class="key">
739 <col class="value">
740 </colgroup>
741 <tbody>
742
743 @foreach(var field in GetLoop("ProductCategories")) {
744
745 foreach (var field2 in field.GetLoop("ProductCategoryFields")) {
746 if (!string.IsNullOrEmpty(field2.GetString("Ecom:Product.CategoryField.Value.Clean"))) {
747 <tr>
748 <td colspan='3' valign='top'>@if(field2.GetString("Ecom:Product.CategoryField.Label").Any(char.IsDigit)) { } else {<span> @field2.GetString("Ecom:Product.CategoryField.Label") </span>} </td>
749 <td colspan='2' style='padding-left: 30px;'>@field2.GetString("Ecom:Product.CategoryField.Value.Clean")</td>
750 </tr>
751 }
752
753 }
754
755 }
756 </tbody>
757 </table>
758 </div>
759
760 <!-- PRODUSE COMPLEMENTARE -->
761
762 <div class="specifications">
763
764 @foreach(var item in GetLoop("ProductRelatedGroups")) {
765
766 if(item.GetLoop("RelatedProducts").Count()>0) {
767 <hr style="clear:both;" />
768 if(item.GetString("Ecom:Product:RelatedGroup.Name") == "Alte variante") {<h2 id="relx">@item.GetString("Ecom:Product:RelatedGroup.Name")</h2>}
769 else {<h2>@item.GetString("Ecom:Product:RelatedGroup.Name")</h2>}
770 }
771 int i = 0;
772 string cssul = "col-xs-4 complem";
773
774 foreach(var produs in item.GetLoop("RelatedProducts").Take(32))
775 {
776 i++;
777
778 if(i > 6) {
779 cssul = "col-xs-4 complem hidden";
780 }
781
782 <div class="@cssul">
783
784 @{string imagesFolderC = "/Files/Images/Products/Large/";
785 string imagePatternC = imagesFolderC + produs.GetString("Ecom:Product:Field.Cod") + ".jpg";
786 string productImageC = GetString("Ecom:Product.PrimaryImage");//GetImagePathUrl(produs.GetString("Ecom:Product.ImageSmall.Clean"), produs.GetString("Ecom:Product.ImageMedium.Clean"), produs.GetString("Ecom:Product.ImageLarge.Clean"), imagePatternC);
787 string productGetImageC = GetImage(imagePatternC, 0, 100);}
788 <img src="@productGetImageC" />
789
790 <div style="min-height:100px;"> @produs.GetString("Ecom:Product.VariantLinkGroup").Replace("ID="+@produs.GetValue("Ecom:Product.PrimaryOrCurrentPageID"),"ID=2") </div>
791
792 </div>
793
794
795 }
796 if(i > 6) { <br style="cleaar:both" />
797 <button class="button-login afis-toate" style="background-color: grey">Afiseaza mai multe</button>
798 }
799 }
800 </div>
801
802 <!-- PRODUSE COMPLEMENTARE -->
803 @if(userIsLoggedIn) {
804 if(productLoyalityPoints != "0") {
805 <div class="fidelizare">
806 <p>Campanie de fidelizare:</p>
807 <span class="badge-lp">@productLoyalityPoints <br/>puncte</span>
808 </div>
809 }
810 }
811
812
813
814 </div>
815
816 </div>
817
818
819
820
821
822 @SnippetStart("LowerCarousel")
823 @SnippetEnd("LowerCarousel")
824 <div class="compare-wrapper">
825 <div class="compare-content">
826
827 </div>
828 </div>
829 <div class="main-image-popup">
830 <div class="inner-wrap">
831 <button class="close">
832 <i class="fa fa-times" aria-hidden="true"></i>
833 </button>
834 <div class="bmodal-content"></div>
835 </div>
836 </div>
837
838 <!-- Go to www.addthis.com/dashboard to customize your tools -->
839 @* <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5716953ddb10f4d0"></script> *@
840
841
842 @SnippetStart("Bottom")
843 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-zoom/1.7.15/jquery.zoom.min.js" type="text/javascript"></script>
844 <script type="text/javascript">
845 $(".afis-toate").on('click' , function() {
846 $(".complem").removeClass("hidden");
847 $(".afis-toate").addClass("hidden");
848 });
849 $(".afisx").on('click' , function() {
850 $(".extindere").removeClass("hidden");
851 $(".afisx").addClass("hidden");
852 });
853
854 $(function(){
855 $('#product-page-order').on("submit", function(e){
856 var variantValue = $(this).find("#VariantID").val();
857 if (variantValue === "") {
858 e.preventDefault();
859 alertify.logPosition("center center");
860 alertify.alert("Alegeti o optiune");
861 }
862 });
863 });
864 </script>
865
866
867 @SnippetEnd("Bottom")
868 @if(GetString("Ecom:Product:Field.longpage") != "") {
869 <div class="col-xs-12 hidden-print">
870
871 @GetString("Ecom:Product:Field.longpage")
872 </div>
873 }
874
875 <div class="col-xs-12 hidden-print">
876
877 <p style="color: gray; font-size:12px; padding:4px; text-align: center; font-style:italic">Depunem un efort constant pentru pastrarea acuratetii informatiilor. In unele cazuri specificatiile si informatiile prezentate pe site-ul www.RTC.ro pot contine mici inadvertente.<br /> Fotografiile produselor au caracter informativ, pot contine accesorii neincluse in pachetele standard si nu reprezinta obligatie contractuala. </p>
878
879 </div>
880
881 <style>
882 .item-left {
883 width: 50%;
884 float:left;
885 }
886 .item-left h2 b strong {
887 font-size:16px;
888 color: green;
889 }
890
891 .item-right h2 b strong{
892 font-size:16px;
893 color: green;
894 }
895
896 .item-right {
897 width: 50%;
898 float:right;
899
900 }
901
902 .items-row {
903 clear:both;
904 overflow:auto;
905
906 margin-top: 40px;
907
908 }
909 .items-row h2 strong{
910 font-size:14px;
911 }
912
913 .items-row h2 b{
914 font-size:14px;
915 }
916 </style>
917