{"version":3,"file":"Shared.CallbackModal-535f21cc229d8c9b10ff.js","mappings":"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","sources":["webpack://@whistleout/webui/./Areas/Shared/js/CallbackModal.js"],"sourcesContent":["(function () {\n    'use strict';\n\n    function main() {\n\n        var modal = wo$('#call-back-modal');\n        if (!modal.length) return;\n        var modalData = WhistleOut.readLookupData(modal);\n        var data;\n\n        var callbackModalController = {\n\n            init: function () {\n                modal.on('show.bs.modal', function (e) {\n                    data = WhistleOut.readLookupData(wo$(e.relatedTarget).parent());\n                    modal.find('[data-gateway-heading]').text(data.heading);\n                    modal.find('[data-gateway-sub-heading]').text(data.subHeading);\n                    modal.find('[data-gateway-product-heading]').text(data.productHeading);\n                    modal.find('[data-original-supplier-name]').text(data.originalSupplierName);\n                    modal.find('[data-supplier-image]').attr('src', data.supplierImageUrl);\n                    modal.find('[data-supplier-image]').attr('alt', data.supplierName);\n                    if (data.hasDevice === true &&\n                        data.deviceImageUrl &&\n                        data.deviceImageUrl.length > 0) {\n                        modal.find('[data-device-image]').attr('src', data.deviceImageUrl);\n                        modal.find('[data-device-image]').attr('alt', data.productName);\n                        modal.find('[data-device-image]').show();\n                    } else {\n                        modal.find('[data-device-image]').hide();\n                    }\n                    modal.find('[data-product-name]').text(data.productName);\n                    modal.find('[data-price-whole]').text(data.priceWhole);\n                    if (!data.priceWhole) {\n                        modal.find('[data-price-currency-symbol]').text('');\n                    }\n\n                    modal.find('[data-price-decimal-and-frequency]').text(data.paymentFrequency);\n                    if (data.showMinTotalCost) {\n                        modal.find('[data-min-total-cost]').text(data.minTotalCost);\n                        modal.find('[data-min-total-cost]').show();\n                    } else {\n                        modal.find('[data-min-total-cost]').hide();\n                    }\n\n                    if (data.hideCallbackTime) {\n                        modal.find('[data-callback-time]').hide();\n                    } else {\n                        modal.find('[data-callback-time]').show();\n                    }\n                    modal.find('[data-gateway-option-1]').text(data.option1Text);\n                    if (data.hideOption2) {\n                        modal.find('[data-option-2]').hide();\n                    } else {\n                        modal.find('[data-gateway-option-2]').text(data.option2Text);\n                        modal.find('[data-option-2]').show();\n                    }\n\n                    if (!data.optInText || data.optInText === '') {\n                        modal.find('[data-optin]').hide();\n                        modal.find('[data-privacy]').show();\n                    } else {\n                        modal.find('[data-optin]').show();\n                        modal.find('#optin-label').html(data.optInText);\n                        modal.find('[data-privacy]').hide();\n                    }\n                });\n\n                modal.on('shown.bs.modal', function () {\n                    modal.find('#fname').focus();\n                });\n\n                modal.on('hide.bs.modal', function () {\n                    callbackModalController.clearError();\n                    modal.find('#fname').val('');\n                    modal.find('#lname').val('');\n                    modal.find('#phone').val('');\n                    modal.find('#email').val('');\n                    modal.find('#store').val(modal.find('#store option:first').val());\n                    modal.find('#preferredtime').val(modal.find('#preferredtime option:first').val());\n                    modal.find('#option1').prop('checked', false);\n                    modal.find('#option2').prop('checked', false);\n                    modal.find('#optin').prop('checked', false);\n\n                    var defaultState = modal.data('default-state');\n                    modal.find('#state').val(defaultState);\n\n                    modal.find('[data-form-controls]').show();\n                });\n\n                modal.find('#callback-modal-submit').click(function () {\n                    callbackModalController.clearError();\n\n                    var invalid = false;\n                    var firstName = modal.find('#fname').val();\n                    if (firstName.trim() === '') {\n                        invalid = true;\n                        callbackModalController.showError('#fname');\n                    }\n                    var lastName = modal.find('#lname').val();\n                    if (lastName.trim() === '') {\n                        invalid = true;\n                        callbackModalController.showError('#lname');\n                    }\n                    var phone = modal.find('#phone').val();\n                    if (phone.trim() === '') {\n                        invalid = true;\n                        callbackModalController.showError('#phone');\n                    } else if (!new RegExp(modal.find('#phone').data('validation-regex')).test(phone.trim())) {\n                        invalid = true;\n                        callbackModalController.showError('#phone', true);\n                    }\n\n                    var email = modal.find('#email').val();\n                    if (email.trim() === '') {\n                        invalid = true;\n                        callbackModalController.showError('#email');\n                    } else if (!new RegExp(modal.find('#email').data('validation-regex')).test(email.trim())) {\n                        invalid = true;\n                        callbackModalController.showError('#email', true);\n                    }\n\n                    var storeList = modal.find('#store');\n                    var store = storeList.val();\n\n                    var stateList = modal.find('#state');\n                    var state = stateList.val();\n                    if (stateList.length > 0 && state.trim() === '') {\n                        invalid = true;\n                        callbackModalController.showError('#state');\n                    }\n\n                    if (modal.find('[data-optin]').is(':visible') && !modal.find('#optin').is(':checked')) {\n                        invalid = true;\n                        callbackModalController.showError('#optin');\n                    }\n\n                    if (!invalid) {\n                        callbackModalController.clearError();\n\n                        modal.find('button[name=\"modal-submit\"]').attr('disabled', 'disabled');\n                        modal.find('span[name=\"modal-submit-spinner\"]').show();\n\n                        var callbackData = {\n                            gatewayId: data.gatewayId,\n                            productId: data.productId,\n                            deviceId: data.deviceId,\n                            firstName: firstName,\n                            lastName: lastName,\n                            phone: phone,\n                            email: email,\n                            state: state,\n                            storeId: store,\n                            time: modal.find('#preferredtime').val(),\n                            option1: modal.find('#option1').is(':checked'),\n                            option2: modal.find('#option2').is(':checked'),\n                            productUrl: data.productUrl\n                        };\n\n                        wo$.ajax({\n                            url: modal.data('url'),\n                            type: 'POST',\n                            data: callbackData,\n                            dataType: 'json',\n                            success: function (result) {\n                                switch (result) {\n                                    case 2:\n                                        callbackModalController.showSubmitError(modalData.alreadySubmitted);\n                                        break;\n                                    case 3:\n                                        callbackModalController.showSubmitError(modalData.invalidPhoneNumber);\n                                        break;\n                                    default:\n                                        modal.find('[data-form-controls]').hide();\n                                        WhistleOut.trackEvent('CallbackPopup', 'Submit', data.supplierId);\n                                        modal.find('[data-submit-success]').show();\n                                        modal.find('button[name=\"modal-submit\"]').attr('disabled', 'disabled');\n                                        modal.find('span[name=\"modal-submit-spinner\"]').hide();\n                                        setTimeout(function () {\n                                            modal.modal('hide');\n                                        }, 5000);\n                                        break;\n                                }\n                            },\n                            error: function () {\n                                callbackModalController.showSubmitError(modalData.genericError);\n                            }\n                        });\n                    }\n                });\n            },\n\n            showError: function (inputSelector, isInvalidValidation) {\n                modal.find(inputSelector).parent().addClass('has-error');\n                if (isInvalidValidation === true) {\n                    modal.find(inputSelector).siblings('[data-validation-error-invalid]').show();\n                } else {\n                    modal.find(inputSelector).siblings('[data-validation-error]').show();\n                }\n                modal.find('button[name=\"modal-submit\"]').prop('disabled', false);\n                modal.find('span[name=\"modal-submit-spinner\"]').hide();\n            },\n\n            showSubmitError: function (error) {\n                modal.find('[data-submit-error]').html(error);\n                modal.find('[data-submit-error]').show();\n                modal.find('button[name=\"modal-submit\"]').prop('disabled', false);\n                modal.find('span[name=\"modal-submit-spinner\"]').hide();\n            },\n\n            clearError: function () {\n                modal.find('.form-group').removeClass('has-error');\n                modal.find('[data-validation-error]').hide();\n                modal.find('[data-validation-error-invalid]').hide();\n                modal.find('[data-submit-error]').hide();\n                modal.find('[data-submit-success]').hide();\n                modal.find('button[name=\"modal-submit\"]').prop('disabled', false);\n                modal.find('span[name=\"modal-submit-spinner\"]').hide();\n            }\n        };\n\n        callbackModalController.init();\n    };\n\n    WhistleOut.initModule(import.meta.url, main);\n\n}());\n"],"names":["WhistleOut","initModule","import","modal","wo$","length","data","modalData","readLookupData","callbackModalController","init","on","e","relatedTarget","parent","find","text","heading","subHeading","productHeading","originalSupplierName","attr","supplierImageUrl","supplierName","hasDevice","deviceImageUrl","productName","show","hide","priceWhole","paymentFrequency","showMinTotalCost","minTotalCost","hideCallbackTime","option1Text","hideOption2","option2Text","optInText","html","focus","clearError","val","prop","defaultState","click","invalid","firstName","trim","showError","lastName","phone","RegExp","test","email","store","stateList","state","is","callbackData","gatewayId","productId","deviceId","storeId","time","option1","option2","productUrl","ajax","url","type","dataType","success","result","showSubmitError","alreadySubmitted","invalidPhoneNumber","trackEvent","supplierId","setTimeout","error","genericError","inputSelector","isInvalidValidation","addClass","siblings","removeClass"],"sourceRoot":""}