You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
3.6 KiB
81 lines
3.6 KiB
odoo.define('event_seat_booking.register', function (require) {
|
|
'use strict';
|
|
|
|
var core = require('web.core');
|
|
var event = require('website_event.website_event');
|
|
var _t = core._t;
|
|
var ajax = require('web.ajax');
|
|
|
|
event.include({
|
|
init: function () {
|
|
this._super.apply(this, arguments); // Call the parent's init method if needed
|
|
},
|
|
//Handles the click event on the registration form, processes the form data, and makes an AJAX request
|
|
// to submit the form. It also includes additional logic for seat booking.
|
|
on_click: function (ev) {
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
var $form = $(ev.currentTarget).closest('form');
|
|
var $target = $(ev.currentTarget);
|
|
var $button = $(ev.currentTarget).closest('[type="submit"]');
|
|
var post = {};
|
|
$('#registration_form table').siblings('.alert').remove();
|
|
$('#registration_form select').each(function () {
|
|
post[$(this).attr('name')] = $(this).val();
|
|
console.log(post,"VALUES")
|
|
});
|
|
var tickets_ordered = _.some(_.map(post, function (value, key) { return parseInt(value); }));
|
|
if (!tickets_ordered) {
|
|
$('<div class="alert alert-info"/>')
|
|
.text(_t('Please select at least one ticket.'))
|
|
.insertAfter('#registration_form table');
|
|
return new Promise(function () {});
|
|
} else {
|
|
var uniqueId = $('#unique_column_id').val();
|
|
if (!uniqueId) {
|
|
this._super(ev);
|
|
return;
|
|
}
|
|
|
|
var columnNumbers = $('#col_number_id').val(); //
|
|
var rowNumbers = $('#row_number_id').val();
|
|
|
|
var colNumbers = columnNumbers.match(/C(\d+)/g).map(e => e.substring(1)); // ['2', '3']
|
|
var rowNumbersExtracted = rowNumbers.match(/R(\d+)/g).map(e => e.substring(1)); // ['4', '4']
|
|
|
|
post['unique_id'] = uniqueId;
|
|
post['row_no'] = rowNumbersExtracted;
|
|
post['column_no'] = colNumbers;
|
|
|
|
var colNumbers = columnNumbers.match(/C(\d+)/g).map(e => e.substring(1)); // ['2', '3']
|
|
var rowNumbersExtracted = rowNumbers.match(/R(\d+)/g).map(e => e.substring(1)); // ['4', '4']
|
|
$button.attr('disabled', true);
|
|
var action = $form.data('action') || $form.attr('action');
|
|
return ajax.jsonRpc(action, 'call', post).then(function (modal) {
|
|
var $modal = $(modal);
|
|
$modal.find('.modal-body > div').removeClass('container'); // retrocompatibility - REMOVE ME in master / saas-19
|
|
const hidden_div = $modal.find('.ticket_essentials')[0]
|
|
const $hiddenDiv = $(hidden_div);
|
|
const rowNumberInput = $hiddenDiv.find('input[name="row_number"]')[0];
|
|
const columnNumberInput = $hiddenDiv.find('input[name="column_number"]')[0];
|
|
const uniqueIdInput = $hiddenDiv.find('input[name="unique_id"]')[0];
|
|
|
|
$modal.appendTo(document.body);
|
|
const modalBS = new Modal($modal[0], {backdrop: 'static', keyboard: false});
|
|
modalBS.show();
|
|
$modal.appendTo('body').modal('show');
|
|
$modal.on('click', '.js_goto_event', function () {
|
|
$modal.modal('hide');
|
|
$button.prop('disabled', false);
|
|
});
|
|
$modal.on('click', '.btn-close', function () {
|
|
$button.prop('disabled', false);
|
|
});
|
|
});
|
|
}
|
|
},
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|