SHARE
TWEET

Untitled

a guest Feb 14th, 2020 67 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let BookingProcesss = {
  2.   wrapper: "#check_availibility_control",
  3.  
  4.   id: function(element) {
  5.     return jQuery(this.wrapper).find("#" + element);
  6.   },
  7.   data: function(data) {
  8.     return jQuery(this.wrapper).find("[" + data + "]");
  9.   },
  10.   occupents: function(
  11.     caller,
  12.     target,
  13.     control,
  14.     max_adults,
  15.     max_children,
  16.     child_min,
  17.     child_max
  18.   ) {
  19.     let _this = this;
  20.  
  21.     let the_rooms = _this.id(caller).val();
  22.  
  23.     jQuery
  24.       .ajax({
  25.         url: s4aJSO.ajax_url,
  26.         method: "POST",
  27.         dataType: "json",
  28.         data: {
  29.           action: s4aJSO.the_unique_plugin_name + "-ajax-submit",
  30.           cmd: "build_occupents_list",
  31.           the_rooms: the_rooms,
  32.           max_adults: max_adults,
  33.           max_children: max_children,
  34.           child_min: child_min,
  35.           child_max: child_max
  36.         }
  37.       })
  38.       .done(function(data) {
  39.         if (!data.error) {
  40.           _this.id(control).remove();
  41.           _this.id(target).append(data.html_str);
  42.           ScrollTo(jQuery(_this.id(target)), -235, 100);
  43.         }
  44.       })
  45.       .fail(function() {})
  46.       .always(function(data) {});
  47.   },
  48.   child_occupents: function(
  49.     caller,
  50.     the_room,
  51.     target,
  52.     control,
  53.     child_min,
  54.     child_max
  55.   ) {
  56.     let _this = this;
  57.  
  58.     let the_children = _this.id(caller).val();
  59.  
  60.     jQuery
  61.       .ajax({
  62.         url: s4aJSO.ajax_url,
  63.         method: "POST",
  64.         dataType: "json",
  65.         data: {
  66.           action: s4aJSO.the_unique_plugin_name + "-ajax-submit",
  67.           cmd: "build_child_occupents_list",
  68.           the_room: the_room,
  69.           the_children: the_children,
  70.           child_min: child_min,
  71.           child_max: child_max
  72.         }
  73.       })
  74.       .done(function(data) {
  75.         if (!data.error) {
  76.           _this.id(control).remove();
  77.           _this.id(target).append(data.html_str);
  78.         }
  79.       })
  80.       .fail(function() {})
  81.       .always(function(data) {});
  82.   },
  83.   form_fields: function() {
  84.     let _this = this;
  85.  
  86.     let listing_id = _this.data('data-field="id"').val();
  87.     let establishment = _this.data('data-field="establishment"').val();
  88.     let the_arrival_date = _this.data('data-field="the_arrival_date"').val();
  89.     let the_departure_date = _this
  90.       .data('data-field="the_departure_date"')
  91.       .val();
  92.  
  93.     let roomCount = _this.id("the_rooms").val();
  94.  
  95.     let Units = {};
  96.  
  97.     for (unitNumber = 1; unitNumber <= roomCount; unitNumber++) {
  98.       let values = {};
  99.  
  100.       values["adults"] = _this
  101.         .data('data-room="' + unitNumber + '"')
  102.         .find('[data-type="adult"]')
  103.         .val();
  104.  
  105.       let Children = {};
  106.       let age = {};
  107.       let childCount = _this
  108.         .data('data-room="' + unitNumber + '"')
  109.         .find('[data-type="child"]')
  110.         .val();
  111.  
  112.       for (childNumber = 1; childNumber <= childCount; childNumber++) {
  113.         age[childNumber] = _this
  114.           .data('data-room="' + unitNumber + '"')
  115.           .find('[data-child="' + childNumber + '"]')
  116.           .find('[data-type="age"]')
  117.           .val();
  118.       }
  119.  
  120.       Children["age"] = age;
  121.       values["Children"] = age;
  122.       Units[unitNumber] = values;
  123.     }
  124.  
  125.     let result = {};
  126.  
  127.     result["listing_id"] = listing_id;
  128.     result["establishment"] = establishment;
  129.     result["the_arrival_date"] = the_arrival_date;
  130.     result["the_departure_date"] = the_departure_date;
  131.     result["Units"] = Units;
  132.  
  133.     return result;
  134.   },
  135.   reserve: function(rate_id, form, field) {
  136.     let _this = this;
  137.     let form_fields = _this.form_fields();
  138.     let reserveForm = _this.id(form);
  139.  
  140.  
  141.     form_fields["rate_id"] = rate_id;
  142.  
  143.     _this.id(field).val(JSON.stringify(form_fields));
  144.     jQuery("#s4a_loader").show();
  145.     reserveForm.submit();
  146.   },
  147.   validateChildrenAgeSelection: function(units) {
  148.     let size = Object.keys(units).length;
  149.     let i;
  150.     let foo = true;
  151.  
  152.     for (i = 0; i < size; i++) {
  153.       let index = i + 1;
  154.       var children_obj = units[index]["Children"];
  155.  
  156.       let children_arr = Object.keys(children_obj).map(function(key) {
  157.         return [Number(key), children_obj[key]];
  158.       });
  159.       let arr_size = children_arr.length;
  160.       if (arr_size > 0) {
  161.         var x;
  162.         for (x = 0; x < arr_size; x++) {
  163.           if (
  164.             children_arr[x][1] === "" ||
  165.             children_arr[x][1] === undefined ||
  166.             children_arr[x][1] === null
  167.           ) {
  168.             foo = false;
  169.             break;
  170.           }
  171.         }
  172.       }
  173.     }
  174.     return foo;
  175.   },
  176.   updateDate: function(startDate, endDate) {
  177.     let _this = this;
  178.     jQuery(".datepicker_checkin").val(startDate);
  179.     jQuery(".datepicker_checkout").val(endDate);
  180.     checkAvailibilty();
  181.     jQuery("html, body").animate(
  182.       {
  183.         scrollTop: jQuery(_this.id("js_SearchForSpecials")).offset().top
  184.       },
  185.       50
  186.     );
  187.   },
  188.   get_available_rooms: function(caller, rooms, target, showValidate) {
  189.  
  190.     if (showValidate == null) {
  191.       showValidate = true;
  192.     } else {
  193.       showValidate = showValidate;
  194.     }
  195.  
  196.     let _this = this;
  197.     let form_fields = _this.form_fields();
  198.  
  199.     S4AValidation("null", jQuery(_this.id(caller)).find(".datepicker_checkin"));
  200.     S4AValidation(
  201.       "null",
  202.       jQuery(_this.id(caller)).find("#datepicker_checkout")
  203.     );
  204.     jQuery(_this.id(caller))
  205.       .find("input.s4a_val-error:first")
  206.       .focus();
  207.  
  208.     if (_this.validateChildrenAgeSelection(form_fields["Units"])) {
  209.       if (jQuery("#select-alert").length > 0) {
  210.         jQuery("#select-alert").remove();
  211.       }
  212.  
  213.       if (S4AValidationSucess(_this.id(caller))) {
  214.         // _this.id(rooms).html('<hr/><div class="spinner"><div class="rect1"></div><div class="rect2"></div><div class="rect3"></div><div class="rect4"></div><div class="rect5"></div></div>');
  215.  
  216.         jQuery("#s4a_loader").show();
  217.  
  218.         jQuery
  219.           .ajax({
  220.             url: s4aJSO.ajax_url,
  221.             method: "POST",
  222.             dataType: "json",
  223.             data: {
  224.               action: s4aJSO.the_unique_plugin_name + "-ajax-submit",
  225.               cmd: "get_available_rooms",
  226.               listing_id: form_fields.listing_id,
  227.               the_arrival_date: form_fields.the_arrival_date,
  228.               the_departure_date: form_fields.the_departure_date,
  229.               Units: form_fields.Units
  230.             }
  231.           })
  232.           .done(function(data) {
  233.             jQuery("#s4a_loader").hide();
  234.             if (!data.error) {
  235.               let local = data.html_str["ListingRooms"]["local"];
  236.               let channel = data.html_str["ListingRooms"]["channel"];
  237.  
  238.               if (channel) {
  239.                 _this.id(rooms).html(channel);
  240.               } else {
  241.                 _this.id(rooms).html(local);
  242.               }
  243.               calenderStart();
  244.             }
  245.           })
  246.           .fail(function() {
  247.             jQuery("#s4a_loader").hide();
  248.           })
  249.           .always(function(data) {
  250.             jQuery("#s4a_loader").hide();
  251.           });
  252.       } else if (!showValidate) {
  253.         S4ARemoveValidation(
  254.           jQuery(_this.id(caller)).find(".datepicker_checkin")
  255.         );
  256.         S4ARemoveValidation(
  257.           jQuery(_this.id(caller)).find("#datepicker_checkout")
  258.         );
  259.       }
  260.     } else {
  261.       if (jQuery("#select-alert").length == 0) {
  262.         jQuery(
  263.           "<br><div id='select-alert' class='alert alert-info' role='alert'> Please select children(s) age to continue!</div>"
  264.         ).insertAfter("#get_available_rooms");
  265.       }
  266.     }
  267.   },
  268.   check_coupon_code: function(caller, form, price, listingId, target) {
  269.     /* jQuery('#'+caller + ' #apply_button').unbind('click');
  270.                     jQuery('#'+caller + ' #apply_button').off('click'); */
  271.  
  272.     let code = jQuery("#" + caller)
  273.       .find("#voucher_code")
  274.       .val();
  275.     if (code == "") return;
  276.     jQuery("#" + caller + " #apply_button").attr("disabled", "disabled");
  277.  
  278.     let email = jQuery("#" + form)
  279.       .find(".s4a_val-user_email")
  280.       .val();
  281.     let flag = true;
  282.     S4AValidation("null", jQuery(jQuery("#" + caller)).find("#voucher_code"));
  283.  
  284.     if (S4AValidationSucess(jQuery("#" + caller)) && flag) {
  285.       flag = false;
  286.  
  287.       if (
  288.         jQuery("#s4a_resevation").find(
  289.           ".payment_details .amount_details tbody .discount"
  290.         ).length == 0
  291.       ) {
  292.         jQuery
  293.           .ajax({
  294.             url: s4aJSO.ajax_url,
  295.             method: "POST",
  296.             dataType: "json",
  297.             data: {
  298.               action: s4aJSO.the_unique_plugin_name + "-ajax-submit",
  299.               cmd: "check_coupon_code",
  300.               price: price,
  301.               code: code,
  302.               email: email,
  303.               listingId: listingId
  304.             }
  305.           })
  306.           .done(function(data) {
  307.             if (!data.error) {
  308.               if (!data.html_str["error"]) {
  309.                 if (data.html_str["status"] == "Active") {
  310.                   jQuery("#" + form)
  311.                     .find(".promo_show")
  312.                     .show();
  313.                   jQuery("#" + form)
  314.                     .find(".exlcuding_message")
  315.                     .show();
  316.  
  317.                   $coupon_amount = data.html_str["coupon_amount"];
  318.                   $discount_type = data.html_str["discount_type"];
  319.  
  320.                   if ($discount_type == "Fixed Amount Discount") {
  321.                     jQuery("#" + form)
  322.                       .find(".promo_percent")
  323.                       .hide();
  324.                     jQuery("#" + form)
  325.                       .find(".promo_amount")
  326.                       .show();
  327.                     jQuery("#" + form)
  328.                       .find(".promo_amount .price_wrapper  .value")
  329.                       .html($coupon_amount.toLocaleString());
  330.                     jQuery("#" + form)
  331.                       .find(".promo_amount .price_wrapper  .value")
  332.                       .attr("data-value", $coupon_amount);
  333.                   } else if ($discount_type == "Percentage Discount") {
  334.                     jQuery("#" + form)
  335.                       .find(".promo_amount")
  336.                       .hide();
  337.                     jQuery("#" + form)
  338.                       .find(".promo_percent")
  339.                       .show();
  340.                     jQuery("#" + form)
  341.                       .find("#promo_percent")
  342.                       .html($coupon_amount.toLocaleString() + "%");
  343.                   }
  344.  
  345.                   jQuery("#" + caller)
  346.                     .find("#coupon_amount")
  347.                     .val(data.html_str["discount_amount"]);
  348.                   jQuery("#" + form)
  349.                     .find(".payment_details .amount_details tbody")
  350.                     .append(
  351.                       '<tr class="discount"><td>Discount: </td><td class="css_text_right"> -' +
  352.                         data.html_str["discount_amount"] +
  353.                         "</td></tr>"
  354.                     );
  355.  
  356.                   $total_amount = price - data.html_str["discount_amount"];
  357.                   jQuery("#" + form)
  358.                     .find(".res_total  .price_wrapper  .value")
  359.                     .html($total_amount.toLocaleString());
  360.                   jQuery("#" + form)
  361.                     .find(".res_total  .price_wrapper  .value")
  362.                     .attr("data-value", $total_amount);
  363.  
  364.                   alert("Promo code applied successfully!");
  365.                 } else {
  366.                   alert("Promo code is inactive!");
  367.                   jQuery(jQuery("#" + caller))
  368.                     .find("#voucher_code")
  369.                     .addClass("s4a_val-error");
  370.                 }
  371.               } else {
  372.                 alert("Invalid promo code!");
  373.                 jQuery(jQuery("#" + caller))
  374.                   .find("#voucher_code")
  375.                   .addClass("s4a_val-error");
  376.               }
  377.             }
  378.           })
  379.           .fail(function() {})
  380.           .always(function(data) {
  381.             jQuery("#" + caller + " #apply_button").removeAttr("disabled");
  382.             flag = true;
  383.           });
  384.       } else {
  385.         // One coupon already applied
  386.         flag = true;
  387.         jQuery(jQuery("#" + caller))
  388.           .find("#voucher_code")
  389.           .addClass("s4a_val-warning");
  390.         jQuery("#" + caller + " #apply_button").removeAttr("disabled");
  391.       }
  392.     } else {
  393.       jQuery("#" + caller + " #apply_button").removeAttr("disabled");
  394.     }
  395.   }
  396. };
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top