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>
This commit is contained in:
Hotel Raxa Dev
2025-07-11 07:43:22 +02:00
commit 5b1e2453c7
9816 changed files with 2784509 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
<div class="form-panel">
<h2 class="title"><?php echo __('Arrival Time','eagle-booking') ?></h2>
<div class="eb-arrival-slots">
<?php
$eb_arrival_slots = eb_get_option('arrival_slots');
if ( $eb_arrival_slots ) foreach ( $eb_arrival_slots as $eb_arrival_slot ) {
echo '<div class="time-slot eb-radio-box">';
echo '<input type="radio" name="eb_user_arrival" id="'.str_replace(" ","",$eb_arrival_slot).'" value="'.$eb_arrival_slot.'">';
echo '<label for="'.str_replace(" ","",$eb_arrival_slot).'" >' . $eb_arrival_slot . '</label>';
echo '</div>';
}
?>
</div>
</div>

View File

@@ -0,0 +1,36 @@
<?php
/**
* The Template for the coupon code
*
* This template can be overridden by copying it to yourtheme/eb-templates/booking/form/coupon.php.
*
* Author: Eagle Themes
* Package: Eagle-Booking/Templates
* Version: 1.1
*/
defined('ABSPATH') || exit;
?>
<div class="form-panel">
<h2 class="title"><?php echo __('Coupon','eagle-booking') ?></h2>
<div id="eb_coupon_code_response" class="eb-alert eb-alert-small eb-alert-icon" style="display: none" role="alert">
<span id="eb_coupon_code_response_text"></span>
</div>
<div id="eb_coupon_code_group" class="eb-g-5-2">
<div>
<input name="eb_coupon" type="text" id="eb_coupon" class="eb-field eb-coupon" style="margin-bottom: 0;" placeholder="<?php echo __('Enter coupon code if you have one', 'eagle-booking') ?>">
<input type="hidden" id="eb_coupon_code" name="eb_coupon_code">
<input type="hidden" id="eb_coupon_value">
</div>
<div>
<button id="eb_validate_coupon" class="btn eb-btn btn-full btn-coupon">
<span class="eb-btn-text"><?php echo __('Validate Code', 'eagle-booking') ?></span>
</button>
</div>
</div>
</div>

View File

@@ -0,0 +1,6 @@
<div class="form-panel">
<h2 class="title"><?php echo __('Special Requests','eagle-booking') ?></h2>
<textarea name="eb_user_requests" id="eagle_booking_requests" class="eb-field" rows="6" placeholder="<?php echo __('Let us know if you have any special requests.', 'eagle-booking') ?>"></textarea>
</div>

View File

@@ -0,0 +1,64 @@
<?php
/**
* The Template for the guest form
*
* This template can be overridden by copying it to yourtheme/eb-templates/booking/form/coupon.php.
*
* Author: Eagle Themes
* Package: Eagle-Booking/Templates
* Version: 1.0
*/
defined('ABSPATH') || exit;
?>
<div class="eb-tab-content guest" data-tab="guest">
<div class="eb-g-lg-2 eb-g-md-1">
<div class="eb-form-col">
<input type="text" id="eb_guest_first_name" class="eb-field">
<label><?php echo __('First Name','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="text" id="eb_guest_last_name" class="eb-field">
<label><?php echo __('Last Name','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="email" id="eb_guest_email" class="eb-field">
<label><?php echo __('Email','eagle-booking') ?></label>
</div>
<input type="tel" id="eb_guest_phone" class="eb_user_phone_field eb-field" placeholder="<?php echo __('Phone','eagle-booking') ?> *">
<?php if ( eb_get_option('eb_booking_form_fields')['address'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_guest_address" class="eb-field">
<label><?php echo __('Address','eagle-booking') ?></label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['city'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_guest_city" class="eb-field">
<label><?php echo __('City','eagle-booking') ?></label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['country'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_guest_country" class="eb-field">
<label><?php echo __('Country','eagle-booking') ?></label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['zip'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_guest_zip" class="eb-field">
<label><?php echo __('ZIP','eagle-booking') ?></label>
</div>
<?php endif ?>
</div>
</div>

View File

@@ -0,0 +1,74 @@
<?php
/**
* The Template for the signed in user
*
* This template can be overridden by copying it to yourtheme/eb-templates/booking/form/coupon.php.
*
* Author: Eagle Themes
* Package: Eagle-Booking/Templates
* Version: 1.1
*/
defined('ABSPATH') || exit;
?>
<div id="eb_signed_in_user" style="<?php if ( !is_user_logged_in() ) echo esc_attr('display: none;') ?>">
<div class="eb-alert eb-alert-success eb-alert-small eb-alert-icon mb25">
<span id="eb_signed_in_user_text"><?php echo __('Logged in as', 'eagle-booking') ?>, <?php echo $eb_current_user->user_login ?>!</span>
<span id="eb_user_sign_out" class="pull-right" style="cursor: pointer;"><?php echo __('Log Out', 'eagle-booking') ?></span>
</div>
<div class="eb-g-lg-2 eb-g-md-1">
<div class="eb-form-col">
<input type="text" id="eb_signed_in_user_first_name" class="eb-field" value="<?php eb_user('first_name') ?>">
<label><?php echo __('First Name','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="text" id="eb_signed_in_user_last_name" class="eb-field" value="<?php eb_user('last_name') ?>">
<label><?php echo __('Last Name','eagle-booking') ?> </label>
</div>
<div class="eb-form-col">
<input type="email" id="eb_signed_in_user_email" class="eb-field" value="<?php eb_user('user_email') ?>">
<label><?php echo __('Email','eagle-booking') ?></label>
</div>
<input type="tel" id="eb_signed_in_user_phone" class="eb_user_phone_field eb-field" placeholder="<?php echo __('Phone','eagle-booking') ?> *" value="<?php eb_user('user_phone') ?>">
<?php if ( eb_get_option('eb_booking_form_fields')['address'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_signed_in_user_address" class="eb-field" value="<?php eb_user('user_address') ?>">
<label><?php echo __('Address','eagle-booking') ?><label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['city'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_signed_in_user_city" class="eb-field" value="<?php eb_user('user_city') ?>">
<label><?php echo __('City','eagle-booking') ?><label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['country'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_signed_in_user_country" class="eb-field" value="<?php eb_user('user_country') ?>">
<label><?php echo __('Country','eagle-booking') ?><label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['zip'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_signed_in_user_zip" class="eb-field" value="<?php eb_user('user_zip') ?>">
<label><?php echo __('ZIP','eagle-booking') ?><label>
</div>
<?php endif ?>
</div>
</div>

View File

@@ -0,0 +1,38 @@
<?php
/**
* The Template for the signin form
*
* This template can be overridden by copying it to yourtheme/eb-templates/booking/form/coupon.php.
*
* Author: Eagle Themes
* Package: Eagle-Booking/Templates
* Version: 1.1
*/
defined('ABSPATH') || exit;
?>
<div class="eb-tab-content signin" data-tab="signin">
<div id="eb_user_sign_in_response" class="eb-alert eb-alert-small mb20" style="display: none">
<span id="eb_user_sign_in_response_text"></span>
</div>
<form class="eb-g-3-3-1 eb-g-m-1" id="eb_user_sign_in_form">
<div class="eb-form-col">
<input type="text" id="eb_user_sign_in_username" class="eb-field">
<label><?php echo __('Username or Email Address', 'eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="password" id="eb_user_sign_in_password" class="eb-field" autocomplete="on">
<label><?php echo __('Password', 'eagle-booking') ?></label>
</div>
<button id="eb_user_sign_in" class="btn eb-btn btn-full" type="submit">
<span class="eb-btn-text"><?php echo __('Sign In','eagle-booking') ?></span>
</button>
</form>
</div>

View File

@@ -0,0 +1,82 @@
<?php
/**
* The Template for the signup form
*
* This template can be overridden by copying it to yourtheme/eb-templates/booking/form/coupon.php.
*
* Author: Eagle Themes
* Package: Eagle-Booking/Templates
* Version: 1.0
*/
defined('ABSPATH') || exit;
?>
<div class="eb-tab-content signup" data-tab="signup">
<form id="eb_user_signup_booking_form" action="" method="POST">
<div id="eb_user_sign_up_response" class="eb-alert eb-alert-small mb20" role="alert" style="display:none">
<span id="eb_user_sign_up_response_text"></span>
</div>
<div class="eb-g-lg-2 eb-g-md-1">
<div class="eb-form-col">
<input type="email" id="eb_user_sign_up_username" class="eb-field">
<label><?php echo __('Username','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="email" id="eb_user_sign_up_email" class="eb-field">
<label><?php echo __('Email','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="password" id="eb_user_sign_up_password" class="eb-field" autocomplete="on">
<label><?php echo __('Password','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="text" id="eb_user_sign_up_first_name" class="eb-field">
<label><?php echo __('First Name','eagle-booking') ?></label>
</div>
<div class="eb-form-col">
<input type="text" id="eb_user_sign_up_last_name" class="eb-field">
<label><?php echo __('Last Name','eagle-booking') ?></label>
</div>
<input type="tel" id="eb_user_sign_up_phone" class="eb_user_phone_field eb-field" placeholder="<?php echo __('Phone','eagle-booking') ?> *">
<?php if ( eb_get_option('eb_booking_form_fields')['address'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_user_sign_up_address" class="eb-field">
<label><?php echo __('Address','eagle-booking') ?></label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['city'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_user_sign_up_city" class="eb-field">
<label><?php echo __('City','eagle-booking') ?></label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['country'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_user_sign_up_country" class="eb-field">
<label><?php echo __('Country','eagle-booking') ?></label>
</div>
<?php endif ?>
<?php if ( eb_get_option('eb_booking_form_fields')['zip'] == true ) : ?>
<div class="eb-form-col">
<input type="text" id="eb_user_sign_up_zip" class="eb-field">
<label><?php echo __('ZIP','eagle-booking') ?></label>
</div>
<?php endif ?>
</div>
</form>
</div>

View File

@@ -0,0 +1,5 @@
<!-- Terms -->
<div class="mt50 gdpr">
<input type="checkbox" id="eb_terms" value="0">
<label for="eb_terms"><?php echo __('I agree to the', 'eagle-booking') ?> <a class="terms-conditions" target="_blank" href="<?php echo eagle_booking_terms_page() ?>"><?php echo __('Terms and Conditions','eagle-booking') ?></a></label>
</div>