function requireScript(file, callback) { var script = document.createElement('script'); script.type = 'text/javascript'; script.onload = callback; script.src = file; document.getElementsByTagName('head')[0].appendChild(script); } function requireStyle(file) { var style = document.createElement('style'); style.type = 'text/css'; style.src = file; document.getElementsByTagName('head')[0].appendChild(style); } function renderAndShowCustomerPulse(token, language) { window.CustomerPulse.render( document.getElementsByTagName('body')[0], { modal: true, token: token, lang: language }, ); setTimeout(function () { HideHappyLoader(); window.CustomerPulse.openModal(); }, 1000); } var happy_base_url = "https://happiness.gcaa.gov.ae/"; var happy_language = "en"; var happy_id = 0; detectBrowserandOS(); function registerCustomerPulseModalEvents() { window.addEventListener('so-widget-closed', () => { console.log('modal has been closed.'); }); window.addEventListener('so-widget-completed', () => { console.log("Completed Event"); markSubmit(); }); } requireScript("https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.3.10/sweetalert2.all.min.js", function () { }); requireStyle("https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.3.10/sweetalert2.min.css"); requireScript("https://survey.customerpulse.gov.ae/destination/index.js", registerCustomerPulseModalEvents); CheckAndLoadJquery(); var PostDataDTO = { Language: '', Source: '', ServiceCatalogueID: '', Phone: '', Email: '', UserName: '', ApplicationRefNo: '', EID: '', Gender: '', Nationality: '', Name: '', AllowMultiple: false }; function InitilizeHappinessMeterModal(PostData) { happy_language = PostData.Language; var validationMessage = validateUserData(PostData); if (validationMessage) { ShowHappyMessage(validationMessage, true); } else { ShowHappyLoader(""); var _endpoint = happy_base_url + "CustomerPulse/api/v2/CustomerPulse/GetToken"; var _payload = { service_catalogue_id: PostData.ServiceCategoryID, reference_no: PostData.ApplicationRefNo, emirates_id: PostData.EID, name: PostData.Name, email: PostData.Email, mobile: PostData.Phone, gender: PostData.Gender, nationality: PostData.Nationality, user_id: PostData.UserName, language: PostData.Language, allow_multiple: PostData.AllowMultiple, happy_id: happy_id, api_source: PostData.Source, page_url: document.location.href, is_mobile: false //window.browserInfo.mobile // disable after meeting with PMO with Shamas bhai on 21-07-2-22 }; $.ajax({ url: _endpoint, type: 'POST', dataType: 'json', contentType: 'application/json', data: JSON.stringify(_payload), success: function (data) { if (!data.success) { ShowHappyMessage(data.message, true); console.log(data); } else { happy_id = data.id; setTimeout(function () { HideHappyLoader(); }, 1000); if (data.message != "today_already_submitted") { renderAndShowCustomerPulse(data.token, _payload.language); } } } }); } } function CheckAndLoadJquery() { if (window.jQuery) { } else { requireScript("https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js", function () { }); } } function validateUserData(PostDataDTO) { var strValidationMessage = ""; if (PostDataDTO.ServiceCategoryID) { } else strValidationMessage += "\"Service Category ID\" is required.
"; if (PostDataDTO.ServiceCategoryID) { if (PostDataDTO.ServiceCatalogueID == "0000") strValidationMessage += "\"Service Category ID\" is required.
"; } if (PostDataDTO.Source) { } else strValidationMessage += "\"Source\" is required.
"; if (PostDataDTO.UserName) { } else strValidationMessage += "\"UserID or Username\" is required.
"; if (PostDataDTO.ApplicationRefNo) { } else strValidationMessage += "\"ApplicationRefNo\" is required.
"; return strValidationMessage; } function ShowHappyLoader(message) { Swal.fire({ title: happy_language == 'ar' ? '...أرجو الإنتظار' : 'Please wait...', html: message, backdrop: true, allowOutsideClick: false, willClose: () => { } }).then((result) => { }); Swal.showLoading(); } function HideHappyLoader() { Swal.close(); } function ShowHappyMessage(message, isError) { Swal.fire({ icon: isError ? 'error' : 'success', title: isError ? 'Error!' : 'Success', html: message, showCloseButton: true, showCancelButton: false, closeButtonText: 'OK', closeButtonColor: '#d33', }); } function markSubmit() { var _endpoint = happy_base_url + "CustomerPulse/api/v2/CustomerPulse/MarkSubmit?ID=" + happy_id; $.ajax({ url: _endpoint, type: 'GET', dataType: 'json', contentType: 'application/json', success: function (data) { } }); } function detectBrowserandOS() { (function (window) { { /* test cases alert( 'browserInfo result: OS: ' + browserInfo.os +' '+ browserInfo.osVersion + '\n'+ 'Browser: ' + browserInfo.browser +' '+ browserInfo.browserVersion + '\n' + 'Mobile: ' + browserInfo.mobile + '\n' + 'Cookies: ' + browserInfo.cookies + '\n' + 'Screen Size: ' + browserInfo.screen ); */ var unknown = 'Unknown'; // screen var screenSize = ''; if (screen.width) { width = (screen.width) ? screen.width : ''; height = (screen.height) ? screen.height : ''; screenSize += '' + width + " x " + height; } //browser var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browser = navigator.appName; var version = '' + parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion, 10); var nameOffset, verOffset, ix; // Opera if ((verOffset = nAgt.indexOf('Opera')) != -1) { browser = 'Opera'; version = nAgt.substring(verOffset + 6); if ((verOffset = nAgt.indexOf('Version')) != -1) { version = nAgt.substring(verOffset + 8); } } // MSIE else if ((verOffset = nAgt.indexOf('MSIE')) != -1) { browser = 'Microsoft Internet Explorer'; version = nAgt.substring(verOffset + 5); } //IE 11 no longer identifies itself as MS IE, so trap it //http://stackoverflow.com/questions/17907445/how-to-detect-ie11 else if ((browser == 'Netscape') && (nAgt.indexOf('Trident/') != -1)) { browser = 'Microsoft Internet Explorer'; version = nAgt.substring(verOffset + 5); if ((verOffset = nAgt.indexOf('rv:')) != -1) { version = nAgt.substring(verOffset + 3); } } // Chrome else if ((verOffset = nAgt.indexOf('Chrome')) != -1) { browser = 'Chrome'; version = nAgt.substring(verOffset + 7); } // Safari else if ((verOffset = nAgt.indexOf('Safari')) != -1) { browser = 'Safari'; version = nAgt.substring(verOffset + 7); if ((verOffset = nAgt.indexOf('Version')) != -1) { version = nAgt.substring(verOffset + 8); } // Chrome on iPad identifies itself as Safari. Actual results do not match what Google claims // at: https://developers.google.com/chrome/mobile/docs/user-agent?hl=ja // No mention of chrome in the user agent string. However it does mention CriOS, which presumably // can be keyed on to detect it. if (nAgt.indexOf('CriOS') != -1) { //Chrome on iPad spoofing Safari...correct it. browser = 'Chrome'; //Don't believe there is a way to grab the accurate version number, so leaving that for now. } } // Firefox else if ((verOffset = nAgt.indexOf('Firefox')) != -1) { browser = 'Firefox'; version = nAgt.substring(verOffset + 8); } // Other browsers else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) { browser = nAgt.substring(nameOffset, verOffset); version = nAgt.substring(verOffset + 1); if (browser.toLowerCase() == browser.toUpperCase()) { browser = navigator.appName; } } // trim the version string if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix); if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix); if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix); majorVersion = parseInt('' + version, 10); if (isNaN(majorVersion)) { version = '' + parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion, 10); } // mobile version var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer); // cookie var cookieEnabled = (navigator.cookieEnabled) ? true : false; if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) { document.cookie = 'testcookie'; cookieEnabled = (document.cookie.indexOf('testcookie') != -1) ? true : false; } // system var os = unknown; var clientStrings = [ { s: 'Windows 3.11', r: /Win16/ }, { s: 'Windows 95', r: /(Windows 95|Win95|Windows_95)/ }, { s: 'Windows ME', r: /(Win 9x 4.90|Windows ME)/ }, { s: 'Windows 98', r: /(Windows 98|Win98)/ }, { s: 'Windows CE', r: /Windows CE/ }, { s: 'Windows 2000', r: /(Windows NT 5.0|Windows 2000)/ }, { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, { s: 'Windows Vista', r: /Windows NT 6.0/ }, { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, { s: 'Windows NT 4.0', r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ }, { s: 'Windows ME', r: /Windows ME/ }, { s: 'Android', r: /Android/ }, { s: 'Open BSD', r: /OpenBSD/ }, { s: 'Sun OS', r: /SunOS/ }, { s: 'Linux', r: /(Linux|X11)/ }, { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, { s: 'Mac OS X', r: /Mac OS X/ }, { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, { s: 'QNX', r: /QNX/ }, { s: 'UNIX', r: /UNIX/ }, { s: 'BeOS', r: /BeOS/ }, { s: 'OS/2', r: /OS\/2/ }, { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } ]; for (var id in clientStrings) { var cs = clientStrings[id]; if (cs.r.test(nAgt)) { os = cs.s; break; } } var osVersion = unknown; if (/Windows/.test(os)) { osVersion = /Windows (.*)/.exec(os)[1]; os = 'Windows'; } switch (os) { case 'Mac OS X': osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1]; break; case 'Android': osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1]; break; case 'iOS': osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0); break; } } window.browserInfo = { screen: screenSize, browser: browser, browserVersion: version, mobile: mobile, os: os, osVersion: osVersion, cookies: cookieEnabled }; }(this)); }