Hotel Raxa Dev 5b1e2453c7 Hotel Raxa - Advanced Booking System Implementation
🏨 Hotel Booking Enhancements:
- Implemented Eagle Booking Advanced Pricing add-on
- Added Booking.com-style rate management system
- Created professional calendar interface for pricing
- Integrated deals and discounts functionality

💰 Advanced Pricing Features:
- Dynamic pricing models (per room, per person, per adult)
- Base rates, adult rates, and child rates management
- Length of stay discounts and early bird deals
- Mobile rates and secret deals implementation
- Seasonal promotions and flash sales

📅 Availability Management:
- Real-time availability tracking
- Stop sell and restriction controls
- Closed to arrival/departure functionality
- Minimum/maximum stay requirements
- Automatic sold-out management

💳 Payment Integration:
- Maintained Redsys payment gateway integration
- Seamless integration with existing Eagle Booking
- No modifications to core Eagle Booking plugin

🛠️ Technical Implementation:
- Custom database tables for advanced pricing
- WordPress hooks and filters integration
- AJAX-powered admin interface
- Data migration from existing Eagle Booking
- Professional calendar view for revenue management

📊 Admin Interface:
- Booking.com-style management dashboard
- Visual rate and availability calendar
- Bulk operations for date ranges
- Statistics and analytics dashboard
- Modal dialogs for quick editing

🔧 Code Quality:
- WordPress coding standards compliance
- Secure database operations with prepared statements
- Proper input validation and sanitization
- Error handling and logging
- Responsive admin interface

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 07:43:22 +02:00

1 line
8.0 KiB
JavaScript

(function(a){a(document).ready(function(){jQuery("#booking-form").on("submit",function(u){var t=jQuery("#eagle_booking_name");var q=jQuery("#eagle_booking_surname");var s=jQuery("#eagle_booking_email");var r=jQuery("#eagle_booking_phone");var v=jQuery("#eagle_booking_terms");if(t.val()===""){t.addClass("empty");u.preventDefault()}if(q.val()===""){q.addClass("empty");u.preventDefault()}if(s.val()===""){s.addClass("empty");u.preventDefault()}if(r.val()===""){r.addClass("empty");u.preventDefault()}if(!v.is(":checked")){v.addClass("empty");u.preventDefault()}a("#booking-form .form-control, #eagle_booking_terms").on("focus",function(){a(this).removeClass("empty")})});jQuery("#room-booking-form, #search-form").on("submit",function(r){var q=jQuery("#eagle_booking_dates");if(q.val()===""){r.preventDefault();a(".datepicker").click()}});var e=a(".checkout-payment-tabs");if(e.length){e.tabs()}var c=a("#wpadminbar");var i=a("header");var j=a(".sticky-sidebar");if(c.length&&c.is(":visible")){var g=c.height()}else{var g=0}if(i.hasClass("fixed")){var f=i.height()}else{var f=10}var l=g+f;if(j.length){var b=new StickySidebar(".sticky-sidebar",{topSpacing:l,bottomSpacing:0,containerSelector:".container",minWidth:991})}var n=new Date(),d=eb_js_settings.eagle_booking_date_format.toUpperCase(),k=a(".datepicker");a(".search-booking-dates").each(function(){var r=Cookies.get("eagle_booking_checkin"),q=Cookies.get("eagle_booking_checkout");a(".search-booking-dates").daterangepicker({autoUpdateInput:false,autoApply:true,alwaysShowCalendars:true,minDate:n}),a(".search-booking-dates").on("apply.daterangepicker",function(w,v){var s=v.startDate.format(d),u=v.endDate.format(d);a(this).val(s+" → "+u),a('input[name="eagle_booking_checkin"]').val(s),a('input[name="eagle_booking_checkout"]').val(u),Cookies.set("eagle_booking_checkin",s,{expires:7}),Cookies.set("eagle_booking_checkout",u,{expires:7});if(a("div").hasClass("search-filters")){m()}if(a("div").hasClass("search-filters")||a("div").hasClass("calendar")){h()}})});function h(){var q=a('input[name="eagle_booking_checkin').val();var v=a('input[name="eagle_booking_checkout').val();var u=moment(q,d);var r=moment(v,d);var s=(new Date(r))-(new Date(u));var t=s/(1000*60*60*24);if(t<0){var t="0"}a("#eagle_booking_nights").val(t)}a("#eagle_booking_slider_range").ionRangeSlider({type:"double",skin:"round",grid:true,min:0,max:1000,from:eb_js_settings.eagle_booking_price_range_min,to:eb_js_settings.eagle_booking_price_range_max,prefix:"$",onChange:function(q){m()},});a("#eagle_booking_slider_range").ionRangeSlider({disable:true,});function o(){var q=jQuery("#eagle_booking_checkbox_services").val();var r=jQuery("#eagle_booking_form_trip_price").val();jQuery.get(eagle_booking_my_vars_final_price.eagle_booking_ajaxurl_final_price,{action:"eagle_booking_final_price_php",eagle_booking_checkbox_services:q,eagle_booking_form_final_price:r},function(s){jQuery("#eagle_booking_final_trip_price span").empty();jQuery("#eagle_booking_final_trip_price span").text(s);jQuery("#eagle_booking_form_final_price").val(s)})}a(".eagle_booking_checkbox_service").change(function(){if(a(this).is(":checked")){var s=a(this).val();var v=a("#eagle_booking_checkbox_services").val();a("#eagle_booking_checkbox_services").val(s+v);var q=a(this).attr("data-id");var r=a("#eagle_booking_checkbox_services_id").val();a("#eagle_booking_checkbox_services_id").val(q+r);o()}else{var s=a(this).val();var v=a("#eagle_booking_checkbox_services").val();var u=v.replace(s,"");a("#eagle_booking_checkbox_services").val(u);var q=a(this).attr("data-id");var r=a("#eagle_booking_checkbox_services_id").val();var t=r.replace(q,"");a("#eagle_booking_checkbox_services_id").val(t);o()}});a(".eagle_booking_search_service").change(function(){if(a(this).is(":checked")){var q=a(this).val();var s=a("#eagle_booking_services").val();a("#eagle_booking_services").val(q+s);m()}else{var q=a(this).val();var s=a("#eagle_booking_services").val();var r=s.replace(q,"");a("#eagle_booking_services").val(r);m()}});a(".eagle_booking_toogle_services_open_content").click(function(){a(".eagle_booking_toogle_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_services_open_content").css("display","none");a(".eagle_booking_toogle_services_close_content").css("display","block")})});a(".eagle_booking_toogle_services_close_content").click(function(){a(".eagle_booking_toogle_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_services_close_content").css("display","none");a(".eagle_booking_toogle_services_open_content").css("display","block")})});a(".eagle_booking_checkbox_additional_service").change(function(){if(a(this).is(":checked")){var r=a(this).val();var s=a("#eagle_booking_additional_services").val();a("#eagle_booking_additional_services").val(r+s);m()}else{var r=a(this).val();var s=a("#eagle_booking_additional_services").val();var q=s.replace(r,"");a("#eagle_booking_additional_services").val(q);m()}});a(".eagle_booking_toogle_additional_services_open_content").click(function(){a(".eagle_booking_toogle_additional_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_additional_services_open_content").css("display","none");a(".eagle_booking_toogle_additional_services_close_content").css("display","block")})});a(".eagle_booking_toogle_additional_services_close_content").click(function(){a(".eagle_booking_toogle_additional_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_additional_services_close_content").css("display","none");a(".eagle_booking_toogle_additional_services_open_content").css("display","block")})});a(function p(){var s=a(".guests-picker");var q=a(".plus");var r=a(".minus");a(q).on("click",function(){var u=a(this);var t=u.closest(s).find("input");if(t.attr("max")==undefined||parseInt(t.val())<parseInt(t.attr("max"))){t.val(parseInt(t.val(),10)+1,10);m()}else{u.next("disabled",true)}});a(r).on("click",function(){var u=a(this);var t=u.closest(s).find("input");if(t.attr("min")==undefined||parseInt(t.val())>parseInt(t.attr("min"))){t.val(parseInt(t.val(),10)-1,10);m()}else{u.prev("disabled",true)}})});function m(B){var D=a("#eagle_booking_checkin").val();var w=a("#eagle_booking_checkout").val();if(D&&w){var v=a("#eagle_booking_guests").val();var y=a("#eagle_booking_max_price").val();var t=a("#eagle_booking_services").val();var G=a("#eagle_booking_additional_services").val();var u=a("#eagle_booking_results_qnt").val();var F=a(".datepicker");var H=a(".guests-button");var q=a(".eagle_booking_search_service");var x=a("#eagle_booking_slider_range");var r=a("#eagle_booking_search_sorting_filter .eagle_booking_search_sorting_filter_active").attr("data-meta-key");var E=a("#eagle_booking_search_sorting_filter .eagle_booking_search_sorting_filter_active").attr("data-order");var C=a("#eagle_booking_search_filter_layout .eagle_booking_search_filter_layout_active").attr("data-layout");if(typeof C==="undefined"){C=1}var A=B;if(typeof A==="undefined"){A=jQuery(".eagle_booking_btn_pagination_active").text()}var z=a('<div class="wrapper-cell"><div class="image"></div><div class="text"><div class="text-line"> </div><div class="text-line"></div><div class="text-line"></div><div class="text-line"></div></div></div>').hide();a("#eagle_booking_rooms_list").append(z);z.fadeIn("slow");F.prop("disabled",true);q.prop("disabled",true);x.ionRangeSlider({disable:true});H.css({"pointer-events":"none"});var s=null;s=a.ajax({url:eagle_booking_my_vars_sorting.eagle_booking_ajaxurl_sorting,method:"GET",data:{action:"eagle_booking_filters",eagle_booking_paged:A,checkin:D,checkout:w,guests:v,max_price:y,services:t,additional_services:G,eagle_booking_search_sorting_filter_meta_key:r,eagle_booking_search_sorting_filter_order:E,},beforeSend:function(){if(s!=null){s.abort()}},success:function(I){a("#eagle_booking_search_results").remove();a(".alert-simple").remove();a("#eagle_booking_rooms_list").append(I);a("#eagle_booking_search_loader").fadeOut("slow",function(){a(this).remove()});a('[data-toggle="popover"]').popover({html:true,offset:"0 10px"})},error:function(){},complete:function(){F.prop("disabled",false);q.prop("disabled",false);H.css({"pointer-events":"",})}})}else{}}})})(jQuery);