function packages(){} packages.prototype = { statusAvailable : 1, statusBooked : 2, statusUnavailable : 3, statusError : 4, inRequest : false, bookTicket : function(seatId, packageId){ this.sendRequest('/package/book-ticket', seatId, packageId); }, unbookTicket : function(seatId, packageId){ this.sendRequest('/package/unbook-ticket', seatId, packageId); }, multiSectorSelectTicket : 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: '/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(); } }, sendRequest : function(url, seatId, packageId){ $('#'+seatId).css('visibility','hidden'); $('#'+seatId).after('
'); this.sendAjax(url, seatId, packageId); }, sendAjax : function(url, seatId, packageId){ 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.validateBookingResponse(json, seatId); }, }); }, validateBookingResponse : 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", "packages.bookTicket("+ticketId+")"); break; case this.statusBooked: $('#'+ticketId).attr("class", "seat reserva"); $('#'+ticketId).attr("onClick", "packages.unbookTicket("+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){ if(json.cart_total != undefined){ $('#cart_total').text(json.cart_total); } switch (json.status) { case this.statusBooked: 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, 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(){ var ticketQuantity = $('#ticket_quantity').val(); var sectorId = $('#sectorId').val(); ajaxLoader.ajaxStart(); $.ajax({ url: '/package/book-multiple-tickets', data: {sectorId: sectorId, ticketQuantity: ticketQuantity, packageId: packageId}, 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(); } } var packages = new packages();