Skip to content

Commit

Permalink
Merge pull request #390 from shreesh-webkul/gli-780
Browse files Browse the repository at this point in the history
Resolve rooms left count issue on cart update on room type detail page
  • Loading branch information
rohit053 authored Sep 23, 2022
2 parents c5f607c + 1567bc9 commit acc32c0
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 58 deletions.
64 changes: 56 additions & 8 deletions modules/blockcart/ajax-cart.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ $(document).ready(function() {

//JS Object : update the cart by ajax actions
var ajaxCart = {
dateFormat: 'dd-mm-yy',
nb_total_products: 0,
//override every button in the page in relation to the cart
overrideButtonsInThePage: function() {
Expand Down Expand Up @@ -149,8 +150,8 @@ var ajaxCart = {
if ($('.cart_block').length) {
$(document).off('click', '#add_to_cart button').on('click', '#add_to_cart button', function(e) {
e.preventDefault();
var date_from = $('#room_check_in').val();
var date_to = $('#room_check_out').val();
var date_from = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_in').val()));
var date_to = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_out').val()));
ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null, date_from, date_to);

});
Expand Down Expand Up @@ -213,8 +214,8 @@ var ajaxCart = {

/*by webkul*/
if (pagename == 'product') {
dateFrom = $('#room_check_in').val();
dateTo = $('#room_check_out').val();
dateFrom = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_in').val()));
dateTo = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_out').val()));
} else if (pagename == 'category') {
dateFrom = $('#check_in_time').val();
dateTo = $('#check_out_time').val();
Expand Down Expand Up @@ -504,8 +505,8 @@ var ajaxCart = {
/*by webkul checking and setting availability of rooms*/
/*for product page add to cart quantity management*/
if (pagename == 'product') {
var date_checkIn = $('#room_check_in').val();
var date_checkOut = $('#room_check_out').val();
var date_checkIn = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_in').val()));
var date_checkOut = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_out').val()));
var product_page_id_product = $('#product_page_product_id').val();
if (idProduct == product_page_id_product && dateFrom < date_checkOut && dateTo >= date_checkIn) {
if (jsonData.avail_rooms <= room_warning_num) {
Expand Down Expand Up @@ -538,9 +539,56 @@ var ajaxCart = {
if (jsonData.avail_rooms == 0) {
$(".cat_remain_rm_qty_" + idProduct).closest('.room_cont').hide();
}
//$('#cat_quantity_wanted_'+idProduct).val(1);
}

ajaxCart.updateCart(jsonData);


// // add appliance to whishlist module
// if (whishlist && !jsonData.errors)
// WishlistAddProductCart(whishlist[0], idProduct, idCombination, whishlist[1]);

// if (!jsonData.hasError) {
// if (contentOnly)
// window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
// else
// ajaxCart.updateCartInformation(jsonData, addedFromProductPage);

// if (jsonData.crossSelling)
// $('.crossseling').html(jsonData.crossSelling);

// if (idCombination)
// $(jsonData.products).each(function() {
// if (this.id != undefined && this.id == parseInt(idProduct) && this.idCombination == parseInt(idCombination))
// if (contentOnly)
// window.parent.ajaxCart.updateLayer(this);
// else
// ajaxCart.updateLayer(this);
// });
// else
// $(jsonData.products).each(function() {
// if (this.id != undefined && this.id == parseInt(idProduct))
// if (contentOnly)
// window.parent.ajaxCart.updateLayer(this);
// else
// ajaxCart.updateLayer(this);
// });
// if (contentOnly)
// parent.$.fancybox.close();
// } else {
// if (contentOnly)
// window.parent.ajaxCart.updateCart(jsonData);
// else
// ajaxCart.updateCart(jsonData);
// if (addedFromProductPage)
// $('#add_to_cart button').removeProp('disabled').removeClass('disabled');
// else
// $(callerElement).removeProp('disabled');
// }

// emptyCustomizations();

},
error: function(XMLHttpRequest, textStatus, errorThrown) {
var error = "Impossible to add the room to the cart.<br/>textStatus: '" + textStatus + "'<br/>errorThrown: '" + errorThrown + "'<br/>responseText:<br/>" + XMLHttpRequest.responseText;
Expand Down Expand Up @@ -841,7 +889,7 @@ var ajaxCart = {
if (cart_booking_data[key].date_diff !== 'undefined') {
$.each(cart_booking_data[key].date_diff, function(date_diff_k, date_diff_v) {
content += '<tr class="rooms_remove_container">';
content += '<td>' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v.data_to)) + '</td>';
content += '<td>' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v.data_to)) + '</td>';
content += '<td class="num_rooms_in_date">' + date_diff_v.num_rm + '</td>';
content += '<td>' + formatCurrency(parseFloat(date_diff_v.amount), currency_format, currency_sign, currency_blank) + '</td>';
content += '<td>';
Expand Down Expand Up @@ -878,7 +926,7 @@ var ajaxCart = {
if (cart_booking_data[key].date_diff !== 'undefined') {
$.each(cart_booking_data[key].date_diff, function(date_diff_k1, date_diff_v1) {
booking_dates_content += '<tr class="rooms_remove_container">';
booking_dates_content += '<td>' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v1.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v1.data_to)) + '</td>';
booking_dates_content += '<td>' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v1.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v1.data_to)) + '</td>';
booking_dates_content += '<td class="num_rooms_in_date">' + date_diff_v1.num_rm + '</td>';
booking_dates_content += '<td>' + formatCurrency(parseFloat(date_diff_v1.amount), currency_format, currency_sign, currency_blank) + '</td>';
booking_dates_content += '<td>';
Expand Down
22 changes: 9 additions & 13 deletions themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ $(document).ready(function() {

//JS Object : update the cart by ajax actions
var ajaxCart = {
dateFormat: 'dd-mm-yy',
nb_total_products: 0,
//override every button in the page in relation to the cart
overrideButtonsInThePage: function() {
Expand Down Expand Up @@ -149,8 +150,8 @@ var ajaxCart = {
if ($('.cart_block').length) {
$(document).off('click', '#add_to_cart button').on('click', '#add_to_cart button', function(e) {
e.preventDefault();
var date_from = $('#room_check_in').val();
var date_to = $('#room_check_out').val();
var date_from = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_in').val()));
var date_to = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_out').val()));
ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null, date_from, date_to);

});
Expand Down Expand Up @@ -213,8 +214,8 @@ var ajaxCart = {

/*by webkul*/
if (pagename == 'product') {
dateFrom = $('#room_check_in').val();
dateTo = $('#room_check_out').val();
dateFrom = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_in').val()));
dateTo = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_out').val()));
} else if (pagename == 'category') {
dateFrom = $('#check_in_time').val();
dateTo = $('#check_out_time').val();
Expand Down Expand Up @@ -504,14 +505,9 @@ var ajaxCart = {
/*by webkul checking and setting availability of rooms*/
/*for product page add to cart quantity management*/
if (pagename == 'product') {
var date_checkIn = $('#room_check_in').val();
var date_checkOut = $('#room_check_out').val();
var date_checkIn = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_in').val()));
var date_checkOut = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(ajaxCart.dateFormat, $('#room_check_out').val()));
var product_page_id_product = $('#product_page_product_id').val();
console.log(idProduct == product_page_id_product);
console.log(dateFrom);
console.log(date_checkOut);
console.log(dateTo);
console.log(date_checkIn);
if (idProduct == product_page_id_product && dateFrom < date_checkOut && dateTo >= date_checkIn) {
if (jsonData.avail_rooms <= room_warning_num) {
$('.num_quantity_alert').show();
Expand Down Expand Up @@ -893,7 +889,7 @@ var ajaxCart = {
if (cart_booking_data[key].date_diff !== 'undefined') {
$.each(cart_booking_data[key].date_diff, function(date_diff_k, date_diff_v) {
content += '<tr class="rooms_remove_container">';
content += '<td>' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v.data_to)) + '</td>';
content += '<td>' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v.data_to)) + '</td>';
content += '<td class="num_rooms_in_date">' + date_diff_v.num_rm + '</td>';
content += '<td>' + formatCurrency(parseFloat(date_diff_v.amount), currency_format, currency_sign, currency_blank) + '</td>';
content += '<td>';
Expand Down Expand Up @@ -930,7 +926,7 @@ var ajaxCart = {
if (cart_booking_data[key].date_diff !== 'undefined') {
$.each(cart_booking_data[key].date_diff, function(date_diff_k1, date_diff_v1) {
booking_dates_content += '<tr class="rooms_remove_container">';
booking_dates_content += '<td>' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v1.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate('dd-mm-yy', new Date(date_diff_v1.data_to)) + '</td>';
booking_dates_content += '<td>' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v1.data_form)) + '&nbsp;-&nbsp;' + $.datepicker.formatDate(ajaxCart.dateFormat, new Date(date_diff_v1.data_to)) + '</td>';
booking_dates_content += '<td class="num_rooms_in_date">' + date_diff_v1.num_rm + '</td>';
booking_dates_content += '<td>' + formatCurrency(parseFloat(date_diff_v1.amount), currency_format, currency_sign, currency_blank) + '</td>';
booking_dates_content += '<td>';
Expand Down
54 changes: 17 additions & 37 deletions themes/hotel-reservation-theme/js/product.js
Original file line number Diff line number Diff line change
Expand Up @@ -1054,6 +1054,7 @@ function checkUrl() {
/*java script code by webkul on produt page.*/
/*#####################################################################*/
$(document).ready(function() {
let dateFormat = 'dd-mm-yy';
if (total_avail_rms <= room_warning_num) {
$('.num_quantity_alert').show();
} else {
Expand Down Expand Up @@ -1098,7 +1099,7 @@ $(document).ready(function() {

$("#room_check_in").datepicker({
showOtherMonths: true,
dateFormat: 'dd-mm-yy',
dateFormat: dateFormat,
minDate: 0,
beforeShow: function (input, instance) {
// So that on translating page date is translated to NaN-NaN-NaN
Expand All @@ -1110,21 +1111,16 @@ $(document).ready(function() {
},
onClose: function() {
var checkOut = $("#room_check_out").val();
var selectedDate = $("#room_check_in").val();
var selectedDate = $.datepicker.parseDate(dateFormat, $("#room_check_in").val());

var date_from_format = selectedDate.split("-");
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_from_format[2], date_from_format[1] - 1, date_from_format[0])));
var date_in = $.datepicker.formatDate('yy-mm-dd', selectedDate);

var date_to_format = $('#room_check_out').val().split("-");
var selectedDateTo = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_to_format[2], date_to_format[1] - 1, date_to_format[0])));

var date_out = $.datepicker.formatDate('yy-mm-dd', selectedDateTo);
var date_out = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(dateFormat, $("#room_check_out").val()));

if (date_in >= date_out) {
selectedDate.setDate(selectedDate.getDate() + 1);
$("#room_check_out").datepicker("option", "minDate", selectedDate);
$("#room_check_out").val($.datepicker.formatDate('dd-mm-yy', selectedDate));
$("#room_check_out").val($.datepicker.formatDate(dateFormat, selectedDate));
var date_out = $.datepicker.formatDate('yy-mm-dd', selectedDate);
}

Expand All @@ -1134,20 +1130,8 @@ $(document).ready(function() {
$("#room_check_out").datepicker( "show" );
} else {
// Lets make the date in the required format
var currentDate = selectedDate.getDate();
var currentMonth = selectedDate.getMonth() + 1;
if (currentMonth < 10) {
currentMonth = '0' + currentMonth;
}
if (currentDate < 10) {
currentDate = '0' + currentDate;
}

dmy = selectedDate.getFullYear() + "-" + currentMonth + "-" + currentDate;
checkOut = checkOut.split("-");
checkOut = (checkOut[2]) + '-' + (checkOut[1]) + '-' + (checkOut[0]);

if (checkOut <= dmy) {
checkOut = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(dateFormat, checkOut));
if (checkOut <= date_in) {
$("#room_check_out").datepicker('show');
}
}
Expand All @@ -1158,35 +1142,27 @@ $(document).ready(function() {

$("#room_check_out").datepicker({
showOtherMonths: true,
dateFormat: 'dd-mm-yy',
dateFormat: dateFormat,
beforeShow: function (input, instance) {
// So that on translating page date is translated to NaN-NaN-NaN
$('.ui-datepicker').addClass('notranslate');

var date_to = $('#room_check_in').val();
if (typeof date_to != 'undefined' && date_to != '') {
var date_format = date_to.split("-");
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_format[2], date_format[1] - 1, date_format[0])));
var selectedDate = $.datepicker.parseDate(dateFormat, date_to);
selectedDate.setDate(selectedDate.getDate()+1);
$("#room_check_out").datepicker("option", "minDate", selectedDate);
} else {
var date_format = new Date();
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date()));
selectedDate.setDate(selectedDate.getDate()+1);
$("#room_check_out").datepicker("option", "minDate", selectedDate);
}
},
beforeShowDay: function (date) {
// highlight dates of the selected date range
return highlightSelectedDateRange(date, $("#room_check_in").val(), $("#room_check_out").val());
},
onSelect: function(dateText, inst) {
var date_from_format = $('#room_check_in').val().split("-");
var selectedDateFrom = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_from_format[2], date_from_format[1] - 1, date_from_format[0])));
var date_in = $.datepicker.formatDate('yy-mm-dd', selectedDateFrom);
var date_to_format = $('#room_check_out').val().split("-");
var selectedDateTo = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_to_format[2], date_to_format[1] - 1, date_to_format[0])));
var date_out = $.datepicker.formatDate('yy-mm-dd', selectedDateTo);
var date_in = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(dateFormat, $('#room_check_in').val()));
var date_out = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(dateFormat, $('#room_check_out').val()));

if (date_in >= date_out) {
$(this).val(inst.lastVal);
Expand Down Expand Up @@ -1266,12 +1242,16 @@ $(document).ready(function() {
});

function changeRoomTypeDemands() {
let dateFormat = 'dd-mm-yy';
var qty_wntd = $('#quantity_wanted').val();
if (qty_wntd == '' || !$.isNumeric(qty_wntd)) {
$('#quantity_wanted').val(1);
qty_wntd = $('#quantity_wanted').val();
}
$('#quantity_wanted').val(parseInt(qty_wntd));
var date_in = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(dateFormat, $('#room_check_in').val()));
var date_out = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate(dateFormat, $('#room_check_out').val()));

if ((parseInt(qty_wntd) < 1 || parseInt(qty_wntd) > $('#max_avail_type_qty').val())
&& $('#max_avail_type_qty').val() > 0
) {
Expand All @@ -1292,8 +1272,8 @@ function changeRoomTypeDemands() {
dataType: 'JSON',
cache: false,
data: {
date_from: $('#room_check_in').val(),
date_to: $('#room_check_out').val(),
date_from: date_in,
date_to: date_out,
product_quantity_down: 1,
qty: qty_wntd,
id_product: $('#product_page_product_id').val(),
Expand Down

0 comments on commit acc32c0

Please sign in to comment.