{"version":3,"file":"../../widgets/regFormWidget.js","sources":["widgets/regFormWidget.js"],"sourcesContent":["\"use strict\";\n\nvar regFormWidget = function () {\n var regFormWidgetParams = {\n model: {},\n url: {},\n template: {},\n modalTitle: 'Подтверждение принадлежности договора',\n phoneNumber: null\n };\n var $regBtn = null;\n var timerOn = false;\n var _int = null;\n\n function resetCaptcha() {\n grecaptcha.reset();\n }\n\n function renderHtml(templateName, data) {\n var template = Hogan.compile($(\"#\".concat(templateName)).html());\n return template.render(data).replace(/>(\\n+\\s+)<').trim();\n }\n\n function registerUser(regData) {\n $.ajax({\n type: 'POST',\n url: regFormWidgetParams.url.regUser,\n data: regData,\n success: function success(xhr) {\n if (xhr.Success) {\n $('#validate-error').text(''); //Security level maximum -_- \n\n if (xhr.Result === 'WithoutConfirmCode') {\n modalCodeCountdown.timerOn = false;\n createUser('0');\n }\n\n if (xhr.Result === 'CustomerAccountOnly') {\n location.href = regFormWidgetParams.url.afterRegistrationPage;\n }\n\n if (Array.isArray(xhr.Result) && xhr.Result.length === 1) {\n modalCodeCountdown.timerOn = false; // показываем модалку с одним номером телефона\n\n $('text[name=phone-number]').text(xhr.Result[0]);\n $('#one-phone-number-modal').showAsModal({\n title: regFormWidgetParams.modalTitle\n });\n }\n\n if (Array.isArray(xhr.Result) && xhr.Result.length > 1) {\n modalCodeCountdown.timerOn = false; // показываем модалку с несколькими номерами\n\n var modal = renderHtml('multiple-phone-number-modal', {\n phoneNumbers: xhr.Result\n });\n $(modal).showAsModal({\n title: regFormWidgetParams.modalTitle\n });\n }\n } else {\n switch (xhr.Result.ErrorType) {\n case 'captchaEx':\n $('.text-danger').text(xhr.Result.Error);\n break;\n\n case 'existUserEx':\n modalDialog.showInfo('Внимание', xhr.Result.Error, null, true);\n break;\n\n case 'serverEx':\n modalCodeCountdown.timerOn = false;\n modalDialog.showBaseWnd({\n title: 'Ошибка',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: function onDrawContent() {\n return xhr.Result.Error;\n }\n });\n break;\n\n default:\n console.error('Uncatched register user error');\n break;\n }\n }\n\n resetCaptcha();\n modalDialog.busyIndicator(false);\n },\n error: function error() {\n resetCaptcha();\n modalDialog.busyIndicator(false);\n modalDialog.showBaseWnd({\n title: 'Ошибка',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: function onDrawContent() {\n return 'При отправке произошла сетевая ошибка. Пожалуйста, попробуйте отправить форму заново.';\n }\n });\n }\n });\n }\n\n function collectContractsData() {\n var contracts = [];\n var $contractsList = $('.person-contract-list').find('.user-list-row.-edited');\n $contractsList.each(function () {\n var $contractRow = $(this);\n var contract = {\n EntityType: $contractRow.find('.person-contract-entity').val(),\n BuldingObject: $contractRow.find('.person-contract-obj :selected').text(),\n BuldingObjectId: $contractRow.find('.person-contract-obj').val(),\n ObjectNumber: $contractRow.find('.person-contract-number').val().trim()\n };\n contracts.push(contract);\n });\n return contracts;\n }\n\n function setParams(regParams) {\n regFormWidgetParams = $.extend({}, regFormWidgetParams, regParams);\n }\n\n function unbindHandlers() {\n $(document).off('click', '#addObjectBtn');\n $(document).off('click', '.person-contract-remove');\n $(document).off('change', '#Surname, #Name, #Patronymic, #Email, ' + '.person-contract-number, .person-contract-remove');\n $(document).off('change', '.person-contract-entity, .person-contract-obj');\n $(document).off('click', '#regBtn');\n $(document).off('change', '[data-required] input, .person-contract-number,' + ' #personConfirm');\n }\n\n function modalMinuteCountdown() {\n timerOn = true;\n var seconds = 60;\n $(\".modal-footer.-space-between\").show();\n $('#confirm-time').html(seconds);\n\n var setParam = function setParam() {\n $('#confirm-param').hide();\n $(\".modal-footer.-space-between\").hide();\n $('#resend-confirm-param').show();\n $('#validate-error').text('');\n $('#confirmation-code').val('');\n $('#confirm-time').html('');\n };\n\n _int = setInterval(function () {\n $('#confirm-time').html(seconds - 1);\n seconds -= 1;\n\n if (!timerOn || seconds <= 0) {\n setParam();\n clearInterval(_int);\n }\n }, 1000);\n }\n\n function createUser(confirmCode) {\n $.ajax({\n type: 'POST',\n url: regFormWidgetParams.url.createProfile,\n data: {\n confirmationCode: confirmCode\n },\n success: function success(xhr) {\n if (xhr.Success) {\n timerOn = false;\n $('#validate-error').text('');\n location.href = xhr.Result;\n } else {\n switch (xhr.Result.ErrorType) {\n case 'validationEx':\n $('#validate-error').text(xhr.Result.ErrorMessage);\n break;\n\n case 'serverEx':\n $('#validate-error').text('');\n $('#multiple-phone-number-modal').modalDlgClose();\n $('#one-phone-number-modal').modalDlgClose();\n $('#approve-code-modal').modalDlgClose();\n timerOn = false;\n modalDialog.showBaseWnd({\n title: 'Ошибка',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: function onDrawContent() {\n return xhr.Result.ErrorMessage;\n }\n });\n break;\n\n default:\n console.error('Unhandled user creation error');\n break;\n }\n }\n }\n });\n }\n\n function getConfirmationCode(modalSelector) {\n $.ajax({\n type: 'POST',\n url: regFormWidgetParams.url.sendCodeOnPhone,\n data: {\n phoneNumber: regFormWidgetParams.phoneNumber\n },\n success: function success(xhr) {\n if (xhr.Success) {\n $('#confirm-param').show();\n $('#resend-confirm-param').hide();\n timerOn = false;\n\n if (modalSelector) {\n $(modalSelector).closest('.modal').modalDlgClose();\n $('#approve-code-modal').showAsModal({\n title: regFormWidgetParams.modalTitle,\n inputs: [{\n id: 'confirmation-code',\n placeholder: 'Полученный код'\n }],\n buttons: [{\n title: 'Подтвердить',\n big: true,\n primary: true,\n onClick: function onClick() {\n var confirmCode = $('#confirmation-code').val();\n\n if (!confirmCode) {\n $('#validate-error').text('Введите код подтверждения');\n } else {\n modalCodeCountdown.timerOn = false;\n createUser(confirmCode);\n }\n\n return false;\n }\n }]\n });\n }\n\n modalMinuteCountdown();\n } else {\n modalDialog.showBaseWnd({\n title: 'Ошибка',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: function onDrawContent() {\n return xhr.Result;\n }\n });\n }\n }\n });\n } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\n\n var modalCodeCountdown = {\n timerOn: true,\n timer: function timer(remaining) {\n // $('#check-validate-error').text('');\n var m = Math.floor(remaining / 60);\n var s = remaining % 60;\n m = m < 10 ? '0' + m : m;\n s = s < 10 ? '0' + s : s;\n $('#check-time').html(\"\\u041A\\u043E\\u0434 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0442\\u0435\\u043B\\u0435\\u043D \\u0435\\u0449\\u0435: \".concat(m, \":\").concat(s, \" \\u0441\\u0435\\u043A.\"));\n remaining -= 1;\n\n if (remaining >= 0 && modalCodeCountdown.timerOn) {\n setTimeout(function () {\n modalCodeCountdown.timer(remaining);\n }, 1000);\n return;\n } else {\n $('#check-confirmation-code').hide();\n $('#resend-check-param').show();\n $('#check-validate-error').text('Код больше не действителен или введен не верно');\n $('#check-time').html('');\n }\n\n if (!modalCodeCountdown.timerOn) {\n return;\n } // Do timeout stuff here\n\n }\n };\n\n function chekConfirmationCode(code) {\n return new Promise(function (resolve, reject) {\n $.ajax({\n type: 'POST',\n url: regFormWidgetParams.url.checkCode,\n data: {\n code: code\n },\n success: function success(xhr) {\n if (xhr.Success) {\n resolve(true);\n } else {\n resolve(false);\n }\n }\n });\n });\n }\n\n function maskLoginForDisplay(login, type) {\n if (type === 'Phone') {\n var numberForDisplay = login.split('');\n var countNum = login.length;\n\n if (numberForDisplay[0] === '+') {\n numberForDisplay.shift();\n }\n\n numberForDisplay.splice(0, countNum - 5, '*'.repeat(countNum - 5));\n return \"\\u0423\\u043A\\u0430\\u0436\\u0438\\u0442\\u0435 \\u043A\\u043E\\u0434, \\u0432\\u044B\\u0441\\u043B\\u0430\\u043D\\u043D\\u044B\\u0439 \\u043D\\u0430 \\u043D\\u043E\\u043C\\u0435\\u0440 \\u043C\\u043E\\u0431\\u0438\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043B\\u0435\\u0444\\u043E\\u043D\\u0430 \".concat(numberForDisplay.join(''), \".\");\n } else {\n return \"\\u0423\\u043A\\u0430\\u0436\\u0438\\u0442\\u0435 \\u043A\\u043E\\u0434, \\u0432\\u044B\\u0441\\u043B\\u0430\\u043D\\u043D\\u044B\\u0439 \\u043D\\u0430 \\u0430\\u0434\\u0440\\u0435\\u0441 \\u044D\\u043B\\u0435\\u043A\\u0442\\u0440\\u043E\\u043D\\u043D\\u043E\\u0439 \\u043F\\u043E\\u0447\\u0442\\u044B \".concat(login, \".\");\n }\n }\n\n function chekLogin(modalSelector, login, type) {\n return new Promise(function (resolve, reject) {\n $.ajax({\n type: 'POST',\n url: regFormWidgetParams.url.checkData,\n data: {\n data: login,\n type: type\n },\n success: function success(xhr) {\n if (xhr.Success) {\n modalCodeCountdown.timerOn = false;\n $('#check-param').show();\n $('#resend-check-param').hide();\n\n if (modalSelector) {\n $(modalSelector).closest('.modal').modalDlgClose();\n $('#check-code-modal').showAsModal({\n title: \"\\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435 \".concat(type === 'Phone' ? 'номера телефона' : 'электронной почты'),\n isAutoClosing: false,\n inputs: [{\n id: 'check-confirmation-code',\n placeholder: 'Полученный код'\n }],\n buttons: [{\n title: 'Отправить повторно',\n id: 'resend-check-param',\n big: true,\n primary: false,\n onClick: function onClick() {\n $.ajax({\n type: 'POST',\n url: regFormWidgetParams.url.checkData,\n data: {\n data: login,\n type: type\n },\n success: function success(response) {\n if (response.Success) {\n $('#resend-check-param').hide();\n $('#check-confirmation-code').show();\n $('#check-confirmation-code').val('');\n $('#check-validate-error').text('');\n modalCodeCountdown.timerOn = true;\n modalCodeCountdown.timer(xhr.Result.LiveTime * 60);\n } else {\n $('#check-validate-error').text('Ошибка при запросе кода подтверждения');\n }\n }\n });\n }\n }, {\n title: 'Подтвердить',\n big: true,\n primary: true,\n role: 'none',\n onClick: function onClick() {\n var confirmCode = $('#check-confirmation-code').val();\n\n if (!confirmCode) {\n $('#check-validate-error').text('Введите код подтверждения');\n } else {\n chekConfirmationCode(confirmCode).then(function (res) {\n if (res) {\n // Код подтвержден, переходим к регистрации\n console.log('chekConfirmationCode ---> ', res);\n $('#check-code-modal').closest('.modal').forceModalDlgClose();\n resolve(res);\n } else {\n // Тут повторная отправка кода подтверждения\n modalCodeCountdown.timerOn = false;\n $('#check-confirmation-code').hide();\n $('#resend-check-param').show();\n }\n });\n }\n }\n }],\n afterOpen: function afterOpen() {\n modalCodeCountdown.timerOn = true;\n modalCodeCountdown.timer(xhr.Result.LiveTime * 60);\n $('#check-validate-error').text('');\n $('.modal-dialog').css('width', '450px'); // $('#resend-check-param').hide();\n\n $('#checked-phone-number').html(maskLoginForDisplay(login, type));\n $('[data-btnrole=close]').on('click', function () {\n $('#check-code-modal').closest('.modal').forceModalDlgClose();\n $('#check-validate-error').text('');\n modalCodeCountdown.timerOn = false;\n });\n }\n });\n }\n } else {\n modalDialog.showBaseWnd({\n title: 'Ошибка',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: function onDrawContent() {\n return xhr.Result;\n }\n });\n }\n\n $('#check-validate-error').text('');\n }\n });\n });\n }\n\n function editMode() {\n var $contractList = $('.person-contract-list');\n $contractList.addClass('-edit-mode');\n }\n\n function cacheNodes() {\n $regBtn = $('#regBtn');\n }\n\n function bindHandlers() {\n $(document).on('click', '#addObjectBtn', function () {\n var $contractList = $('.person-contract-list');\n var $contractListBody = $contractList.find('.user-list-body');\n $contractListBody.append($('#contractTemplate').html());\n LKCommon.initExpandedSelectric($contractList.last('.user-list-row').find('.select'));\n $contractList.addClass('-edit-mode');\n $regBtn.attr('disabled', true);\n });\n\n function newUserListRow() {\n var $contractList = $('.person-contract-list');\n var $contractListBody = $contractList.find('.user-list-body');\n $contractListBody.append($('#contractTemplate').html());\n LKCommon.initExpandedSelectric($contractList.last('.user-list-row').find('.select')); // $contractList.addClass('-edit-mode');\n\n $regBtn.attr('disabled', true);\n }\n\n $(document).on('click', '.person-contract-remove', function () {\n var $contractList = $('.person-contract-list');\n var contractsCount = $contractList.find('.user-list-row').length; // $('.user-list-row:first-of-type').remove();\n\n $(this).closest('.user-list-row').remove();\n newUserListRow(); // if (contractsCount === 1) {\n // $contractList.removeClass('-edit-mode');\n // }\n\n var allFilled = validation.validateRegistrationForm();\n\n if (allFilled) {\n $regBtn.attr('disabled', false);\n } else {\n $regBtn.attr('disabled', true);\n }\n });\n $(document).on('focus', '#Surname, #Name, #Patronymic, #Email, ' + '.person-contract-number, .person-contract-remove', function () {\n var $this = $(this);\n var $field = $this.closest('.field');\n validation.setFieldValid($field);\n });\n $(document).on('change', '.person-contract-entity, .person-contract-obj', function () {\n var $this = $(this);\n var $field = $this.closest('.field');\n validation.setFieldValid($field);\n });\n $(document).on('change', '[data-required] input, .person-contract-number, ' + '#personConfirm', function () {\n var allFilled = validation.validateRegistrationForm();\n\n if (allFilled) {\n $regBtn.attr('disabled', false);\n } else {\n $regBtn.attr('disabled', true);\n }\n });\n\n function formatPhoneNumber(phone) {\n return phone.replace(/[^+\\d]/g, '');\n }\n\n function afterConfirmedCode(confirmed, dataSet) {\n if (confirmed) {\n modalDialog.busyIndicator(true);\n registerUser({\n model: {\n Surname: dataSet.Surname,\n Name: dataSet.Name,\n Patronymic: dataSet.Patronymic,\n Email: dataSet.Email,\n PhoneNumber: dataSet.PhoneNumber,\n SelectedContracts: dataSet.ContractBindingList.filter(function (item) {\n return item.EntityType === 'clientContract';\n }),\n SelectedCustomerAccounts: dataSet.ContractBindingList.filter(function (item) {\n return item.EntityType === 'customerAccount';\n })\n },\n captchaKey: getCaptcha()\n });\n } else {\n modalDialog.showBaseWnd({\n title: 'Регистрация не пройдена',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: 'Вы не прошли регистрацию.'\n });\n return;\n }\n }\n\n $(document).on('click', '#regBtn', function () {\n var validations = ['validateValuesLength', 'validateRequiredValues', 'validatePattern', 'validateContracts'];\n var isValid = true;\n var iti = window.intlTelInputGlobals.getInstance($('#PhoneNumber')[0]);\n var dataSet = {\n Surname: $('#Surname').val().trim(),\n Name: $('#Name').val().trim(),\n Patronymic: $('#Patronymic').val().trim(),\n Email: $('#Email').val().trim(),\n PhoneNumber: iti.getNumber(intlTelInputUtils.numberFormat.E164),\n ExistingContractsList: [],\n ContractBindingList: collectContractsData()\n };\n validations.forEach(function (check) {\n var passedValidation = validation[check](dataSet);\n isValid = isValid && passedValidation;\n });\n\n if (isValid) {\n var loginType, login;\n\n if (dataSet.PhoneNumber) {\n //Проверяем телефон\n chekLogin('#main-phone-number-modal', dataSet.PhoneNumber, 'Phone').then(function (res) {\n afterConfirmedCode(res, dataSet);\n });\n } else {\n //Ничего подтверждать не надо\n afterConfirmedCode(true, dataSet);\n }\n }\n });\n $(document).on('click', '#one-phone-send, #multiple-phone-send, #resend-link', function () {\n switch ($(this).attr('id')) {\n case 'one-phone-send':\n regFormWidgetParams.phoneNumber = $('[name=phone-number]').first().text();\n getConfirmationCode('#one-phone-modal-content');\n break;\n\n case 'multiple-phone-send':\n regFormWidgetParams.phoneNumber = $('.modal-dialog #select-phone-number option:selected').text();\n getConfirmationCode('#multiple-phone-modal-content');\n break;\n\n case 'resend-link':\n getConfirmationCode(null);\n break;\n\n default:\n console.error('Such button is not defined');\n break;\n }\n });\n }\n\n function init(regParams) {\n unbindHandlers();\n LKCommon.initExpandedSelectric($('.person-contract-list').last('.user-list-row').find('.select'));\n setParams(regParams);\n cacheNodes();\n bindHandlers();\n editMode();\n }\n\n return {\n init: init\n };\n}();"],"names":["regFormWidget","regFormWidgetParams","model","url","template","modalTitle","phoneNumber","$regBtn","timerOn","_int","resetCaptcha","grecaptcha","reset","registerUser","regData","$","ajax","type","regUser","data","success","xhr","templateName","Success","text","Result","modalCodeCountdown","createUser","location","href","afterRegistrationPage","Array","isArray","length","showAsModal","title","phoneNumbers","modal","Hogan","compile","concat","html","render","replace","trim","ErrorType","Error","modalDialog","showInfo","showBaseWnd","buttons","big","primary","onDrawContent","console","error","busyIndicator","modalMinuteCountdown","seconds","show","setInterval","hide","val","clearInterval","confirmCode","createProfile","confirmationCode","ErrorMessage","modalDlgClose","getConfirmationCode","modalSelector","sendCodeOnPhone","closest","inputs","id","placeholder","onClick","timer","remaining","m","Math","floor","s","setTimeout","chekLogin","login","Promise","resolve","reject","checkData","isAutoClosing","response","LiveTime","role","code","checkCode","then","res","log","forceModalDlgClose","afterOpen","css","numberForDisplay","split","countNum","shift","splice","repeat","join","on","bindHandlers","afterConfirmedCode","confirmed","dataSet","Surname","Name","Patronymic","Email","PhoneNumber","SelectedContracts","ContractBindingList","filter","item","EntityType","SelectedCustomerAccounts","captchaKey","getCaptcha","document","$contractList","find","append","LKCommon","initExpandedSelectric","last","addClass","attr","this","remove","validation","validateRegistrationForm","$field","setFieldValid","contracts","isValid","iti","window","intlTelInputGlobals","getInstance","getNumber","intlTelInputUtils","numberFormat","E164","ExistingContractsList","each","$contractRow","contract","BuldingObject","BuldingObjectId","ObjectNumber","push","forEach","check","passedValidation","first","init","regParams","off","extend"],"mappings":"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"}