1<#assign productId = ''/>
2 <#if (productID.getData())?? && productID.getData()?has_content>
3 <#assign productId = productID.getData() />
4 </#if>
5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response)
7 />
8
9 <div class="card">
10 <div class="card-body">
11 <div class="row justify-content-between align-items-center">
12 <div class="col-auto col-sm-auto">
13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div>
15 <div class="col-auto col-sm-auto pl-lg-0">
16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div>
18 </div>
19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone">
22 <#if (benefits.getData())??>
23 ${benefits.getData()} 24</#if>
25 </ul>
26 </div>
27 <div class="btn-float">
28 <div class="premium-cle-pass cart-item">
29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family">
35 <input type="hidden" class="product-expireDate" value="">
36
37 <button
38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart"
39 aria-label="Buy Now"
40 data-redirect-checkout="true"
41 >
42 <span class="material-symbols-rounded"> shopping_cart </span>
43 Buy Now
44 </button>
45 </div>
46 </div>
47 </div>
48
49 <script>
50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date();
53 let futureDate = new Date(currentDate);
54 // Add months dynamically
55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd);
56
57 // Handle overflow (e.g., Jan 31 + 1 month)
58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month
60 }
61
62 // Format as MM/DD/YYYY
63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0');
65 let dd = String(date.getDate()).padStart(2, '0');
66 let yyyy = date.getFullYear();
67 return mm + '/' + dd + '/' + yyyy;
68 }
69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70
71 // Then close the modal
72 $('.single_option').modal('hide'); 73 });
74</script>