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 : '
' + translate["tickets-js-error-no-ticket-selected"] + '
',
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 : ''+json.message+'
',
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 : ''+json.message+'
',
buttonOK : false,
});
}else{
console.log(json.url);
if(localStorage.getItem('isSeat') === 'true'){
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : ''+json.message+'
',
buttonOK : false
});
}else{
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : ''+json.message+'
',
buttonOK : false,
cancel : function(){
window.location = json.url;
}
});
}
}
modal.show();
break;
default:
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : '' + translate["tickets-js-generic-error"] + '
',
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 : ''+json.message+'
',
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 : ''+json.message+'
',
buttonOK : false,
});
}else{
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : ''+json.message+'
',
buttonOK : false,
cancel : function(){
window.location = json.url;
}
});
}
modal.show();
break;
default:
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : '' + translate["tickets-js-generic-error"] + '
',
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 : ''+json.message+'
',
buttonOK : false,
});
}else{
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : ''+json.message+'
',
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 : '' + translate["tickets-js-generic-error"] + '
',
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 : '' + translate["tickets-js-error-no-ticket-selected"] + '
',
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 : ''+message+'
',
buttonOK : false,
});
}else{
var modal = new Modal({
title: translate["tickets-js-modal-title-alert"],
body : ''+message+'
',
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();