function ticketsMember(){} ticketsMember.prototype = { statusAvailable : 1, statusBooked : 2, statusUnavailable : 3, statusError : 4, bookTicket : function(ticketId){ this.sendRequestMember('/member/book-ticket', ticketId); }, unbookTicket : function(ticketId){ this.sendRequestMember('/member/unbook-ticket', ticketId); }, addSeatToBoard: function(ticketId){ const row = $('#'+ticketId).data('fileira'); const seat = $('#'+ticketId).data('cadeira'); const stage = $('.cadeiras_cart--content'); const seatStage = document.createElement('div'); const seatNumber = document.createElement('h3'); $(seatNumber).text(`${row}-${seat}`); $(seatStage).append(seatNumber); $(seatStage).addClass('cadeira cadeira-'+ticketId); $(stage).append(seatStage); }, removeSeatToBoard: function(ticketId){ $('.cadeira-'+ticketId).remove(); }, updateSeatCount: function(seats){ const counter = $('.cadeiras_cart--header span'); $(counter).text(seats); }, packageBookTicket : function(ticketId, packageId){ this.sendRequestPackage('/member/package-book-ticket', ticketId, packageId); }, packageUnbookTicket : function(ticketId, packageId){ this.sendRequestPackage('/member/package-unbook-ticket', ticketId, packageId); }, multiSectorSelectTicket : function(eventId){ var thisObject = this; var sectors = { event:eventId, data: [] }; var sectorsSelected = false; let sectorId = 0; let qnt = 0; $(".multiSectorSelectTicket").each(function() { quantity = $(this).val(); if(quantity > 0){ qnt = $(this).val(); sectorId = $(this).attr("id"); sectors.data.push({sector: sectorId, qnt: qnt}); sectorsSelected = true; } }); if(sectorsSelected) { ajaxLoader.ajaxStart(); $.ajax({ url: '/member/book-multiple-tickets-sectors', data: {sectors: sectors}, method: 'post', dataType: 'json', success: function(json) { gtmActions.addToCart(sectorId, qnt); thisObject.validateMultiBookingResponse(json); }, }); }else{ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ modal.hide(); } }); modal.show(); } }, sendRequestMember : function(url, ticketId){ var thisObject = this; $.ajax({ url: url, data: { ticket: ticketId }, method: 'post', dataType: 'json', beforeSend: function() { $('body').prepend('
'); }, success: function(json) { thisObject.validateBookingMemberResponse(json, ticketId); $('#ajaxLoader').remove(); // location.reload(); return false; }, }); }, sendRequestPackage : function(url, seatId, packageId){ $('#'+seatId).css('visibility','hidden'); $('#'+seatId).after('
'); var thisObject = this; if(this.inRequest){ var sendRequestFunction = thisObject.sendAjax.bind(this); setTimeout( function(){ sendRequestFunction(url, seatId) }, 100 ); return false; } this.inRequest = true; $.ajax({ url: url, data: {seat: seatId, package: packageId}, method: 'post', dataType: 'json', success: function(json) { thisObject.inRequest = false; thisObject.validatePackageBookingMemberResponse(json, seatId); $('#ajaxLoader').remove(); // location.reload(); return false; }, }); }, validateBookingMemberResponse : function(json, ticketId){ $('#'+ticketId).css('visibility','visible'); $('#'+ticketId).next('.spin').remove(); let seatCounter; switch (json.status) { case 0: window.location.reload(); break; case this.statusAvailable: $('#'+ticketId).attr("class", "seat disponivel"); $('#'+ticketId).attr("onClick", "tickets.bookTicket("+ticketId+")"); seatCounter = $('.seat.reserva').length; this.updateSeatCount(seatCounter); this.removeSeatToBoard(ticketId); break; case this.statusBooked: $('#'+ticketId).attr("class", "seat reserva"); seatCounter = $('.seat.reserva').length; this.updateSeatCount(seatCounter); $('#'+ticketId).attr("onClick", "tickets.unbookTicket("+ticketId+")"); this.addSeatToBoard(ticketId); break; case this.statusUnavailable: $('#'+ticketId).attr("class", "seat reservada"); $('#'+ticketId).removeAttr("onClick"); var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, }); modal.show(); break; case this.statusError: if(typeof json.url == 'undefined'){ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, }); }else{ console.log(json.url); if(localStorage.getItem('isSeat') === 'true'){ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false }); }else{ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location = json.url; } }); } } modal.show(); break; default: var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location.reload(); } }); modal.show(); break; } if(json.cart_total != undefined){ $('#cart_total').text(json.cart_total); } }, validatePackageBookingMemberResponse : function(json, ticketId){ $('#'+ticketId).css('visibility','visible'); $('#'+ticketId).next('.spin').remove(); switch (json.status) { case 0: window.location.reload(); break; case this.statusAvailable: $('#'+ticketId).attr("class", "seat disponivel"); $('#'+ticketId).attr("onClick", "ticketsMember.packageBookTicket("+ticketId+")"); break; case this.statusBooked: $('#'+ticketId).attr("class", "seat reserva"); $('#'+ticketId).attr("onClick", "ticketsMember.packageUnbookTicket("+ticketId+")"); break; case this.statusUnavailable: $('#'+ticketId).attr("class", "seat reservada"); $('#'+ticketId).removeAttr("onClick"); var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, }); modal.show(); break; case this.statusError: if(typeof json.url == 'undefined'){ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, }); }else{ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location = json.url; } }); } modal.show(); break; default: var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location.reload(); } }); modal.show(); break; } if(json.cart_total != undefined){ $('#cart_total').text(json.cart_total); } }, validateMultiBookingResponse : function(json, reload = true){ if(json.cart_total != undefined){ $('#cart_total').text(json.cart_total); } switch (json.status) { case this.statusBooked: if(reload){ window.location.href = '/shopping-cart'; } break; case this.statusError: ajaxLoader.ajaxStop(); if(typeof json.url == 'undefined'){ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, }); }else{ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location = json.url; } }); } modal.show(); break; default: ajaxLoader.ajaxStop(); var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location.reload(); } }); modal.show(); break; } }, saleSectorExpress : function(sectorId, ticketRows, targetData) { const skinName = document.getElementById('skin_name'); const skinValue = skinName ? skinName.value : null; $(".match_sectorView").show(); $(".match_sectors").hide(); $("#view_back").show(); $("#history_back").hide(); const sectorOverMessage = $("#sector-over-message"); if(sectorOverMessage){ sectorOverMessage.hide(); } var comboRowsTickets = '
'; comboRowsTickets += ''; comboRowsTickets += '
'; comboRowsTickets += '
'; comboRowsTickets += '

Obs.: ' + translate["tickets-js-tip-message"] + '

'; let comboRowsTicketsBtn = '
 
'; $(".match_sectorView--btn").html(comboRowsTicketsBtn); $(".match_sectorView--content").html(comboRowsTickets); // Zera $(".match_sectorView .sector-name").text(''); $("#match_page--title").text('Local selecionado:'); $('#match_page--description').text('Selecione a quantidade de ingressos que deseja comprar'); const sectorName = $('.match_sector[data-sector="'+sectorId+'"]').find('.match_sector-name').text(); const sectorValue = $('#price-'+sectorId).html(); $(".match_sectorView .sector-name").html(''+sectorName+''); if(skinValue && skinValue === 'flamengo-nexo') { $(".match_sectorView--contentHeader").html('' +sectorName + '
A partir de ' + sectorValue + 'Sócio Nação - Desconto no Carrinho'); }else{ $(".match_sectorView--contentHeader").html('' +sectorName + '
A partir de ' + sectorValue + ''); } $("#ticket_quantity").TouchSpin({ min: 0, max: ticketRows }); const element = document.querySelector(".match_page-map"); if (element) { const offset = 80; const y = element.getBoundingClientRect().top + window.pageYOffset - offset; window.scrollTo({ top: y, behavior: "smooth" }); } // Veio de evento do mapa if( targetData ) { if( targetData.image ) { $(".match_sectorView .sector-preview").attr('href', targetData.image); // Muda imagens de zoom $(".match_sectorView #imageZoom").attr('src', targetData.image); $(".match_sectorView .containerZoom").css('background-image', 'url('+ targetData.image +')' ); } } }, validateBooking: function(sectorId) { var thisObject = this; var ticketQuantity = $('#ticket_quantity').val(); // var sectorId = $('#sectorId').val(); gtmActions.addToCart(sectorId, ticketQuantity); ajaxLoader.ajaxStart(); $.ajax({ url: '/member/book-multiple-tickets', data: {sectorId: sectorId, ticketQuantity: ticketQuantity}, method: 'post', dataType: 'json', success: function(json) { thisObject.validateMultiBookingResponse(json); } }); }, packageMultiSectorSelectTicket : function(packageId){ var thisObject = this; var sectors = { package:packageId, data: [] }; var sectorsSelected = false; $(".multiSectorSelectTicket").each(function() { var qnt = $(this).val(); var sectorId = $(this).attr("id"); if(qnt > 0){ sectors.data.push({sector: sectorId, qnt: qnt}); sectorsSelected = true; } }); if(sectorsSelected) { ajaxLoader.ajaxStart(); $.ajax({ url: '/member/package-book-multiple-tickets-sectors', data: {sectors: sectors}, method: 'post', dataType: 'json', success: function(json) { thisObject.validateMultiBookingResponse(json); }, }); }else{ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ modal.hide(); } }); modal.show(); } }, packageSaleSectorExpress : function(sectorId, ticketRows, packageId){ var thisObject = this; var comboRowsTickets = '
'; comboRowsTickets += ''; comboRowsTickets += '
'; comboRowsTickets += '

Obs.: ' + translate["tickets-js-tip-message"] + '

'; var modal = new Modal({ title: translate["tickets-js-tickets-quantity-message"], body : comboRowsTickets, buttonOK : true, cancel : function(){ modal.hide(); }, confirm : function(){ ajaxLoader.ajaxStart(); var sectors = { package:packageId, data: [] }; sectors.data.push({sector: $('#sectorId').val(), qnt: $('#ticket_quantity').val()}); $.ajax({ url: '/member/package-book-multiple-tickets-sectors', data: {sectors: sectors}, method: 'post', dataType: 'json', success: function(json) { thisObject.validateMultiBookingResponse(json); } }); } }); modal.show(); }, showMessage: function(message, url){ if(typeof url == 'undefined' || url == false){ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, }); }else{ var modal = new Modal({ title: translate["tickets-js-modal-title-alert"], body : '', buttonOK : false, cancel : function(){ window.location = url; } }); } modal.show(); }, addServiceTicket: function(sectorId, parentTicket, serviceEventId, eventId, cartId) { var thisObject = this; let sectors = { data: [ { sector: sectorId, qnt: 1, isPurchaseApplicationRequest: true, parentTicket: parentTicket, serviceEventId: serviceEventId, eventId: eventId, cartId: cartId } ] }; ajaxLoader.ajaxStart(); $.ajax({ url: '/buy/book-multiple-tickets-sectors', data: {sectors: sectors}, method: 'post', dataType: 'json', success: function(json) { thisObject.validateMultiBookingResponse(json); }, error: function(jqXHR, textStatus, errorThrown) { ajaxLoader.ajaxStop(); } }); }, addServiceTicketParking: function(sectorId, memberId, serviceEventId, eventId, cartId) { var thisObject = this; let sectors = { data: [ { sector: sectorId, qnt: 1, isPurchaseApplicationRequest: true, parentTicket: null, serviceEventId: serviceEventId, eventId: eventId, cartId: cartId, isParking: true } ] }; ajaxLoader.ajaxStart(); $.ajax({ url: '/buy/book-multiple-tickets-sectors', data: {sectors: sectors}, method: 'post', dataType: 'json', success: function(json) { if(json.ticket_id){ thisObject.validateMultiBookingResponse(json, false); memberShoppingCart.applyMember(json.product_id, json.ticket_id, serviceEventId, sectorId, null, memberId, true) }else{ thisObject.validateMultiBookingResponse(json); } }, error: function(jqXHR, textStatus, errorThrown) { ajaxLoader.ajaxStop(); } }); }, addServiceTicketMultipleSectors: function(serviceEventId, eventId, cartId, hasSelect = false, childSectorId = null) { var thisObject = this; var sectors = { event:eventId, data: [] }; if(hasSelect != false){ $(".servicesSectors").each(function() { var qnt = $(this).val(); var sectorId = $(this).attr("id"); if(qnt > 0){ sectors.data.push({ sector: sectorId, qnt: qnt, isPurchaseApplicationRequest: true, serviceEventId: serviceEventId, eventId: eventId, cartId: cartId }); sectorsSelected = true; } }); } else { sectors.data.push({ sector: childSectorId, qnt: 1, isPurchaseApplicationRequest: true, serviceEventId: serviceEventId, eventId: eventId, cartId: cartId }); sectorsSelected = true; } ajaxLoader.ajaxStart(); $.ajax({ url: '/buy/book-multiple-tickets-sectors', data: {sectors: sectors}, method: 'post', dataType: 'json', success: function(json) { thisObject.validateMultiBookingResponse(json); }, error: function(jqXHR, textStatus, errorThrown) { ajaxLoader.ajaxStop(); } }); } } var ticketsMember = new ticketsMember();