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));
}