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,90 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 3,
"name": "core/columns",
"title": "Columns",
"category": "design",
"allowedBlocks": [ "core/column" ],
"description": "Display content in multiple columns, with blocks added to each column.",
"textdomain": "default",
"attributes": {
"verticalAlignment": {
"type": "string"
},
"isStackedOnMobile": {
"type": "boolean",
"default": true
},
"templateLock": {
"type": [ "string", "boolean" ],
"enum": [ "all", "insert", "contentOnly", false ]
}
},
"supports": {
"anchor": true,
"align": [ "wide", "full" ],
"html": false,
"color": {
"gradients": true,
"link": true,
"heading": true,
"button": true,
"__experimentalDefaultControls": {
"background": true,
"text": true
}
},
"spacing": {
"blockGap": {
"__experimentalDefault": "2em",
"sides": [ "horizontal", "vertical" ]
},
"margin": [ "top", "bottom" ],
"padding": true,
"__experimentalDefaultControls": {
"padding": true,
"blockGap": true
}
},
"layout": {
"allowSwitching": false,
"allowInheriting": false,
"allowEditing": false,
"default": {
"type": "flex",
"flexWrap": "nowrap"
}
},
"__experimentalBorder": {
"color": true,
"radius": true,
"style": true,
"width": true,
"__experimentalDefaultControls": {
"color": true,
"radius": true,
"style": true,
"width": true
}
},
"typography": {
"fontSize": true,
"lineHeight": true,
"__experimentalFontFamily": true,
"__experimentalFontWeight": true,
"__experimentalFontStyle": true,
"__experimentalTextTransform": true,
"__experimentalTextDecoration": true,
"__experimentalLetterSpacing": true,
"__experimentalDefaultControls": {
"fontSize": true
}
},
"interactivity": {
"clientNavigation": true
},
"shadow": true
},
"editorStyle": "wp-block-columns-editor",
"style": "wp-block-columns"
}

View File

@@ -0,0 +1,10 @@
.wp-block-columns :where(.wp-block){
margin-left:0;
margin-right:0;
max-width:none;
}
html :where(.wp-block-column){
margin-bottom:0;
margin-top:0;
}

View File

@@ -0,0 +1 @@
.wp-block-columns :where(.wp-block){margin-left:0;margin-right:0;max-width:none}html :where(.wp-block-column){margin-bottom:0;margin-top:0}

View File

@@ -0,0 +1,10 @@
.wp-block-columns :where(.wp-block){
margin-left:0;
margin-right:0;
max-width:none;
}
html :where(.wp-block-column){
margin-bottom:0;
margin-top:0;
}

View File

@@ -0,0 +1 @@
.wp-block-columns :where(.wp-block){margin-left:0;margin-right:0;max-width:none}html :where(.wp-block-column){margin-bottom:0;margin-top:0}

View File

@@ -0,0 +1,74 @@
.wp-block-columns{
align-items:normal !important;
box-sizing:border-box;
display:flex;
flex-wrap:wrap !important;
}
@media (min-width:782px){
.wp-block-columns{
flex-wrap:nowrap !important;
}
}
.wp-block-columns.are-vertically-aligned-top{
align-items:flex-start;
}
.wp-block-columns.are-vertically-aligned-center{
align-items:center;
}
.wp-block-columns.are-vertically-aligned-bottom{
align-items:flex-end;
}
@media (max-width:781px){
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
flex-basis:100% !important;
}
}
@media (min-width:782px){
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
flex-basis:0;
flex-grow:1;
}
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{
flex-grow:0;
}
}
.wp-block-columns.is-not-stacked-on-mobile{
flex-wrap:nowrap !important;
}
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{
flex-basis:0;
flex-grow:1;
}
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{
flex-grow:0;
}
:where(.wp-block-columns){
margin-bottom:1.75em;
}
:where(.wp-block-columns.has-background){
padding:1.25em 2.375em;
}
.wp-block-column{
flex-grow:1;
min-width:0;
overflow-wrap:break-word;
word-break:break-word;
}
.wp-block-column.is-vertically-aligned-top{
align-self:flex-start;
}
.wp-block-column.is-vertically-aligned-center{
align-self:center;
}
.wp-block-column.is-vertically-aligned-bottom{
align-self:flex-end;
}
.wp-block-column.is-vertically-aligned-stretch{
align-self:stretch;
}
.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{
width:100%;
}

View File

@@ -0,0 +1 @@
.wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}

View File

@@ -0,0 +1,74 @@
.wp-block-columns{
align-items:normal !important;
box-sizing:border-box;
display:flex;
flex-wrap:wrap !important;
}
@media (min-width:782px){
.wp-block-columns{
flex-wrap:nowrap !important;
}
}
.wp-block-columns.are-vertically-aligned-top{
align-items:flex-start;
}
.wp-block-columns.are-vertically-aligned-center{
align-items:center;
}
.wp-block-columns.are-vertically-aligned-bottom{
align-items:flex-end;
}
@media (max-width:781px){
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
flex-basis:100% !important;
}
}
@media (min-width:782px){
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
flex-basis:0;
flex-grow:1;
}
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{
flex-grow:0;
}
}
.wp-block-columns.is-not-stacked-on-mobile{
flex-wrap:nowrap !important;
}
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{
flex-basis:0;
flex-grow:1;
}
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{
flex-grow:0;
}
:where(.wp-block-columns){
margin-bottom:1.75em;
}
:where(.wp-block-columns.has-background){
padding:1.25em 2.375em;
}
.wp-block-column{
flex-grow:1;
min-width:0;
overflow-wrap:break-word;
word-break:break-word;
}
.wp-block-column.is-vertically-aligned-top{
align-self:flex-start;
}
.wp-block-column.is-vertically-aligned-center{
align-self:center;
}
.wp-block-column.is-vertically-aligned-bottom{
align-self:flex-end;
}
.wp-block-column.is-vertically-aligned-stretch{
align-self:stretch;
}
.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{
width:100%;
}

View File

@@ -0,0 +1 @@
.wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}