(function () { "use strict"; var newsletterFormConfig = { masterDataAcronym: "NL", formID: "formNewsletter", formMessagesContainerClass: "formMessages", nameInputName: "txtName", nameInputRequiredText: "Por favor ingresa tu nombre", nameInputText: "Por favor ingresa un nombre valido", emailInputName: "txtEmail", emailInputRequiredText: "Por favor ingresa tu correo", emailInputEmailText: "Por favor ingresa un email valido", userRegisteredSuccessfullyText: "Sus datos fueron enviados con éxito", userRegisteredAlreadyExist: "Lo sentimos, el correo ya está registrado", userRegisterErrorText: "Hubo un error al enviar sus datos, inténtelo más tarde" }; function init() { initNewsletterForm(); } function initNewsletterForm(){ var validationConfig = {}; var form = $("#"+newsletterFormConfig.formID); if(!form.length){return;} validationConfig.errorPlacement = errorPlacement; validationConfig.submitHandler = newsletterFormSubmitHandler; form.validate(validationConfig); addNewsletterFormRules(form); } function newsletterFormSubmitHandler(form) { var formMessagesContainer = $("." + newsletterFormConfig.formMessagesContainerClass); form = $(form); var payload = { email: form.find("[name="+newsletterFormConfig.emailInputName+"]").val(), name: form.find("[name="+newsletterFormConfig.nameInputName+"]").val() }; var success = function () { submitNewsletterForm(payload, form); }; var error = function () { showMessage(newsletterFormConfig.userRegisteredAlreadyExist, formMessagesContainer); }; validateEmail(payload.email, newsletterFormConfig, success, error); } function validateEmail(email, formConfig, success, error){ var masterDataAcronym = formConfig.masterDataAcronym; var url = "/polipapel/dataentities/"+masterDataAcronym+"/search?_where=email="+email; var request = { url : url, contentType : 'application/json; charset=utf-8', type : "GET", success : function (data) { if(!data.length){ success(); } else { error(); } }, error : success }; $.ajax(request); } function submitNewsletterForm(payload, form) { var formMessagesContainer = $("." + newsletterFormConfig.formMessagesContainerClass); var submitButton = form.find(':input[type="submit"]'); var buttonText = submitButton.html(); submitButton.html("Enviando.."); submitButton.prop('disabled', true); var resetForm = function () { submitButton.prop('disabled', false); submitButton.html(buttonText); form.trigger("reset"); }; var success = function () { showMessage(newsletterFormConfig.userRegisteredSuccessfullyText, formMessagesContainer); resetForm(); }; var error = function () { $('.formMessages').empty(); showMessage(newsletterFormConfig.userRegisterErrorText, formMessagesContainer); resetForm(); }; registerData(payload, newsletterFormConfig.masterDataAcronym, success, error); } function addNewsletterFormRules(form) { form.find("[name="+newsletterFormConfig.nameInputName+"]").rules("add", { required: true, messages: { required: newsletterFormConfig.nameInputRequiredText } }); form.find("[name="+newsletterFormConfig.emailInputName+"]").rules("add", { required: true, email: true, messages: { required: newsletterFormConfig.emailInputRequiredText, email: newsletterFormConfig.emailInputEmailText } }); } function errorPlacement(error) { error.appendTo(".formMessages"); } function registerData(payload, masterDataAcronym, success, error) { var request = { url : "/api/ds/pub/documents/"+masterDataAcronym, contentType : 'application/json; charset=utf-8', data: JSON.stringify(payload), type : "POST", success : success, error : error }; $.ajax(request); } function showMessage(message, messagesContainer) { messagesContainer.html(message); messagesContainer.show(); setTimeout(function(){ messagesContainer.fadeOut("fast"); },10000); } $(document).ready(init); })();