{"version":3,"file":"service.min.js","sources":["service.min.js"],"sourcesContent":["/**\r\n* Handle AJAX errors by displaying an alert message.\r\n* @param {object} xhr - The XMLHttpRequest object.\r\n* @param {string} status - The status of the response.\r\n* @param {string} error - The error message.\r\n*/\r\nfunction handleAjaxError(xhr, status, error) {\r\n alert(\"An error occurred: \" + error);\r\n}\r\n\r\nasync function Set_SelectedBranch(itemID, isAuthenticated, token, showPopUp) {\r\n const APIURL = `/Select?getPopup=${isAuthenticated}`;\r\n try {\r\n const response = await fetch(APIURL, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n \"RequestVerificationToken\": token\r\n },\r\n body: JSON.stringify({ ItemID: itemID })\r\n });\r\n\r\n if (response.ok) {\r\n Refresh_SearchBox(token);\r\n\r\n // If authenticated, process the popup\r\n if (isAuthenticated && showPopUp) {\r\n const html = await response.text();\r\n showpopup(html);\r\n }\r\n } else {\r\n const errorText = await response.text();\r\n throw new Error('Failed to update branch: ' + errorText);\r\n }\r\n } catch (error) {\r\n console.error('Error:', error);\r\n }\r\n}\r\n\r\nfunction Get_SelectedBranchStock(latitude, longitude, productNumber) {\r\n fetch('/GetBranchStockBySearchTerm', {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n \"RequestVerificationToken\": $(\"#PDP_API [name='__RequestVerificationToken']\").val()\r\n },\r\n body: JSON.stringify({ SearchLatitude: latitude, SearchLongitude: longitude, ProductNumber: productNumber })\r\n })\r\n .then(response => response.text())\r\n .then(response => {\r\n $(\".nearby-branches-stock\").remove();\r\n $(\".availability-checker\").append(response);\r\n })\r\n .catch(error => console.error('Error:', error));\r\n}\r\n\r\nfunction AutoFillUsername() {\r\n const APIURL = '/login/GetRememberMe';\r\n try {\r\n fetch(APIURL, {\r\n method: 'GET',\r\n headers: {\r\n \"RequestVerificationToken\": $(\"[name='__RequestVerificationToken']\").val()\r\n },\r\n })\r\n .then(response => response.text())\r\n .then(email => {\r\n if (email && email.trim() !== '') {\r\n $('#username_id').val(email);\r\n $('#password_id').focus();\r\n } else {\r\n $('#username_id').focus();\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Error:', error);\r\n });\r\n } catch (error) {\r\n console.log('Error:', error);\r\n }\r\n}\r\n\r\n/**\r\n* Refresh the search box DOM content\r\n*/\r\nfunction Refresh_SearchBox(token) {\r\n fetch('/refresh-search-box', {\r\n method: 'GET',\r\n headers: {\r\n \"RequestVerificationToken\": token\r\n }\r\n })\r\n .then(response => response.text())\r\n .then(response => $('#branch-selection-container').find(\".branch-selection\").replaceWith(response));\r\n}\r\n\r\n/**\r\n* Refresh the Popular Products DOM content\r\n*/\r\nfunction Refresh_PopularProducts(token) {\r\n var path = $('#path_popular_products').val()\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/refresh-popular-products\",\r\n data: { path: path },\r\n beforeSend: function (request) {\r\n request.setRequestHeader(\"RequestVerificationToken\", token);\r\n },\r\n success: function (response) {\r\n $('#PopularProductsWidget').replaceWith(response)\r\n Refresh_PopularProducts_OwlSlider('#PopularProductsWidget')\r\n },\r\n error: handleAjaxError\r\n });\r\n}\r\n\r\n/**\r\n* Refresh the OWL slider\r\n*/\r\nfunction Refresh_PopularProducts_OwlSlider(containerId) {\r\n var owl = $(containerId).find('.owl-carousel');\r\n owl.owlCarousel({\r\n autoplay: false,\r\n loop: true,\r\n nav: true,\r\n dots: true,\r\n responsive: {\r\n 1025: {\r\n dotsEach: 4,\r\n items: 4.01,\r\n margin: 19,\r\n slideBy: 4\r\n },\r\n 660: {\r\n dotsEach: 3,\r\n items: 3.01,\r\n margin: 16,\r\n slideBy: 3\r\n },\r\n 374: {\r\n dotsEach: 2,\r\n items: 2.01,\r\n margin: 16,\r\n slideBy: 2,\r\n },\r\n 0: {\r\n dotsEach: 1,\r\n items: 1.01,\r\n margin: 16,\r\n slideBy: 1,\r\n }\r\n },\r\n slideSpeed: 1000,\r\n autoplaySpeed: 1000,\r\n navSpeed: 200,\r\n fluidSpeed: 1000,\r\n dotsSpeed: 200,\r\n smartSpeed: 1000\r\n });\r\n}\r\n\r\nasync function encryptData(data, key) {\r\n try {\r\n const iv = crypto.getRandomValues(new Uint8Array(16)); // Generate a random IV\r\n const encoder = new TextEncoder();\r\n const dataArray = encoder.encode(data);\r\n\r\n const encryptedData = await crypto.subtle.encrypt(\r\n {\r\n name: \"AES-CBC\",\r\n iv: iv\r\n },\r\n key,\r\n dataArray\r\n );\r\n\r\n // Convert encrypted data and IV to Base64\r\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedData)));\r\n const ivBase64 = btoa(String.fromCharCode(...iv));\r\n\r\n return { encryptedBase64, ivBase64 };\r\n } catch (error) {\r\n console.error(\"Encryption error:\", error);\r\n throw error;\r\n }\r\n}\r\n\r\nasync function generateKey() {\r\n const key = await crypto.subtle.generateKey(\r\n {\r\n name: \"AES-CBC\",\r\n length: 128\r\n },\r\n true,\r\n [\"encrypt\", \"decrypt\"]\r\n );\r\n return key;\r\n}\r\n\r\nfunction Submit_NPSFeedback(feedback, uniqueID, score) {\r\n const encodedFeedback = encodeURIComponent(feedback);\r\n\r\n return fetch('/nps/feedback/' + uniqueID + '/score/' + score + '/save', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n \"RequestVerificationToken\": $(\"[name='__RequestVerificationToken']\").val()\r\n },\r\n body: JSON.stringify({ Feedback: encodedFeedback, FeedbackUniqueGUID: uniqueID })\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json(); // Return the JSON response if needed\r\n } else {\r\n throw new Error('Failed to submit feedback');\r\n }\r\n });\r\n}"],"names":["handleAjaxError","xhr","status","error","alert","async","Set_SelectedBranch","itemID","isAuthenticated","token","showPopUp","APIURL","html","errorText","response","await","fetch","method","headers","Content-Type","RequestVerificationToken","body","JSON","stringify","ItemID","ok","text","Error","Refresh_SearchBox","showpopup","console","Get_SelectedBranchStock","latitude","longitude","productNumber","$","val","SearchLatitude","SearchLongitude","ProductNumber","then","remove","append","catch","AutoFillUsername","email","trim","focus","log","find","replaceWith","Refresh_PopularProducts","path","ajax","type","url","data","beforeSend","request","setRequestHeader","success","Refresh_PopularProducts_OwlSlider","containerId","owlCarousel","autoplay","loop","nav","dots","responsive","1025","dotsEach","items","margin","slideBy","660","374","0","slideSpeed","autoplaySpeed","navSpeed","fluidSpeed","dotsSpeed","smartSpeed","encryptData","key","iv","crypto","getRandomValues","Uint8Array","dataArray","TextEncoder","encode","encryptedData","subtle","encrypt","name","encryptedBase64","btoa","String","fromCharCode","ivBase64","generateKey","length","Submit_NPSFeedback","feedback","uniqueID","score","encodedFeedback","encodeURIComponent","Feedback","FeedbackUniqueGUID","json"],"mappings":"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"}