Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.17 KB | None | 0 0
  1. (function(window, $) {
  2.  
  3. var _debug = true;
  4. var log = function() {
  5. if (!_debug) {
  6. return;
  7. }
  8.  
  9. return console.log.apply(console, arguments);
  10. };
  11.  
  12. var service = window.devDogExpertSenderService;
  13.  
  14. var checkoutCustomerState = {
  15. isNew: false,
  16. optin: true
  17. };
  18.  
  19. function bulkBinder(selector, event, callback) {
  20. //debugger;
  21. $(selector).each(function() {
  22. $(this).on(event, callback);
  23. });
  24. }
  25.  
  26. function evaluateCustomerInterest(value) {
  27. var r = {
  28. fitness: false,
  29. fisioterapia: false,
  30. estetica: false
  31.  
  32. };
  33.  
  34. if(!value){
  35. return r;
  36. }
  37.  
  38. if(value == 'Estética'){
  39. r.estetica = true;
  40. }
  41.  
  42. if(value == 'Fitness'){
  43. r.fitness = true;
  44. }
  45.  
  46. if(value == 'Fisioterapia'){
  47. r.fisioterapia = true;
  48. }
  49.  
  50. return r;
  51. }
  52.  
  53. function commonRegisterSubmitter(e) {
  54. var $form = $(this);
  55.  
  56. log('REAL SUBMIT');
  57.  
  58. if (!$form.data('esSubmited')) {
  59. e.preventDefault();
  60.  
  61. var getValue = function(name) {
  62. return $form.find('input[name="' + name + '"]').val() || null;
  63. };
  64.  
  65. var birthDateValue = getValue('AddOrSetCustomer.BirthDate');
  66. var birthDayList = birthDateValue.split('/');
  67.  
  68. birthDateValue = [birthDayList[2], birthDayList[1], birthDayList[0]].join('-');
  69.  
  70. var $interestSelect = $('#AddOrSetCustomer-ExtendedProperties-0-Value');
  71. var interest = evaluateCustomerInterest($interestSelect.find('[value="' + $interestSelect.val() + '"]').text());
  72.  
  73. var genderValue = ($('#AddOrSetCustomer-Gender').val() || '').toLowerCase();
  74. if(genderValue == 'm'){
  75. genderValue = 'Masculino';
  76. }
  77.  
  78. if(genderValue == 'f'){
  79. genderValue = 'Feminino';
  80. }
  81.  
  82. var optin = '';
  83.  
  84. if($('#AddOrSetCustomer-ExtendedProperties-1-Value').length) {
  85. optin = $('#AddOrSetCustomer-ExtendedProperties-1-Value').is(':checked') ? 'true' : 'false';
  86. }else {
  87. optin = $('[name="radio-6"]:checked').val() || 'false';
  88. }
  89.  
  90. service.sendSubscriber({
  91. Name: getValue('AddOrSetCustomer.Name'),
  92. Email: getValue('AddOrSetCustomer.Email')
  93. }, {
  94. origem: 'cadastro',
  95. estetica: interest.estetica,
  96. fisioterapia: interest.fisioterapia,
  97. fitness: interest.fitness,
  98. optin: optin,
  99. data_cadastro: service.formatDate(new Date()),
  100. data_nascimento: birthDateValue,
  101. cidade: getValue('AddOrSetAddress[0].City'),
  102. estado: $('#AddOrSetAddress-0-State').val(),
  103. sexo: genderValue
  104.  
  105. })
  106. .complete(function(r) {
  107. log('r', r);
  108. $form.unbind('submit.esDevdog');
  109. $form.data('esSubmited', true);
  110. $form.trigger('submit');
  111. });
  112.  
  113. $form.data('esSubmited', true);
  114.  
  115. return false;
  116. }
  117.  
  118. return true;
  119. }
  120.  
  121. function bindElements() {
  122. //debugger;
  123. //log('devdog.expertsender.js bindElements', $('#gForm'), $('[id="gForm"]'), document.getElementById("gform"), $('body'));
  124.  
  125. $('body').bind('submit', '[id="gForm"]', function(e) {
  126. //e.preventDefault();
  127. //e.stopPropagation();
  128. log('SUBMIT ExpertSender Subscribe');
  129.  
  130. var $form = $(e.target).closest('form');
  131.  
  132. if (!$form.length || ($form.attr('id') || '').toLowerCase() !== 'gform') {
  133. return;
  134. }
  135.  
  136. //debugger;
  137.  
  138. if (!$form.find('[id="email"]').val()) {
  139. log('Email obrigtório');
  140. return;
  141. }
  142.  
  143. service.sendSubscriber({
  144. Name: $form.find('[id="name"]').val(),
  145. Email: $form.find('[id="email"]').val()
  146. }, {
  147. origem: 'newsletter',
  148. optin: 'true'
  149. });
  150.  
  151. });
  152.  
  153. $('.wd-profile-register form').bind('submit.esDevdog', commonRegisterSubmitter);
  154. $('[data-register] form').bind('submit.esDevdog', commonRegisterSubmitter);
  155.  
  156. bulkBinder('.wd-marketing-newsletter.wd-widget-js form', 'submit', function() {
  157. var $form = $(this);
  158.  
  159. service.sendSubscriber({
  160. Name: $form.find('[name="Name"]').val(),
  161. Email: $form.find('[name="Email"]').val()
  162. }, {
  163. origem: 'newsletter',
  164. optin: 'true'
  165. });
  166. });
  167.  
  168. $('body.EasyCheckoutStep').bind('change', '[name="AddOrSetCustomer.ExtendedProperties[].Value"]', function() {
  169. var $this = $(this);
  170. if($this.attr('name') !== 'AddOrSetCustomer.ExtendedProperties[].Value'){
  171. return;
  172. }
  173.  
  174. checkoutCustomerState.optin = $this.is(':checked');
  175. log('name="AddOrSetCustomer.ExtendedProperties[].Value" change', this, this.value);
  176. });
  177. }
  178.  
  179. function bindListeners() {
  180. ko.postbox.subscribe('checkout/signup/done', function() {
  181. checkoutCustomerState.isNew = true;
  182. });
  183.  
  184. ko.postbox.subscribe('checkout/data/update', function(model) {
  185. // observa próximo evento com endereço e atualiza dados
  186. if (!checkoutCustomerState.isNew) {
  187. return;
  188. } else {
  189. if (!checkoutCustomerState.registered) {
  190.  
  191. checkoutCustomerState.registered = true;
  192.  
  193. var birthDateValue = model.CustomerData.BirthDateExtended;
  194. var birthDayList = birthDateValue.split('-');
  195.  
  196. birthDateValue = [birthDayList[2], birthDayList[1], birthDayList[0]].join('-');
  197.  
  198. checkoutCustomerState.data = {
  199. Name: model.Customer.Name,
  200. Email: model.Customer.Email
  201. };
  202. checkoutCustomerState.customData = {
  203. optin: checkoutCustomerState.optin.toString(),
  204. origem: 'checkout',
  205. data_cadastro: service.formatDate(new Date()),
  206. data_nascimento: birthDateValue
  207. // cidade: getValue('AddOrSetAddress[0].City'),
  208. // estado: getValue('AddOrSetAddress[0].State')
  209. };
  210.  
  211. service.sendSubscriber(checkoutCustomerState.data, checkoutCustomerState.customData);
  212.  
  213. return;
  214. }
  215.  
  216. // salva endereço
  217. var address = model.Checkout.Addresses.length > 0 ? model.Checkout.Addresses[0] : null;
  218.  
  219. if (!address) {
  220. return;
  221. }
  222.  
  223. checkoutCustomerState.customData.cidade = address.City;
  224. checkoutCustomerState.customData.estado = address.State;
  225. service.sendSubscriber(checkoutCustomerState.data, checkoutCustomerState.customData);
  226.  
  227. checkoutCustomerState.isNew = false;
  228. }
  229. });
  230.  
  231.  
  232. var installments = 1;
  233.  
  234. ko.postbox.subscribe('checkout/payment/installment/change', function(i){
  235. installments = i || 1;
  236. });
  237.  
  238. var selectedPaymentOption = null;
  239.  
  240. $.subscribe('checkout/summary/payment', function(e, selected) {
  241. selectedPaymentOption = selected ? ko.toJS(selected) : null;
  242. });
  243.  
  244. // disparado na finalização da compra
  245. ko.postbox.subscribe('checkout/payment/submit', function(response) {
  246. try {
  247. var installmentsText = installments;
  248. var paymentOption = '';
  249.  
  250. if(selectedPaymentOption && selectedPaymentOption.card.getType){
  251. paymentOption = selectedPaymentOption.card.getType.Description.replace('Pagamento com ', '');
  252. }
  253.  
  254. service.sendOrder((response || {}).Response, paymentOption, installmentsText);
  255.  
  256. setTimeout(function() {
  257. service.sendOrderItems((response || {}).Response);
  258. }, 120);
  259.  
  260. } catch ($er) {
  261. console.error($er);
  262. }
  263. });
  264. }
  265.  
  266. function init() {
  267. log('devdog.expertsender.binder INIT');
  268.  
  269. //bindElements();
  270. bindListeners();
  271. setTimeout(bindElements, 2000);
  272. }
  273.  
  274. document.addEventListener('DOMContentLoaded', init, false);
  275.  
  276. })(window, jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement