4908 lines
452 KiB
SQL
4908 lines
452 KiB
SQL
-- MySQL dump 10.13 Distrib 8.0.44, for Linux (x86_64)
|
|
--
|
|
-- Host: localhost Database: luxury_hotel_db
|
|
-- ------------------------------------------------------
|
|
-- Server version 8.0.44
|
|
|
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
|
/*!50503 SET NAMES utf8mb4 */;
|
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
|
|
|
--
|
|
-- Table structure for table `accountant_activity_logs`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `accountant_activity_logs`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `accountant_activity_logs` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`session_id` int DEFAULT NULL,
|
|
`activity_type` varchar(50) NOT NULL,
|
|
`activity_description` text NOT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` text,
|
|
`country` varchar(2) DEFAULT NULL,
|
|
`city` varchar(100) DEFAULT NULL,
|
|
`risk_level` varchar(20) NOT NULL,
|
|
`is_unusual` tinyint(1) NOT NULL,
|
|
`activity_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_accountant_activity_logs_activity_type` (`activity_type`),
|
|
KEY `idx_accountant_activity_user_date` (`user_id`,`created_at`),
|
|
KEY `ix_accountant_activity_logs_id` (`id`),
|
|
KEY `ix_accountant_activity_logs_session_id` (`session_id`),
|
|
KEY `ix_accountant_activity_logs_created_at` (`created_at`),
|
|
KEY `idx_accountant_activity_unusual` (`is_unusual`,`risk_level`,`created_at`),
|
|
KEY `ix_accountant_activity_logs_user_id` (`user_id`),
|
|
KEY `idx_accountant_activity_type` (`activity_type`,`created_at`),
|
|
KEY `ix_accountant_activity_logs_is_unusual` (`is_unusual`),
|
|
CONSTRAINT `accountant_activity_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `accountant_activity_logs_ibfk_2` FOREIGN KEY (`session_id`) REFERENCES `accountant_sessions` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `accountant_activity_logs`
|
|
--
|
|
|
|
LOCK TABLES `accountant_activity_logs` WRITE;
|
|
/*!40000 ALTER TABLE `accountant_activity_logs` DISABLE KEYS */;
|
|
INSERT INTO `accountant_activity_logs` VALUES (1,1,NULL,'login','Accountant/admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-06 22:45:20'),(2,1,NULL,'login','Accountant/admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-06 22:45:20'),(3,1,NULL,'step_up_authentication','Step-up authentication completed','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{\"method\": \"password\"}','2025-12-06 22:45:51'),(4,1,NULL,'login','Accountant/admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-06 22:49:49'),(5,1,NULL,'login','Accountant/admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-06 22:49:49'),(6,1,NULL,'step_up_authentication','Step-up authentication completed','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{\"method\": \"password\"}','2025-12-06 22:50:08'),(7,1,NULL,'login','Accountant/admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-06 23:00:48'),(8,1,NULL,'login','Accountant/admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-06 23:00:48'),(9,1,NULL,'step_up_authentication','Step-up authentication completed','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{\"method\": \"password\"}','2025-12-06 23:01:22'),(10,1,NULL,'admin_step_up_authentication','Admin step-up authentication completed','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{\"method\": \"password\"}','2025-12-09 15:07:04');
|
|
/*!40000 ALTER TABLE `accountant_activity_logs` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `accountant_sessions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `accountant_sessions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `accountant_sessions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`session_token` varchar(255) NOT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` text,
|
|
`device_fingerprint` varchar(255) DEFAULT NULL,
|
|
`country` varchar(2) DEFAULT NULL,
|
|
`city` varchar(100) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`last_activity` datetime NOT NULL,
|
|
`step_up_authenticated` tinyint(1) NOT NULL,
|
|
`step_up_expires_at` datetime DEFAULT NULL,
|
|
`session_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`expires_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_accountant_sessions_session_token` (`session_token`),
|
|
KEY `idx_accountant_session_user_active` (`user_id`,`is_active`,`last_activity`),
|
|
KEY `ix_accountant_sessions_id` (`id`),
|
|
KEY `ix_accountant_sessions_is_active` (`is_active`),
|
|
KEY `ix_accountant_sessions_created_at` (`created_at`),
|
|
KEY `idx_accountant_session_expires` (`expires_at`,`is_active`),
|
|
KEY `ix_accountant_sessions_user_id` (`user_id`),
|
|
KEY `ix_accountant_sessions_last_activity` (`last_activity`),
|
|
KEY `ix_accountant_sessions_expires_at` (`expires_at`),
|
|
CONSTRAINT `accountant_sessions_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `accountant_sessions`
|
|
--
|
|
|
|
LOCK TABLES `accountant_sessions` WRITE;
|
|
/*!40000 ALTER TABLE `accountant_sessions` DISABLE KEYS */;
|
|
INSERT INTO `accountant_sessions` VALUES (1,1,'qn2dH5PQpyotMREYRoiZNGWBLeCiQak4SHAEalAY5Qc','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-06 22:45:20',0,NULL,NULL,'2025-12-06 22:45:20','2025-12-07 02:45:20'),(2,1,'GPjzH9aXKjCTfSLc_RSORGEmkX-OLEdvb6A4FuR4HHI','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-06 22:45:20',1,'2025-12-06 23:00:51',NULL,'2025-12-06 22:45:20','2025-12-07 02:45:20'),(3,1,'hjSRJeUo-wRHUUhpOzagUJ9vyAkHfusSsHIltIKU-ec','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-06 22:49:49',0,NULL,NULL,'2025-12-06 22:49:49','2025-12-07 02:49:49'),(4,1,'BipHLR_jgyq_8IqzDbiivE7nT-PcDuR5hEx3Jp94nzE','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-06 22:49:49',1,'2025-12-06 23:05:08',NULL,'2025-12-06 22:49:49','2025-12-07 02:49:49'),(5,1,'ITBY_T2p-tspkPVU9sfShy4FtROrzq9mkdB_7NYfkUg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-06 23:00:48',0,NULL,NULL,'2025-12-06 23:00:48','2025-12-07 03:00:48'),(6,1,'VK60lPBuJGhxzKGDBgH-ITP-yL53jVNt4dEn6oBpm7w','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-06 23:00:48',1,'2025-12-06 23:16:22',NULL,'2025-12-06 23:00:48','2025-12-07 03:00:48'),(7,1,'6U3x9PwLV0PDEz3H7WwDJxCJ5qE5xMCHB1sZ3M7ONQQ','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-09 15:07:03',1,'2025-12-09 15:22:04',NULL,'2025-12-09 15:07:03','2025-12-09 19:07:03');
|
|
/*!40000 ALTER TABLE `accountant_sessions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `admin_activity_logs`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `admin_activity_logs`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `admin_activity_logs` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`session_id` int DEFAULT NULL,
|
|
`activity_type` varchar(50) NOT NULL,
|
|
`activity_description` text NOT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` text,
|
|
`country` varchar(2) DEFAULT NULL,
|
|
`city` varchar(100) DEFAULT NULL,
|
|
`risk_level` varchar(20) NOT NULL,
|
|
`is_unusual` tinyint(1) NOT NULL,
|
|
`activity_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_admin_activity_logs_created_at` (`created_at`),
|
|
KEY `idx_admin_activity_unusual` (`is_unusual`,`risk_level`,`created_at`),
|
|
KEY `ix_admin_activity_logs_user_id` (`user_id`),
|
|
KEY `idx_admin_activity_user_date` (`user_id`,`created_at`),
|
|
KEY `idx_admin_activity_type` (`activity_type`,`created_at`),
|
|
KEY `ix_admin_activity_logs_is_unusual` (`is_unusual`),
|
|
KEY `ix_admin_activity_logs_activity_type` (`activity_type`),
|
|
KEY `ix_admin_activity_logs_id` (`id`),
|
|
KEY `ix_admin_activity_logs_session_id` (`session_id`),
|
|
CONSTRAINT `admin_activity_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `admin_activity_logs_ibfk_2` FOREIGN KEY (`session_id`) REFERENCES `admin_sessions` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `admin_activity_logs`
|
|
--
|
|
|
|
LOCK TABLES `admin_activity_logs` WRITE;
|
|
/*!40000 ALTER TABLE `admin_activity_logs` DISABLE KEYS */;
|
|
INSERT INTO `admin_activity_logs` VALUES (1,1,NULL,'step_up_authentication','Admin step-up authentication completed','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{\"method\": \"password\"}','2025-12-09 18:32:16'),(2,1,NULL,'login','Admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-09 18:53:36'),(3,1,NULL,'login','Admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,'low',0,'{}','2025-12-09 19:35:53'),(4,1,NULL,'login','Admin login successful','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0',NULL,NULL,'low',0,'{}','2025-12-09 23:40:26');
|
|
/*!40000 ALTER TABLE `admin_activity_logs` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `admin_sessions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `admin_sessions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `admin_sessions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`session_token` varchar(255) NOT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` text,
|
|
`device_fingerprint` varchar(255) DEFAULT NULL,
|
|
`country` varchar(2) DEFAULT NULL,
|
|
`city` varchar(100) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`last_activity` datetime NOT NULL,
|
|
`step_up_authenticated` tinyint(1) NOT NULL,
|
|
`step_up_expires_at` datetime DEFAULT NULL,
|
|
`session_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`expires_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_admin_sessions_session_token` (`session_token`),
|
|
KEY `ix_admin_sessions_expires_at` (`expires_at`),
|
|
KEY `ix_admin_sessions_last_activity` (`last_activity`),
|
|
KEY `ix_admin_sessions_user_id` (`user_id`),
|
|
KEY `idx_admin_session_user_active` (`user_id`,`is_active`,`last_activity`),
|
|
KEY `ix_admin_sessions_created_at` (`created_at`),
|
|
KEY `idx_admin_session_expires` (`expires_at`,`is_active`),
|
|
KEY `ix_admin_sessions_is_active` (`is_active`),
|
|
KEY `ix_admin_sessions_id` (`id`),
|
|
CONSTRAINT `admin_sessions_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `admin_sessions`
|
|
--
|
|
|
|
LOCK TABLES `admin_sessions` WRITE;
|
|
/*!40000 ALTER TABLE `admin_sessions` DISABLE KEYS */;
|
|
INSERT INTO `admin_sessions` VALUES (1,1,'bXujc9twHZlplmN4WFMFIADqVGCq5dIMeGZ3zY01tZc','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-09 18:32:16',1,'2025-12-09 18:47:16',NULL,'2025-12-09 18:32:16','2025-12-10 02:32:16'),(2,1,'Epv5WJLPXqexnewCrq_hKfcq2bCDLW-FG6ry9-Azj4Y','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-09 18:53:36',0,NULL,NULL,'2025-12-09 18:53:36','2025-12-10 02:53:36'),(3,1,'LecLIJ6XI2d35Bvz3JXwoJVpJ6oVVPWK3zO-WHtyldQ','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,NULL,NULL,1,'2025-12-09 19:35:53',0,NULL,NULL,'2025-12-09 19:35:53','2025-12-10 03:35:53'),(4,1,'LWoPIJdGhIICinVKv0AKFWFuUZzNd66QmwIwJOkQggk','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0',NULL,NULL,NULL,1,'2025-12-09 23:40:26',0,NULL,NULL,'2025-12-09 23:40:26','2025-12-10 07:40:26');
|
|
/*!40000 ALTER TABLE `admin_sessions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ai_conversation_feedbacks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ai_conversation_feedbacks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ai_conversation_feedbacks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`conversation_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`rating` int DEFAULT NULL,
|
|
`is_helpful` tinyint(1) DEFAULT NULL,
|
|
`is_correct` tinyint(1) DEFAULT NULL,
|
|
`feedback_text` text,
|
|
`correction` text,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_ai_conversation_feedbacks_conversation_id` (`conversation_id`),
|
|
KEY `ix_ai_conversation_feedbacks_id` (`id`),
|
|
CONSTRAINT `ai_conversation_feedbacks_ibfk_1` FOREIGN KEY (`conversation_id`) REFERENCES `ai_conversations` (`id`),
|
|
CONSTRAINT `ai_conversation_feedbacks_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ai_conversation_feedbacks`
|
|
--
|
|
|
|
LOCK TABLES `ai_conversation_feedbacks` WRITE;
|
|
/*!40000 ALTER TABLE `ai_conversation_feedbacks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `ai_conversation_feedbacks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ai_conversations`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ai_conversations`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ai_conversations` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`session_id` varchar(100) DEFAULT NULL,
|
|
`user_query` text NOT NULL,
|
|
`ai_response` text NOT NULL,
|
|
`intent` varchar(100) DEFAULT NULL,
|
|
`context_used` json DEFAULT NULL,
|
|
`user_role` varchar(50) DEFAULT NULL,
|
|
`response_time_ms` int DEFAULT NULL,
|
|
`is_helpful` tinyint(1) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_ai_conversations_user_role` (`user_role`),
|
|
KEY `idx_ai_conv_session` (`session_id`),
|
|
KEY `ix_ai_conversations_session_id` (`session_id`),
|
|
KEY `ix_ai_conversations_user_id` (`user_id`),
|
|
KEY `ix_ai_conversations_created_at` (`created_at`),
|
|
KEY `ix_ai_conversations_intent` (`intent`),
|
|
KEY `idx_ai_conv_user_date` (`user_id`,`created_at`),
|
|
KEY `ix_ai_conversations_id` (`id`),
|
|
KEY `idx_ai_conv_intent` (`intent`),
|
|
CONSTRAINT `ai_conversations_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ai_conversations`
|
|
--
|
|
|
|
LOCK TABLES `ai_conversations` WRITE;
|
|
/*!40000 ALTER TABLE `ai_conversations` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `ai_conversations` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ai_knowledge_entries`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ai_knowledge_entries`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ai_knowledge_entries` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`topic` varchar(200) NOT NULL,
|
|
`question` text NOT NULL,
|
|
`answer` text NOT NULL,
|
|
`keywords` json DEFAULT NULL,
|
|
`related_intent` varchar(100) DEFAULT NULL,
|
|
`source` varchar(100) DEFAULT NULL,
|
|
`confidence` decimal(5,2) NOT NULL,
|
|
`usage_count` int NOT NULL,
|
|
`success_count` int NOT NULL,
|
|
`user_role` varchar(50) DEFAULT NULL,
|
|
`is_verified` tinyint(1) NOT NULL,
|
|
`created_by_user_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`last_used_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by_user_id` (`created_by_user_id`),
|
|
KEY `idx_ai_knowledge_topic_role` (`topic`,`user_role`),
|
|
KEY `ix_ai_knowledge_entries_topic` (`topic`),
|
|
KEY `idx_ai_knowledge_active` (`is_verified`,`confidence`),
|
|
KEY `ix_ai_knowledge_entries_user_role` (`user_role`),
|
|
KEY `ix_ai_knowledge_entries_related_intent` (`related_intent`),
|
|
KEY `ix_ai_knowledge_entries_id` (`id`),
|
|
CONSTRAINT `ai_knowledge_entries_ibfk_1` FOREIGN KEY (`created_by_user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ai_knowledge_entries`
|
|
--
|
|
|
|
LOCK TABLES `ai_knowledge_entries` WRITE;
|
|
/*!40000 ALTER TABLE `ai_knowledge_entries` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `ai_knowledge_entries` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ai_learned_patterns`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ai_learned_patterns`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ai_learned_patterns` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`pattern_keywords` text NOT NULL,
|
|
`query_pattern` text NOT NULL,
|
|
`intent` varchar(100) NOT NULL,
|
|
`response_template` text,
|
|
`context_keys` json DEFAULT NULL,
|
|
`confidence_score` decimal(5,2) NOT NULL,
|
|
`usage_count` int NOT NULL,
|
|
`success_count` int NOT NULL,
|
|
`source_conversation_id` int DEFAULT NULL,
|
|
`user_role` varchar(50) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`last_used_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `source_conversation_id` (`source_conversation_id`),
|
|
KEY `idx_ai_pattern_intent_role` (`intent`,`user_role`),
|
|
KEY `ix_ai_learned_patterns_id` (`id`),
|
|
KEY `idx_ai_pattern_active` (`is_active`,`confidence_score`),
|
|
KEY `ix_ai_learned_patterns_intent` (`intent`),
|
|
KEY `ix_ai_learned_patterns_user_role` (`user_role`),
|
|
CONSTRAINT `ai_learned_patterns_ibfk_1` FOREIGN KEY (`source_conversation_id`) REFERENCES `ai_conversations` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ai_learned_patterns`
|
|
--
|
|
|
|
LOCK TABLES `ai_learned_patterns` WRITE;
|
|
/*!40000 ALTER TABLE `ai_learned_patterns` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `ai_learned_patterns` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ai_training_metrics`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ai_training_metrics`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ai_training_metrics` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`metric_date` datetime NOT NULL,
|
|
`total_conversations` int NOT NULL,
|
|
`total_patterns_learned` int NOT NULL,
|
|
`total_knowledge_entries` int NOT NULL,
|
|
`average_response_time_ms` int DEFAULT NULL,
|
|
`average_rating` decimal(3,2) DEFAULT NULL,
|
|
`helpful_rate` decimal(5,2) DEFAULT NULL,
|
|
`correct_rate` decimal(5,2) DEFAULT NULL,
|
|
`pattern_match_success_rate` decimal(5,2) DEFAULT NULL,
|
|
`knowledge_usage_rate` decimal(5,2) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_ai_training_metrics_metric_date` (`metric_date`),
|
|
KEY `ix_ai_training_metrics_id` (`id`),
|
|
KEY `idx_ai_metrics_date` (`metric_date`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ai_training_metrics`
|
|
--
|
|
|
|
LOCK TABLES `ai_training_metrics` WRITE;
|
|
/*!40000 ALTER TABLE `ai_training_metrics` DISABLE KEYS */;
|
|
INSERT INTO `ai_training_metrics` VALUES (1,'2025-12-05 21:50:06',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,'2025-12-05 21:50:06'),(2,'2025-12-06 00:02:42',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,'2025-12-06 00:02:42'),(3,'2025-12-07 12:38:23',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,'2025-12-07 12:38:23'),(4,'2025-12-08 20:20:35',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,'2025-12-08 20:20:35'),(5,'2025-12-09 12:33:09',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,'2025-12-09 12:33:09');
|
|
/*!40000 ALTER TABLE `ai_training_metrics` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `alembic_version`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `alembic_version`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `alembic_version` (
|
|
`version_num` varchar(32) NOT NULL,
|
|
PRIMARY KEY (`version_num`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `alembic_version`
|
|
--
|
|
|
|
LOCK TABLES `alembic_version` WRITE;
|
|
/*!40000 ALTER TABLE `alembic_version` DISABLE KEYS */;
|
|
INSERT INTO `alembic_version` VALUES ('fe519abcefe7');
|
|
/*!40000 ALTER TABLE `alembic_version` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `api_keys`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `api_keys`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `api_keys` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(255) NOT NULL,
|
|
`key_hash` varchar(255) NOT NULL,
|
|
`key_prefix` varchar(20) NOT NULL,
|
|
`scopes` json NOT NULL,
|
|
`rate_limit` int NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`expires_at` datetime DEFAULT NULL,
|
|
`description` text,
|
|
`last_used_at` datetime DEFAULT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_api_keys_is_active` (`is_active`),
|
|
KEY `ix_api_keys_expires_at` (`expires_at`),
|
|
CONSTRAINT `api_keys_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `api_keys`
|
|
--
|
|
|
|
LOCK TABLES `api_keys` WRITE;
|
|
/*!40000 ALTER TABLE `api_keys` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `api_keys` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `audit_logs`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `audit_logs`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `audit_logs` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int DEFAULT NULL,
|
|
`action` varchar(100) NOT NULL,
|
|
`resource_type` varchar(50) NOT NULL,
|
|
`resource_id` int DEFAULT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(255) DEFAULT NULL,
|
|
`request_id` varchar(36) DEFAULT NULL,
|
|
`details` json DEFAULT NULL,
|
|
`status` varchar(20) NOT NULL,
|
|
`error_message` text,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_audit_logs_resource_id` (`resource_id`),
|
|
KEY `ix_audit_logs_created_at` (`created_at`),
|
|
CONSTRAINT `audit_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `audit_logs`
|
|
--
|
|
|
|
LOCK TABLES `audit_logs` WRITE;
|
|
/*!40000 ALTER TABLE `audit_logs` DISABLE KEYS */;
|
|
INSERT INTO `audit_logs` VALUES (1,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','9b199759-ac3d-44a0-b8fb-c542b64a36ed','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-05 22:06:28'),(2,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a057a1a0-7093-4ab7-b0d9-81a3f17b2eef','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-05 22:17:26'),(3,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','aeb5126b-f21d-4fc0-b0ce-64b60accba87','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-05 22:52:10'),(4,1,'system_setting_changed','system_settings',11,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8f6798fe-ac66-4c37-82f3-885a0134c176','{\"new_value\": \"EUR\", \"old_value\": \"USD\", \"setting_key\": \"platform_currency\"}','success',NULL,'2025-12-05 22:53:40'),(5,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','ced04052-b33f-4867-994d-07b354a7e9cf','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-05 23:03:07'),(6,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','2eb98d13-b57d-4a50-9c73-bba4de6eb43b','{\"email\": \"customer@hotel.com\"}','failed','Invalid email or password','2025-12-05 23:03:27'),(7,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','36461c48-6f44-4faf-a5a4-2f197eb27db4','{\"email\": \"customer@hotel.com\"}','failed','Invalid email or password','2025-12-05 23:03:46'),(8,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','933b838d-0a77-4420-b032-7c2a49edeefe','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-05 23:04:30'),(9,1,'admin_user_created','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','63339a9e-288e-41f7-bb55-15474b9b0cbd','{\"role_id\": 3, \"is_active\": true, \"created_user_name\": \"Iliyan Angelov\", \"created_user_email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-05 23:05:01'),(10,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a5a1cf05-033e-4132-a06b-22861d4f0971','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-05 23:05:11'),(11,2,'gdpr_export_requested','gdpr_request',1,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0',NULL,'{\"email\": \"customer@gnxsoft.com\", \"is_anonymous\": false, \"request_type\": \"data_export\"}','success',NULL,'2025-12-05 23:11:18'),(12,2,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a1fef5b6-41e9-4a59-9703-b482ed3b54b5','{\"email\": \"customer@gnxsoft.com\", \"remember_me\": false}','success',NULL,'2025-12-05 23:13:00'),(13,2,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','d903aee5-20d5-4a40-ab9a-b01fd155a883','{\"email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-05 23:17:52'),(14,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1e3c57f7-a9fb-4662-a3e1-da20238c41de','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-05 23:18:34'),(15,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1e3c57f7-a9fb-4662-a3e1-da20238c41de','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-05 23:18:34'),(16,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c720700d-6f91-4f9d-a293-e0571b6faaa1','{\"email\": \"admin@gnxsoft.com\"}','failed','Invalid email or password','2025-12-05 23:43:50'),(17,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c45ad801-e7e9-41fd-9854-74409ce669f1','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-05 23:43:59'),(18,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c45ad801-e7e9-41fd-9854-74409ce669f1','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-05 23:43:59'),(19,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','390c38be-9891-4332-9bdc-d68b074c58a8','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 00:11:46'),(20,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','390c38be-9891-4332-9bdc-d68b074c58a8','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 00:11:46'),(21,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','20e4e836-00b9-4a46-a836-ff02eece74aa','{\"email\": \"customer@hotel.com\"}','failed','Invalid email or password','2025-12-06 01:05:03'),(22,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','af05ba8d-df06-4264-9ef7-47f8d747eea6','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 01:05:20'),(23,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','af05ba8d-df06-4264-9ef7-47f8d747eea6','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 01:05:20'),(24,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','05dbc369-cd0f-4c61-b509-dd55c52cca35','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 01:23:58'),(25,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','05dbc369-cd0f-4c61-b509-dd55c52cca35','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 01:23:58'),(26,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','e16c3b46-4ecc-407c-b0e1-78fface4c49d','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 10:44:48'),(27,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','e16c3b46-4ecc-407c-b0e1-78fface4c49d','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 10:44:48'),(28,2,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','dec57864-ac67-4f49-9118-a76c90bbdc36','{\"email\": \"customer@gnxsoft.com\", \"remember_me\": false}','success',NULL,'2025-12-06 22:18:38'),(29,2,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','76320ee6-7468-44c7-ab3a-424748a66b69','{\"email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-06 22:22:29'),(30,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','d1893b43-b06f-4430-83d8-5013a98a139d','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 22:22:36'),(31,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','d1893b43-b06f-4430-83d8-5013a98a139d','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 22:22:36'),(32,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c051ec83-6105-432a-9fea-d35fb608a88a','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 22:35:54'),(33,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c051ec83-6105-432a-9fea-d35fb608a88a','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 22:35:54'),(34,1,'user_mfa_enabled','user',1,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a06ed42f-78f7-4b93-b109-a736e0611e71','{\"user_email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:37:39'),(35,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','5e10e6bf-3f2f-4b6d-833e-b0085d915ddc','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:44:54'),(36,1,'login_mfa_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','2305e4ac-8ea3-41f2-aed8-6e5b2dbf285f','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:45:06'),(37,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','b5fe55c6-8e42-4357-9f17-34239fe7cac2','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 22:45:20'),(38,1,'admin_user_created','user',3,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a42d3dd9-c46b-4c85-8dd2-c16d18ae07ec','{\"role_id\": 3, \"is_active\": true, \"created_user_name\": \"Angel Ivanov\", \"created_user_email\": \"i.angelov@dieselor.bg\"}','success',NULL,'2025-12-06 22:47:17'),(39,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a743746f-0b0a-41e6-813b-13c6614cf593','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:48:03'),(40,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','afe44434-f00f-4ed8-a144-dfef66754cab','{\"email\": \"i.angelov@dieselor.bg\"}','failed','Invalid email or password','2025-12-06 22:48:19'),(41,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','19bd54c6-faf8-4bec-8d40-8d51d4b45dc1','{\"email\": \"i.angelov@dieselor.bg\"}','failed','Invalid email or password','2025-12-06 22:48:50'),(42,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','ac810ddb-f071-4b79-95d6-3bc4d667dbc0','{\"email\": \"i.angelov@dieselor.bg\"}','failed','Invalid email or password','2025-12-06 22:49:04'),(43,1,'login_mfa_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','5969b10f-1a24-40ee-90ea-8968a5bb4200','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:49:20'),(44,1,'login_mfa_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','2a5c8e1c-f361-44e1-a130-5dc61f31c44a','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:49:36'),(45,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','fd96348e-4bbc-4d4b-99b9-38b46db1e23f','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 22:49:49'),(46,1,'admin_user_created','user',4,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c63b14e5-e42f-44cf-b018-1e53d9918e2c','{\"role_id\": 3, \"is_active\": true, \"created_user_name\": \"Lena Borislavova\", \"created_user_email\": \"staff@gnxsoft.com\"}','success',NULL,'2025-12-06 22:52:34'),(47,1,'user_role_changed','user',4,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','cda1c8c4-fd1a-44fc-914f-5d458d3fb5b7','{\"changes\": {\"role\": {\"new\": \"staff\", \"old\": \"customer\", \"new_id\": 2, \"old_id\": 3}}, \"updated_user_id\": 4, \"updated_user_email\": \"staff@gnxsoft.com\"}','success',NULL,'2025-12-06 22:55:08'),(48,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c908d7cc-81c9-42d8-9f90-ef1eb5f34fec','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 22:55:17'),(49,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','4f58dd01-5026-4bfc-969b-cc480be62282','{\"email\": \"staff@gnxsoft.com\"}','failed','Invalid email or password','2025-12-06 22:55:27'),(50,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','4fe99652-12e2-48d9-9495-fcda8f287602','{\"email\": \"staff@gnxsoft.com\"}','failed','Invalid email or password','2025-12-06 22:55:44'),(51,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1a2f6f0d-1a31-475d-bfe4-a5028dc52db9','{\"email\": \"staff@gnxsoft.com\"}','failed','Invalid email or password','2025-12-06 22:57:13'),(52,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','a7cb7ab6-6cac-4fd8-ad8b-4bab0027cf9f','{\"email\": \"staff@gnxsoft.com\"}','failed','Invalid email or password','2025-12-06 22:59:18'),(53,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','7ed2fba2-8deb-4c02-aeff-ade14226e708','{\"email\": \"staff@gnxsoft.com\"}','failed','Account has been temporarily locked due to multiple failed login attempts. Please try again later.','2025-12-06 23:00:06'),(54,1,'login_mfa_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','722cc289-1226-48bc-ae9b-7e802c59ba5e','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 23:00:37'),(55,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','73fb9040-fa5f-412b-9604-864c4cf747c0','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 23:00:48'),(56,1,'user_mfa_disabled','user',1,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','33ddd48e-bc68-4971-b3a1-440a23b29848','{\"user_email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 23:00:57'),(57,1,'user_deleted','user',3,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','e3b1e877-14f6-4b39-afa2-10bbd237c9c1','{\"role\": \"customer\", \"email\": \"i.angelov@dieselor.bg\", \"role_id\": 3, \"user_id\": 3, \"full_name\": \"Angel Ivanov\", \"is_active\": true}','success',NULL,'2025-12-06 23:01:22'),(58,1,'user_deleted','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','0c4f750e-2933-4049-a51a-d63aba954330','{\"role\": \"customer\", \"email\": \"customer@gnxsoft.com\", \"role_id\": 3, \"user_id\": 2, \"full_name\": \"Iliyan Angelov\", \"is_active\": true}','success',NULL,'2025-12-06 23:02:35'),(59,1,'user_deleted','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8f8e4112-0852-41fc-8bb5-7474ceafebdc','{\"role\": \"customer\", \"email\": \"customer@gnxsoft.com\", \"role_id\": 3, \"user_id\": 2, \"full_name\": \"Iliyan Angelov\", \"is_active\": true}','success',NULL,'2025-12-06 23:02:36'),(60,1,'user_deleted','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','65c8f556-4258-49d0-a78f-9579a065db1f','{\"role\": \"customer\", \"email\": \"customer@gnxsoft.com\", \"role_id\": 3, \"user_id\": 2, \"full_name\": \"Iliyan Angelov\", \"is_active\": true}','success',NULL,'2025-12-06 23:04:10'),(61,1,'user_deleted','user',4,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','60a995f9-189d-44d2-b08f-8f9da840e868','{\"role\": \"staff\", \"email\": \"staff@gnxsoft.com\", \"role_id\": 2, \"user_id\": 4, \"full_name\": \"Lena Borislavova\", \"is_active\": true}','success',NULL,'2025-12-06 23:04:20'),(62,1,'admin_user_created','user',5,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','fe619009-903c-40eb-954b-cc96e15a2910','{\"role_id\": 2, \"is_active\": true, \"created_user_name\": \"Lena Angelova\", \"created_user_email\": \"staff@gnxsoft.com\"}','success',NULL,'2025-12-06 23:05:01'),(63,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','cb6937c5-a0b4-4974-ac57-d596836a2ec7','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 23:05:05'),(64,5,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','ccafede4-a316-476d-9104-f3f8b19369b1','{\"email\": \"staff@gnxsoft.com\", \"remember_me\": false}','success',NULL,'2025-12-06 23:05:23'),(65,5,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','3376602e-761d-4d6d-b61c-dbec1384acdb','{\"email\": \"staff@gnxsoft.com\"}','success',NULL,'2025-12-06 23:06:22'),(66,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','f7b30737-03fc-4e82-a0b8-d6f56d6fed8f','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 23:06:33'),(67,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','f7b30737-03fc-4e82-a0b8-d6f56d6fed8f','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 23:06:33'),(68,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','b2765259-680e-4a63-a490-3ea676a8278e','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-06 23:18:16'),(69,5,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','23281bc0-f315-45dd-a5fd-1d5852a6f87f','{\"email\": \"staff@gnxsoft.com\", \"remember_me\": false}','success',NULL,'2025-12-06 23:23:31'),(70,5,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1ee6a9c2-50cb-4436-a22d-05a893a50d16','{\"email\": \"staff@gnxsoft.com\"}','success',NULL,'2025-12-06 23:26:50'),(71,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','6653ba16-33f0-4fb5-8947-8d3a5512439f','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-06 23:27:00'),(72,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','6653ba16-33f0-4fb5-8947-8d3a5512439f','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-06 23:27:00'),(73,5,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8d4e7507-539c-49e0-aeea-d451684e9ab5','{\"email\": \"staff@gnxsoft.com\", \"remember_me\": false}','success',NULL,'2025-12-07 12:56:03'),(74,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','21533563-2a5d-4c7a-a233-0b16e317c80e','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-07 13:33:54'),(75,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','21533563-2a5d-4c7a-a233-0b16e317c80e','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-07 13:33:54'),(76,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','f38c7203-ad09-4bfb-b1f4-0c490ff9d735','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-07 13:41:44'),(77,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','f38c7203-ad09-4bfb-b1f4-0c490ff9d735','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-07 13:41:44'),(78,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','dac27db5-e78b-4149-b863-57e5518167d6','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-07 14:55:25'),(79,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','dac27db5-e78b-4149-b863-57e5518167d6','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-07 14:55:25'),(80,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','6eb04012-0bc0-420b-8c13-137fb82fda8d','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-07 14:58:12'),(81,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','6eb04012-0bc0-420b-8c13-137fb82fda8d','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-07 14:58:12'),(82,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','d4d26038-f2ce-4c7c-a810-f8479bb068be','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-07 15:08:08'),(83,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c78c16ed-26a7-41fc-b495-7db3b77ab539','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-07 17:02:21'),(84,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','c78c16ed-26a7-41fc-b495-7db3b77ab539','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-07 17:02:21'),(85,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8f2f3731-62fd-47fe-86fb-92043ca0a4ef','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-07 18:04:57'),(86,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8f2f3731-62fd-47fe-86fb-92043ca0a4ef','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-07 18:04:57'),(87,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','7d7641b0-b9d5-4cab-862d-a10fba2ba0f3','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-08 20:33:22'),(88,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','7d7641b0-b9d5-4cab-862d-a10fba2ba0f3','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-08 20:33:22'),(89,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','0625ab01-9f6a-49c9-bac7-264ff13e7f32','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-08 21:21:22'),(90,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','0625ab01-9f6a-49c9-bac7-264ff13e7f32','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-08 21:21:22'),(91,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8f679105-a934-4ec7-861f-19cb2f333388','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-08 22:03:47'),(92,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8f679105-a934-4ec7-861f-19cb2f333388','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-08 22:03:47'),(93,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1a4e5f82-a4be-4a45-a98b-f9dc09ccac7d','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-09 13:52:36'),(94,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1a4e5f82-a4be-4a45-a98b-f9dc09ccac7d','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 13:52:36'),(95,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','095b7a20-6e19-47b0-8305-926925d26812','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-09 13:52:53'),(96,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','b3226e94-839b-46eb-8591-d50220fd3b5b','{\"email\": \"customer@gnxsoft.com\"}','failed','Invalid email or password','2025-12-09 13:53:11'),(97,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','94945042-980f-4819-872f-27d5ec71fa00','{\"email\": \"customer@hotel.com\"}','failed','Invalid email or password','2025-12-09 13:53:26'),(98,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','30f6f5ae-a007-4ef0-be15-bd37d6850266','{\"email\": \"i.angelov@dieselor.bg\"}','failed','Invalid email or password','2025-12-09 13:53:37'),(99,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','3201d33c-9470-4bbc-873a-897752e495ec','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-09 13:53:53'),(100,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','3201d33c-9470-4bbc-873a-897752e495ec','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 13:53:53'),(101,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','5d7757aa-9338-4dc0-b43e-4352d22dacb1','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-09 14:22:18'),(102,1,'login_mfa_setup_required','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1c369094-625f-439c-abd8-738f2730b87d','{\"email\": \"admin@hotel.com\", \"reason\": \"MFA is required for accountant/admin roles but not enabled\"}','success',NULL,'2025-12-09 14:22:27'),(103,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1c369094-625f-439c-abd8-738f2730b87d','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 14:22:27'),(104,1,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','1a21d1aa-13c5-414d-b309-eec898c25b7c','{\"email\": \"admin@hotel.com\"}','success',NULL,'2025-12-09 14:42:41'),(105,NULL,'login_failed','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','3a163a27-4a29-4e48-b9df-0083bb2b612d','{\"email\": \"customer@gnxsoft.com\"}','failed','Invalid email or password','2025-12-09 14:42:48'),(106,2,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','7b3c3f18-557a-4300-bea8-47e31bc5c447','{\"email\": \"customer@gnxsoft.com\", \"remember_me\": false}','success',NULL,'2025-12-09 14:43:02'),(107,2,'logout','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','8613269f-b562-4186-8a57-8a6861c3be06','{\"email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-09 14:43:53'),(108,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','31042639-5728-4375-ad90-dc71ebfbb5d4','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 14:57:02'),(109,1,'user_role_changed','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','43b389c5-2c6e-4e72-b997-a988d227bb75','{\"changes\": {\"role\": {\"new\": \"staff\", \"old\": \"customer\", \"new_id\": 2, \"old_id\": 3}}, \"updated_user_id\": 2, \"updated_user_email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-09 15:07:04'),(110,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','d859b4f3-b02a-45e3-a0a4-fc516b7ee42e','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 18:30:52'),(111,1,'user_role_changed','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','2fff419b-bc47-4ba2-a4c9-09bf3bfa2dc3','{\"changes\": {\"role\": {\"new\": \"customer\", \"old\": \"staff\", \"new_id\": 3, \"old_id\": 2}}, \"updated_user_id\": 2, \"updated_user_email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-09 18:32:16'),(112,1,'user_role_changed','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','296711e4-01e0-492f-ba76-64c8136005d8','{\"changes\": {\"role\": {\"new\": \"staff\", \"old\": \"customer\", \"new_id\": 2, \"old_id\": 3}}, \"updated_user_id\": 2, \"updated_user_email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-09 18:32:47'),(113,1,'user_role_changed','user',2,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','d31217fe-6265-4484-95a8-39fac7812a21','{\"changes\": {\"role\": {\"new\": \"customer\", \"old\": \"staff\", \"new_id\": 3, \"old_id\": 2}}, \"updated_user_id\": 2, \"updated_user_email\": \"customer@gnxsoft.com\"}','success',NULL,'2025-12-09 18:32:53'),(114,1,'shift_status_change','staff_shift',2,NULL,NULL,NULL,'{\"notes\": null, \"reason\": \"MANUAL_START\", \"changed_at\": \"2025-12-09T18:39:42.975589\", \"new_status\": \"in_progress\", \"old_status\": \"scheduled\"}','success',NULL,'2025-12-09 18:39:43'),(115,1,'shift_status_change','staff_shift',2,NULL,NULL,NULL,'{\"notes\": null, \"reason\": \"MANUAL_START\", \"changed_at\": \"2025-12-09T18:39:44.056976\", \"new_status\": \"in_progress\", \"old_status\": \"in_progress\"}','success',NULL,'2025-12-09 18:39:44'),(116,1,'shift_status_change','staff_shift',2,NULL,NULL,NULL,'{\"notes\": null, \"reason\": \"MANUAL_COMPLETE\", \"changed_at\": \"2025-12-09T18:39:56.396112\", \"new_status\": \"completed\", \"old_status\": \"in_progress\"}','success',NULL,'2025-12-09 18:39:56'),(117,1,'shift_status_change','staff_shift',2,NULL,NULL,NULL,'{\"notes\": null, \"reason\": \"MANUAL_COMPLETE\", \"changed_at\": \"2025-12-09T18:39:57.453986\", \"new_status\": \"completed\", \"old_status\": \"completed\"}','success',NULL,'2025-12-09 18:39:57'),(118,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','23f7fadc-c92f-4be6-9e13-fb591a50a010','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 18:53:36'),(119,1,'shift_status_change','staff_shift',3,NULL,NULL,NULL,'{\"notes\": \"\", \"reason\": \"MANUAL_CANCEL\", \"changed_at\": \"2025-12-09T18:53:48.816120\", \"new_status\": \"cancelled\", \"old_status\": \"scheduled\"}','success',NULL,'2025-12-09 18:53:49'),(120,1,'shift_status_change','staff_shift',4,NULL,NULL,NULL,'{\"notes\": \"\", \"reason\": \"MANUAL_CANCEL\", \"changed_at\": \"2025-12-09T18:54:56.175005\", \"new_status\": \"cancelled\", \"old_status\": \"scheduled\"}','success',NULL,'2025-12-09 18:54:56'),(121,1,'shift_status_change','staff_shift',5,NULL,NULL,NULL,'{\"notes\": \"\", \"reason\": \"MANUAL_CANCEL\", \"changed_at\": \"2025-12-09T18:56:30.665522\", \"new_status\": \"cancelled\", \"old_status\": \"scheduled\"}','success',NULL,'2025-12-09 18:56:31'),(122,1,'shift_deleted','staff_shift',3,NULL,NULL,NULL,'{\"status\": \"cancelled\", \"staff_id\": 5, \"deleted_at\": \"2025-12-09T19:07:43.310018\", \"shift_date\": \"2025-12-10T18:44:49\"}','success',NULL,'2025-12-09 19:07:43'),(123,1,'shift_deleted','staff_shift',5,NULL,NULL,NULL,'{\"status\": \"cancelled\", \"staff_id\": 5, \"deleted_at\": \"2025-12-09T19:07:46.442180\", \"shift_date\": \"2025-12-09T18:56:25\"}','success',NULL,'2025-12-09 19:07:46'),(124,1,'shift_deleted','staff_shift',4,NULL,NULL,NULL,'{\"status\": \"cancelled\", \"staff_id\": 5, \"deleted_at\": \"2025-12-09T19:07:48.269372\", \"shift_date\": \"2025-12-09T18:54:45\"}','success',NULL,'2025-12-09 19:07:48'),(125,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','66fb7e7d-6b25-4a94-a8ee-90842e38efeb','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 19:35:53'),(126,1,'login_success','authentication',NULL,'127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0','eeb2fe20-91cd-4da1-ba89-77138b731e90','{\"email\": \"admin@hotel.com\", \"remember_me\": false}','success',NULL,'2025-12-09 23:40:26');
|
|
/*!40000 ALTER TABLE `audit_logs` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `banners`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `banners`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `banners` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`title` varchar(100) NOT NULL,
|
|
`description` text,
|
|
`image_url` varchar(255) NOT NULL,
|
|
`link_url` varchar(255) DEFAULT NULL,
|
|
`position` varchar(50) NOT NULL,
|
|
`display_order` int NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`start_date` datetime DEFAULT NULL,
|
|
`end_date` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_banners_id` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `banners`
|
|
--
|
|
|
|
LOCK TABLES `banners` WRITE;
|
|
/*!40000 ALTER TABLE `banners` DISABLE KEYS */;
|
|
INSERT INTO `banners` VALUES (55,'Welcome to Luxury','Experience unparalleled elegance and world-class service at our award-winning hotel. Discover sophisticated rooms, exceptional dining, and modern amenities.','https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1920&h=1080&fit=crop','/rooms','home',1,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(56,'Special Summer Offer','Book now and save up to 30% on your summer getaway! Perfect for families, couples, and solo travelers. Limited time offer.','https://images.unsplash.com/photo-1571896349842-33c89424de2d?w=1920&h=1080&fit=crop','/book','home',2,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(57,'Fine Dining Experience','Savor exquisite cuisine at our Michelin-starred restaurants. Enjoy international flavors, local specialties, and expertly curated wine pairings.','https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=1920&h=1080&fit=crop','/services','home',3,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(58,'Luxury Spa & Wellness','Rejuvenate at our world-class spa with personalized treatments, therapeutic massages, steam rooms, saunas, and yoga classes.','https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=1920&h=1080&fit=crop','/services','home',4,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(59,'Business Events & Conferences','Host your corporate event in our state-of-the-art facilities. Versatile spaces for intimate meetings to large conferences with cutting-edge technology.','https://images.unsplash.com/photo-1497366216548-37526070297c?w=1920&h=1080&fit=crop','/contact','home',5,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(60,'Luxurious Suites','Elegantly designed suites with spacious layouts, separate living areas, marble bathrooms, and private balconies with panoramic views. Smart room controls and premium amenities included.','https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1920&h=1080&fit=crop','/rooms','rooms',1,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(61,'Presidential Suite','Ultimate luxury in our exclusive 2,000+ sq ft suite. Features grand living room, formal dining, fully equipped kitchen, private terrace, and personal butler service. Perfect for VIP guests.','https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1920&h=1080&fit=crop','/rooms','rooms',2,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(62,'Ocean View Rooms','Breathtaking ocean views from private balconies. Spacious rooms with floor-to-ceiling windows, coastal decor, and premium furnishings. Perfect for romantic getaways.','https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1920&h=1080&fit=crop','/rooms','rooms',3,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(63,'Our Story','Discover our rich heritage spanning three decades. Founded to redefine luxury hospitality, we\'ve grown into an internationally recognized destination with timeless elegance.','https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1920&h=1080&fit=crop','/about','about',1,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(64,'Award-Winning Service','Recognized globally for exceptional hospitality with prestigious awards including five-star ratings and \"Best Luxury Hotel\" honors. Our trained team delivers service beyond expectations.','https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=1920&h=1080&fit=crop','/about','about',2,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(65,'Get in Touch','Our friendly team is available 24/7 for reservations, inquiries, and special requests. Reach us by phone, email, or visit our front desk. Concierge assistance available.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1920&h=1080&fit=crop','/contact','contact',1,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(66,'Premium Services','Enjoy personalized butler service, private airport transfers, VIP lounge access, and priority reservations. Business center, city tours, and special occasion planning available.','https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=1920&h=1080&fit=crop','/services','services',1,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(67,'24/7 Concierge Service','Our dedicated concierge team is available around the clock. We assist with restaurant reservations, event tickets, transportation, exclusive experiences, and special occasions.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1920&h=1080&fit=crop','/services','services',2,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(68,'Early Bird Special','Book 30 days in advance and save 20%! Perfect for travelers who plan ahead. Applies to all room types. Terms and conditions apply.','https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1920&h=1080&fit=crop','/book','home',6,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(69,'Weekend Getaway Package','All-inclusive weekend package with luxurious accommodation, daily breakfast, and full spa access. Late checkout included. Available Friday through Sunday.','https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1920&h=1080&fit=crop','/book','home',7,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(70,'Honeymoon Package','Romantic honeymoon package includes luxurious suite, breakfast in bed, candlelit dinner with champagne, couples spa treatments, and special amenities.','https://images.unsplash.com/photo-1611892440504-42a792e24d32?w=1920&h=1080&fit=crop','/book','home',8,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(71,'Join Our Loyalty Program','Earn points with every stay. Redeem for free nights, upgrades, dining credits, and spa treatments. Multiple tier levels from Silver to Platinum. Join free today!','https://images.unsplash.com/photo-1519389950473-47ba0277781c?w=1920&h=1080&fit=crop','/loyalty','home',9,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26'),(72,'Gift Cards Available','Give the gift of luxury with our hotel gift cards. Perfect for any occasion. Usable for accommodations, dining, spa, and all services. Never expire. Purchase online or at front desk.','https://images.unsplash.com/photo-1606761568499-6d2451b23c66?w=1920&h=1080&fit=crop','/gift-cards','home',10,1,'2025-12-05 22:16:26','2026-12-05 22:16:26','2025-12-05 22:16:26','2025-12-05 22:16:26');
|
|
/*!40000 ALTER TABLE `banners` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `blog_posts`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `blog_posts`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `blog_posts` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`title` varchar(500) NOT NULL,
|
|
`slug` varchar(500) NOT NULL,
|
|
`excerpt` text,
|
|
`content` text NOT NULL,
|
|
`featured_image` varchar(1000) DEFAULT NULL,
|
|
`author_id` int NOT NULL,
|
|
`published_at` datetime DEFAULT NULL,
|
|
`is_published` tinyint(1) NOT NULL,
|
|
`tags` text,
|
|
`meta_title` varchar(500) DEFAULT NULL,
|
|
`meta_description` text,
|
|
`meta_keywords` varchar(1000) DEFAULT NULL,
|
|
`views_count` int NOT NULL,
|
|
`sections` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_blog_posts_slug` (`slug`),
|
|
KEY `ix_blog_posts_id` (`id`),
|
|
KEY `ix_blog_posts_published_at` (`published_at`),
|
|
KEY `ix_blog_posts_is_published` (`is_published`),
|
|
KEY `ix_blog_posts_title` (`title`),
|
|
KEY `ix_blog_posts_author_id` (`author_id`),
|
|
CONSTRAINT `blog_posts_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `blog_posts`
|
|
--
|
|
|
|
LOCK TABLES `blog_posts` WRITE;
|
|
/*!40000 ALTER TABLE `blog_posts` DISABLE KEYS */;
|
|
INSERT INTO `blog_posts` VALUES (1,'10 Tips for Planning the Perfect Luxury Hotel Stay','10-tips-planning-perfect-luxury-hotel-stay','Discover expert tips to make your luxury hotel experience unforgettable. From booking strategies to maximizing amenities, we share insider secrets.','<p>Planning a luxury hotel stay requires attention to detail and insider knowledge. Whether you\'re celebrating a special occasion or simply treating yourself, these tips will help you make the most of your experience.</p>\n \n <h2>1. Book in Advance</h2>\n <p>Luxury hotels often offer early bird discounts and better room availability when you book well in advance. Planning ahead also gives you access to special packages and upgrades.</p>\n \n <h2>2. Communicate Your Preferences</h2>\n <p>Don\'t hesitate to communicate your preferences when booking. Whether you prefer a high floor, specific room amenities, or have dietary restrictions, hotels are happy to accommodate.</p>\n \n <h2>3. Join Loyalty Programs</h2>\n <p>Most luxury hotels offer loyalty programs with exclusive benefits. Join before your stay to earn points, receive member rates, and enjoy perks like late checkout.</p>\n \n <h2>4. Explore Hotel Amenities</h2>\n <p>Take advantage of all the hotel has to offer - from spa treatments to fine dining. Many luxury hotels have world-class facilities that are worth experiencing.</p>\n \n <h2>5. Use Concierge Services</h2>\n <p>The concierge team is your gateway to the best local experiences. They can secure restaurant reservations, arrange transportation, and provide insider recommendations.</p>\n \n <h2>6. Check for Special Packages</h2>\n <p>Look for special packages that bundle accommodations with dining, spa, or local experiences. These often provide better value than booking separately.</p>\n \n <h2>7. Review Cancellation Policies</h2>\n <p>Understand the cancellation and modification policies before booking. Flexible rates may cost more but provide peace of mind.</p>\n \n <h2>8. Pack Appropriately</h2>\n <p>While luxury hotels provide many amenities, bringing appropriate attire for dining and activities ensures you\'re prepared for all experiences.</p>\n \n <h2>9. Arrive Early or Late</h2>\n <p>If possible, arrive early or late to avoid peak check-in times. This often results in better service and sometimes room upgrades if available.</p>\n \n <h2>10. Leave Reviews</h2>\n <p>Share your experience through reviews. Hotels value feedback and often reward guests who provide detailed, constructive reviews.</p>\n \n <p>Remember, a luxury hotel stay is about creating memories. Take your time, enjoy every moment, and don\'t hesitate to ask for what will make your stay perfect.</p>','https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1200&h=800&fit=crop',1,'2025-11-30 22:47:59',1,'[\"travel tips\", \"luxury travel\", \"hotel guide\", \"vacation planning\"]','10 Tips for Planning the Perfect Luxury Hotel Stay | Travel Guide','Expert tips for planning an unforgettable luxury hotel stay. Learn booking strategies, how to maximize amenities, and insider secrets.','luxury hotel tips, hotel booking guide, travel planning, luxury travel advice',0,'null','2025-12-05 22:47:59','2025-12-05 22:47:59'),(2,'The Art of Fine Dining: A Culinary Journey at Our Hotel','art-fine-dining-culinary-journey','Explore our award-winning restaurants and discover the culinary philosophy behind our Michelin-starred dining experiences.','<p>Fine dining is an art form that combines exceptional ingredients, masterful technique, and impeccable service. At our hotel, we\'ve created culinary experiences that celebrate both tradition and innovation.</p>\n \n <h2>Our Culinary Philosophy</h2>\n <p>Our chefs believe in using the finest locally sourced ingredients, supporting sustainable practices, and creating dishes that tell a story. Each plate is a masterpiece, carefully crafted to delight all senses.</p>\n \n <h2>Signature Dishes</h2>\n <p>From our signature truffle risotto to our perfectly aged wagyu beef, every dish on our menu has been thoughtfully created. Our tasting menus offer a journey through flavors, textures, and culinary traditions.</p>\n \n <h2>Wine Pairing Excellence</h2>\n <p>Our sommeliers curate wine pairings that enhance every dish. With an extensive cellar featuring rare vintages and hidden gems, we ensure the perfect complement to your meal.</p>\n \n <h2>Private Dining Experiences</h2>\n <p>For special occasions, our private dining rooms offer intimate settings with personalized menus. Our chefs work closely with guests to create unforgettable culinary experiences.</p>\n \n <p>Join us for a culinary journey that celebrates the art of fine dining and creates memories that last a lifetime.</p>','https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=1200&h=800&fit=crop',1,'2025-11-25 22:47:59',1,'[\"fine dining\", \"culinary\", \"restaurant\", \"gourmet\"]','The Art of Fine Dining | Culinary Excellence','Discover our award-winning restaurants and Michelin-starred dining experiences. Explore our culinary philosophy and signature dishes.','fine dining, Michelin restaurant, gourmet cuisine, culinary experience',2,'null','2025-12-05 22:47:59','2025-12-06 10:44:11'),(3,'Wellness and Relaxation: Your Guide to Our Spa & Wellness Center','wellness-relaxation-spa-wellness-center-guide','Discover our world-class spa and wellness center. Learn about our treatments, wellness programs, and how to achieve ultimate relaxation.','<p>In today\'s fast-paced world, taking time for wellness and relaxation is essential. Our spa and wellness center offers a sanctuary where you can rejuvenate your mind, body, and spirit.</p>\n \n <h2>Our Wellness Philosophy</h2>\n <p>We believe in holistic wellness that addresses physical, mental, and emotional well-being. Our treatments combine traditional techniques with modern innovations to provide comprehensive care.</p>\n \n <h2>Signature Treatments</h2>\n <p>From our signature deep tissue massages to rejuvenating facials, each treatment is customized to your needs. Our expert therapists use premium products and time-tested techniques.</p>\n \n <h2>Wellness Programs</h2>\n <p>Beyond individual treatments, we offer comprehensive wellness programs including yoga classes, meditation sessions, and personalized fitness consultations.</p>\n \n <h2>The Spa Environment</h2>\n <p>Our spa facilities include steam rooms, saunas, relaxation lounges, and private treatment rooms. Every detail is designed to create a serene, peaceful atmosphere.</p>\n \n <h2>Couples Experiences</h2>\n <p>Share the relaxation experience with our couples treatments. Perfect for romantic getaways or celebrating special moments together.</p>\n \n <p>Whether you\'re seeking stress relief, muscle recovery, or simply a moment of tranquility, our spa and wellness center provides the perfect escape.</p>','https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=1200&h=800&fit=crop',1,'2025-11-20 22:47:59',1,'[\"spa\", \"wellness\", \"relaxation\", \"self-care\"]','Wellness and Relaxation Guide | Spa & Wellness Center','Discover our world-class spa and wellness center. Learn about treatments, wellness programs, and how to achieve ultimate relaxation.','spa, wellness, relaxation, massage, hotel spa',0,'null','2025-12-05 22:47:59','2025-12-05 22:47:59'),(4,'Sustainable Luxury: Our Commitment to Environmental Responsibility','sustainable-luxury-environmental-responsibility','Learn about our sustainability initiatives and how we balance luxury with environmental responsibility. Discover our green practices and commitment to the planet.','<p>Luxury and sustainability are not mutually exclusive. At our hotel, we\'ve proven that you can enjoy world-class amenities while protecting the environment for future generations.</p>\n \n <h2>Our Sustainability Mission</h2>\n <p>We\'re committed to reducing our environmental footprint through innovative practices, renewable energy, and responsible sourcing. Our goal is carbon neutrality while maintaining the highest standards of luxury.</p>\n \n <h2>Green Building Practices</h2>\n <p>Our facilities incorporate energy-efficient systems, water conservation measures, and sustainable materials. We continuously invest in technologies that reduce our environmental impact.</p>\n \n <h2>Local and Sustainable Sourcing</h2>\n <p>We prioritize local suppliers and sustainable ingredients in our restaurants. This not only reduces our carbon footprint but also supports local communities and ensures the freshest quality.</p>\n \n <h2>Waste Reduction</h2>\n <p>Through comprehensive recycling programs, composting, and waste reduction initiatives, we\'ve significantly decreased our waste output. Single-use plastics have been eliminated throughout the property.</p>\n \n <h2>Guest Participation</h2>\n <p>We invite guests to join us in our sustainability efforts through optional programs like towel reuse, energy conservation, and supporting local conservation projects.</p>\n \n <p>Together, we can enjoy luxury experiences while protecting our planet. Every small action contributes to a more sustainable future.</p>','https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=1200&h=800&fit=crop',1,'2025-11-15 22:47:59',1,'[\"sustainability\", \"environment\", \"green hotel\", \"eco-friendly\"]','Sustainable Luxury | Environmental Responsibility','Learn about our sustainability initiatives and how we balance luxury with environmental responsibility. Discover our green practices.','sustainable luxury, green hotel, environmental responsibility, eco-friendly',2,'null','2025-12-05 22:47:59','2025-12-05 22:48:03'),(5,'Celebrating 30 Years of Excellence in Hospitality','celebrating-30-years-excellence-hospitality','Join us as we celebrate three decades of providing exceptional hospitality. Learn about our journey, milestones, and vision for the future.','<p>This year marks a significant milestone - 30 years of excellence in hospitality. From our humble beginnings to becoming an internationally recognized destination, our journey has been remarkable.</p>\n \n <h2>Our Beginnings</h2>\n <p>Founded in 1993, we started with a simple vision: to create a sanctuary of luxury and sophistication. What began as a small boutique property has grown into a world-class destination.</p>\n \n <h2>Key Milestones</h2>\n <p>Over three decades, we\'ve achieved numerous milestones - from our first five-star rating to receiving international awards. Each achievement represents our commitment to excellence.</p>\n \n <h2>Our Team</h2>\n <p>None of this would be possible without our dedicated team. Their passion, professionalism, and commitment to service excellence have been the foundation of our success.</p>\n \n <h2>Looking Forward</h2>\n <p>As we celebrate this milestone, we\'re also looking to the future. We continue to innovate, invest in our facilities, and enhance our services to exceed guest expectations.</p>\n \n <h2>Thank You</h2>\n <p>To all our guests, partners, and team members - thank you for being part of our journey. Here\'s to the next 30 years of creating unforgettable experiences.</p>\n \n <p>Join us in celebrating this special anniversary with special packages and events throughout the year.</p>','https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1200&h=800&fit=crop',1,'2025-11-10 22:47:59',1,'[\"anniversary\", \"hotel history\", \"milestone\", \"celebration\"]','Celebrating 30 Years of Excellence | Hotel Anniversary','Join us as we celebrate three decades of providing exceptional hospitality. Learn about our journey, milestones, and vision for the future.','hotel anniversary, 30 years, hospitality excellence, milestone',0,'null','2025-12-05 22:47:59','2025-12-05 22:47:59'),(6,'The Ultimate Business Traveler\'s Guide to Our Hotel','ultimate-business-traveler-guide','Discover how our hotel caters to business travelers with state-of-the-art facilities, convenient services, and amenities designed for productivity and comfort.','<p>Business travel doesn\'t have to mean sacrificing comfort or productivity. Our hotel is designed specifically to meet the needs of modern business travelers.</p>\n \n <h2>Business Facilities</h2>\n <p>Our fully equipped business center provides everything you need - from high-speed internet to meeting rooms with state-of-the-art AV equipment. Work seamlessly from anywhere in the hotel.</p>\n \n <h2>Convenient Services</h2>\n <p>Express check-in and checkout, 24/7 concierge service, and flexible meeting arrangements ensure your business needs are met efficiently. We understand that time is valuable.</p>\n \n <h2>Comfortable Accommodations</h2>\n <p>Our rooms feature dedicated workspaces, ergonomic furniture, and premium amenities. After a long day of meetings, relax in comfort and recharge for tomorrow.</p>\n \n <h2>Networking Opportunities</h2>\n <p>Our restaurants and lounges provide perfect settings for business networking. Whether hosting clients or connecting with colleagues, we provide the ideal atmosphere.</p>\n \n <h2>Wellness for Business Travelers</h2>\n <p>Maintain your wellness routine with our fitness center, spa services, and healthy dining options. We help you stay balanced even when traveling for business.</p>\n \n <p>Experience business travel redefined - where productivity meets luxury, and comfort enhances performance.</p>','https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&h=800&fit=crop',1,'2025-11-05 22:47:59',1,'[\"business travel\", \"corporate\", \"productivity\", \"meetings\"]','Business Traveler\'s Guide | Corporate Accommodation','Discover how our hotel caters to business travelers with state-of-the-art facilities, convenient services, and productivity-focused amenities.','business travel, corporate hotel, business facilities, meeting rooms',1,'null','2025-12-05 22:47:59','2025-12-08 22:05:54');
|
|
/*!40000 ALTER TABLE `blog_posts` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `bookings`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `bookings`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `bookings` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`booking_number` varchar(50) NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`room_id` int NOT NULL,
|
|
`check_in_date` datetime NOT NULL,
|
|
`check_out_date` datetime NOT NULL,
|
|
`num_guests` int NOT NULL,
|
|
`total_price` decimal(10,2) NOT NULL,
|
|
`original_price` decimal(10,2) DEFAULT NULL,
|
|
`discount_amount` decimal(10,2) DEFAULT NULL,
|
|
`promotion_code` varchar(50) DEFAULT NULL,
|
|
`status` enum('pending','confirmed','checked_in','checked_out','cancelled') NOT NULL,
|
|
`deposit_paid` tinyint(1) NOT NULL,
|
|
`requires_deposit` tinyint(1) NOT NULL,
|
|
`special_requests` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`group_booking_id` int DEFAULT NULL,
|
|
`rate_plan_id` int DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_bookings_booking_number` (`booking_number`),
|
|
KEY `group_booking_id` (`group_booking_id`),
|
|
KEY `rate_plan_id` (`rate_plan_id`),
|
|
KEY `ix_bookings_user_id` (`user_id`),
|
|
KEY `idx_booking_user_dates` (`user_id`,`check_in_date`,`check_out_date`),
|
|
KEY `ix_bookings_check_in_date` (`check_in_date`),
|
|
KEY `ix_bookings_check_out_date` (`check_out_date`),
|
|
KEY `ix_bookings_id` (`id`),
|
|
KEY `ix_bookings_room_id` (`room_id`),
|
|
KEY `idx_booking_dates` (`check_in_date`,`check_out_date`),
|
|
CONSTRAINT `bookings_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `bookings_ibfk_2` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `bookings_ibfk_3` FOREIGN KEY (`group_booking_id`) REFERENCES `group_bookings` (`id`),
|
|
CONSTRAINT `bookings_ibfk_4` FOREIGN KEY (`rate_plan_id`) REFERENCES `rate_plans` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `bookings`
|
|
--
|
|
|
|
LOCK TABLES `bookings` WRITE;
|
|
/*!40000 ALTER TABLE `bookings` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `bookings` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `campaign_emails`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `campaign_emails`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `campaign_emails` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`campaign_id` int NOT NULL,
|
|
`user_id` int DEFAULT NULL,
|
|
`email` varchar(255) NOT NULL,
|
|
`status` enum('pending','sent','delivered','opened','clicked','bounced','failed','unsubscribed') NOT NULL,
|
|
`sent_at` datetime DEFAULT NULL,
|
|
`delivered_at` datetime DEFAULT NULL,
|
|
`opened_at` datetime DEFAULT NULL,
|
|
`clicked_at` datetime DEFAULT NULL,
|
|
`bounced_at` datetime DEFAULT NULL,
|
|
`unsubscribed_at` datetime DEFAULT NULL,
|
|
`open_count` int NOT NULL,
|
|
`click_count` int NOT NULL,
|
|
`last_opened_at` datetime DEFAULT NULL,
|
|
`last_clicked_at` datetime DEFAULT NULL,
|
|
`ab_test_variant` varchar(1) DEFAULT NULL,
|
|
`error_message` text,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_campaign_emails_id` (`id`),
|
|
KEY `ix_campaign_emails_user_id` (`user_id`),
|
|
KEY `ix_campaign_emails_campaign_id` (`campaign_id`),
|
|
KEY `ix_campaign_emails_created_at` (`created_at`),
|
|
KEY `ix_campaign_emails_email` (`email`),
|
|
KEY `ix_campaign_emails_status` (`status`),
|
|
CONSTRAINT `campaign_emails_ibfk_1` FOREIGN KEY (`campaign_id`) REFERENCES `email_campaigns` (`id`),
|
|
CONSTRAINT `campaign_emails_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `campaign_emails`
|
|
--
|
|
|
|
LOCK TABLES `campaign_emails` WRITE;
|
|
/*!40000 ALTER TABLE `campaign_emails` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `campaign_emails` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `campaign_segments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `campaign_segments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `campaign_segments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(200) NOT NULL,
|
|
`description` text,
|
|
`criteria` json NOT NULL,
|
|
`estimated_count` int DEFAULT NULL,
|
|
`last_calculated_at` datetime DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_campaign_segments_id` (`id`),
|
|
KEY `ix_campaign_segments_name` (`name`),
|
|
CONSTRAINT `campaign_segments_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `campaign_segments`
|
|
--
|
|
|
|
LOCK TABLES `campaign_segments` WRITE;
|
|
/*!40000 ALTER TABLE `campaign_segments` DISABLE KEYS */;
|
|
INSERT INTO `campaign_segments` VALUES (1,'Newsletter Subscribers','Users who have subscribed to the newsletter','{\"subscribed\": true}',1,'2025-12-05 22:57:53',1,NULL,'2025-12-05 22:57:53','2025-12-05 22:57:53');
|
|
/*!40000 ALTER TABLE `campaign_segments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `chart_of_accounts`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `chart_of_accounts`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `chart_of_accounts` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`account_code` varchar(20) NOT NULL,
|
|
`account_name` varchar(255) NOT NULL,
|
|
`account_type` enum('asset','liability','equity','revenue','expense','cogs') NOT NULL,
|
|
`account_category` enum('current_assets','fixed_assets','current_liabilities','long_term_liabilities','equity','retained_earnings','operating_revenue','other_revenue','operating_expenses','cogs','other_expenses') DEFAULT NULL,
|
|
`description` text,
|
|
`parent_account_id` int DEFAULT NULL,
|
|
`is_active` varchar(10) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_chart_of_accounts_account_code` (`account_code`),
|
|
KEY `parent_account_id` (`parent_account_id`),
|
|
KEY `ix_chart_of_accounts_account_category` (`account_category`),
|
|
KEY `idx_chart_of_accounts_type` (`account_type`,`is_active`),
|
|
KEY `ix_chart_of_accounts_id` (`id`),
|
|
KEY `idx_chart_of_accounts_category` (`account_category`,`is_active`),
|
|
KEY `ix_chart_of_accounts_account_type` (`account_type`),
|
|
CONSTRAINT `chart_of_accounts_ibfk_1` FOREIGN KEY (`parent_account_id`) REFERENCES `chart_of_accounts` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `chart_of_accounts`
|
|
--
|
|
|
|
LOCK TABLES `chart_of_accounts` WRITE;
|
|
/*!40000 ALTER TABLE `chart_of_accounts` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `chart_of_accounts` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `chat_messages`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `chat_messages`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `chat_messages` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`chat_id` int NOT NULL,
|
|
`sender_id` int DEFAULT NULL,
|
|
`sender_type` varchar(20) NOT NULL,
|
|
`message` text NOT NULL,
|
|
`is_read` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `chat_id` (`chat_id`),
|
|
KEY `sender_id` (`sender_id`),
|
|
KEY `ix_chat_messages_id` (`id`),
|
|
CONSTRAINT `chat_messages_ibfk_1` FOREIGN KEY (`chat_id`) REFERENCES `chats` (`id`),
|
|
CONSTRAINT `chat_messages_ibfk_2` FOREIGN KEY (`sender_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `chat_messages`
|
|
--
|
|
|
|
LOCK TABLES `chat_messages` WRITE;
|
|
/*!40000 ALTER TABLE `chat_messages` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `chat_messages` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `chats`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `chats`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `chats` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`visitor_id` int DEFAULT NULL,
|
|
`visitor_name` varchar(100) DEFAULT NULL,
|
|
`visitor_email` varchar(100) DEFAULT NULL,
|
|
`staff_id` int DEFAULT NULL,
|
|
`status` enum('pending','active','closed') NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`closed_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `visitor_id` (`visitor_id`),
|
|
KEY `staff_id` (`staff_id`),
|
|
KEY `ix_chats_id` (`id`),
|
|
CONSTRAINT `chats_ibfk_1` FOREIGN KEY (`visitor_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `chats_ibfk_2` FOREIGN KEY (`staff_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `chats`
|
|
--
|
|
|
|
LOCK TABLES `chats` WRITE;
|
|
/*!40000 ALTER TABLE `chats` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `chats` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `checkin_checkout`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `checkin_checkout`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `checkin_checkout` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`booking_id` int NOT NULL,
|
|
`checkin_time` datetime DEFAULT NULL,
|
|
`checkout_time` datetime DEFAULT NULL,
|
|
`checkin_by` int DEFAULT NULL,
|
|
`checkout_by` int DEFAULT NULL,
|
|
`room_condition_checkin` text,
|
|
`room_condition_checkout` text,
|
|
`additional_charges` decimal(10,2) NOT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `booking_id` (`booking_id`),
|
|
KEY `checkin_by` (`checkin_by`),
|
|
KEY `checkout_by` (`checkout_by`),
|
|
KEY `ix_checkin_checkout_id` (`id`),
|
|
CONSTRAINT `checkin_checkout_ibfk_1` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `checkin_checkout_ibfk_2` FOREIGN KEY (`checkin_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `checkin_checkout_ibfk_3` FOREIGN KEY (`checkout_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `checkin_checkout`
|
|
--
|
|
|
|
LOCK TABLES `checkin_checkout` WRITE;
|
|
/*!40000 ALTER TABLE `checkin_checkout` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `checkin_checkout` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `complaint_updates`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `complaint_updates`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `complaint_updates` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`complaint_id` int NOT NULL,
|
|
`update_type` varchar(50) NOT NULL,
|
|
`description` text NOT NULL,
|
|
`updated_by` int NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`update_metadata` json DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `updated_by` (`updated_by`),
|
|
KEY `ix_complaint_updates_complaint_id` (`complaint_id`),
|
|
KEY `ix_complaint_updates_created_at` (`created_at`),
|
|
KEY `ix_complaint_updates_id` (`id`),
|
|
CONSTRAINT `complaint_updates_ibfk_1` FOREIGN KEY (`complaint_id`) REFERENCES `guest_complaints` (`id`),
|
|
CONSTRAINT `complaint_updates_ibfk_2` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `complaint_updates`
|
|
--
|
|
|
|
LOCK TABLES `complaint_updates` WRITE;
|
|
/*!40000 ALTER TABLE `complaint_updates` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `complaint_updates` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `consent_records`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `consent_records`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `consent_records` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`consent_type` varchar(100) NOT NULL,
|
|
`granted` tinyint(1) NOT NULL,
|
|
`granted_at` datetime DEFAULT NULL,
|
|
`revoked_at` datetime DEFAULT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(500) DEFAULT NULL,
|
|
`version` varchar(50) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_consent_records_user_id` (`user_id`),
|
|
KEY `ix_consent_records_id` (`id`),
|
|
KEY `ix_consent_records_consent_type` (`consent_type`),
|
|
CONSTRAINT `consent_records_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `consent_records`
|
|
--
|
|
|
|
LOCK TABLES `consent_records` WRITE;
|
|
/*!40000 ALTER TABLE `consent_records` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `consent_records` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `cookie_integration_configs`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `cookie_integration_configs`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `cookie_integration_configs` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`ga_measurement_id` varchar(64) DEFAULT NULL,
|
|
`fb_pixel_id` varchar(64) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`updated_by_id` int DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `updated_by_id` (`updated_by_id`),
|
|
KEY `ix_cookie_integration_configs_id` (`id`),
|
|
CONSTRAINT `cookie_integration_configs_ibfk_1` FOREIGN KEY (`updated_by_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `cookie_integration_configs`
|
|
--
|
|
|
|
LOCK TABLES `cookie_integration_configs` WRITE;
|
|
/*!40000 ALTER TABLE `cookie_integration_configs` DISABLE KEYS */;
|
|
INSERT INTO `cookie_integration_configs` VALUES (1,NULL,NULL,'2025-12-05 21:46:07','2025-12-07 17:04:26',1);
|
|
/*!40000 ALTER TABLE `cookie_integration_configs` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `cookie_policies`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `cookie_policies`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `cookie_policies` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`analytics_enabled` tinyint(1) NOT NULL,
|
|
`marketing_enabled` tinyint(1) NOT NULL,
|
|
`preferences_enabled` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`updated_by_id` int DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `updated_by_id` (`updated_by_id`),
|
|
KEY `ix_cookie_policies_id` (`id`),
|
|
CONSTRAINT `cookie_policies_ibfk_1` FOREIGN KEY (`updated_by_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `cookie_policies`
|
|
--
|
|
|
|
LOCK TABLES `cookie_policies` WRITE;
|
|
/*!40000 ALTER TABLE `cookie_policies` DISABLE KEYS */;
|
|
INSERT INTO `cookie_policies` VALUES (1,0,0,0,'2025-12-05 21:46:07','2025-12-07 17:04:26',1);
|
|
/*!40000 ALTER TABLE `cookie_policies` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `data_retention_policies`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `data_retention_policies`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `data_retention_policies` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`data_type` varchar(100) NOT NULL,
|
|
`retention_days` int NOT NULL,
|
|
`auto_delete` tinyint(1) NOT NULL,
|
|
`description` text,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `data_type` (`data_type`),
|
|
KEY `ix_data_retention_policies_id` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `data_retention_policies`
|
|
--
|
|
|
|
LOCK TABLES `data_retention_policies` WRITE;
|
|
/*!40000 ALTER TABLE `data_retention_policies` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `data_retention_policies` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `data_subject_requests`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `data_subject_requests`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `data_subject_requests` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int DEFAULT NULL,
|
|
`email` varchar(255) NOT NULL,
|
|
`request_type` enum('access','rectification','erasure','portability','restriction','objection') NOT NULL,
|
|
`status` enum('pending','in_progress','completed','rejected','cancelled') NOT NULL,
|
|
`description` text,
|
|
`verification_token` varchar(100) DEFAULT NULL,
|
|
`verified` tinyint(1) NOT NULL,
|
|
`verified_at` datetime DEFAULT NULL,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`notes` text,
|
|
`response_data` json DEFAULT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`completed_by` int DEFAULT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(500) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`user` int DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_data_subject_requests_verification_token` (`verification_token`),
|
|
KEY `assigned_to` (`assigned_to`),
|
|
KEY `completed_by` (`completed_by`),
|
|
KEY `user` (`user`),
|
|
KEY `ix_data_subject_requests_created_at` (`created_at`),
|
|
KEY `ix_data_subject_requests_status` (`status`),
|
|
KEY `ix_data_subject_requests_id` (`id`),
|
|
KEY `ix_data_subject_requests_email` (`email`),
|
|
KEY `ix_data_subject_requests_user_id` (`user_id`),
|
|
KEY `ix_data_subject_requests_request_type` (`request_type`),
|
|
CONSTRAINT `data_subject_requests_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `data_subject_requests_ibfk_2` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `data_subject_requests_ibfk_3` FOREIGN KEY (`completed_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `data_subject_requests_ibfk_4` FOREIGN KEY (`user`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `data_subject_requests`
|
|
--
|
|
|
|
LOCK TABLES `data_subject_requests` WRITE;
|
|
/*!40000 ALTER TABLE `data_subject_requests` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `data_subject_requests` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `drip_sequence_enrollments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `drip_sequence_enrollments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `drip_sequence_enrollments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`sequence_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`current_step` int NOT NULL,
|
|
`next_send_at` datetime DEFAULT NULL,
|
|
`completed` tinyint(1) NOT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`trigger_data` json DEFAULT NULL,
|
|
`enrolled_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_drip_sequence_enrollments_next_send_at` (`next_send_at`),
|
|
KEY `ix_drip_sequence_enrollments_id` (`id`),
|
|
KEY `ix_drip_sequence_enrollments_user_id` (`user_id`),
|
|
KEY `ix_drip_sequence_enrollments_sequence_id` (`sequence_id`),
|
|
KEY `ix_drip_sequence_enrollments_enrolled_at` (`enrolled_at`),
|
|
CONSTRAINT `drip_sequence_enrollments_ibfk_1` FOREIGN KEY (`sequence_id`) REFERENCES `drip_sequences` (`id`),
|
|
CONSTRAINT `drip_sequence_enrollments_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `drip_sequence_enrollments`
|
|
--
|
|
|
|
LOCK TABLES `drip_sequence_enrollments` WRITE;
|
|
/*!40000 ALTER TABLE `drip_sequence_enrollments` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `drip_sequence_enrollments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `drip_sequence_steps`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `drip_sequence_steps`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `drip_sequence_steps` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`sequence_id` int NOT NULL,
|
|
`step_order` int NOT NULL,
|
|
`subject` varchar(500) NOT NULL,
|
|
`html_content` text NOT NULL,
|
|
`text_content` text,
|
|
`template_id` int DEFAULT NULL,
|
|
`delay_days` int NOT NULL,
|
|
`delay_hours` int NOT NULL,
|
|
`conditions` json DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `template_id` (`template_id`),
|
|
KEY `ix_drip_sequence_steps_sequence_id` (`sequence_id`),
|
|
KEY `ix_drip_sequence_steps_id` (`id`),
|
|
CONSTRAINT `drip_sequence_steps_ibfk_1` FOREIGN KEY (`sequence_id`) REFERENCES `drip_sequences` (`id`),
|
|
CONSTRAINT `drip_sequence_steps_ibfk_2` FOREIGN KEY (`template_id`) REFERENCES `email_templates` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `drip_sequence_steps`
|
|
--
|
|
|
|
LOCK TABLES `drip_sequence_steps` WRITE;
|
|
/*!40000 ALTER TABLE `drip_sequence_steps` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `drip_sequence_steps` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `drip_sequences`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `drip_sequences`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `drip_sequences` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(200) NOT NULL,
|
|
`description` text,
|
|
`trigger_event` varchar(100) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_drip_sequences_name` (`name`),
|
|
KEY `ix_drip_sequences_id` (`id`),
|
|
CONSTRAINT `drip_sequences_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `drip_sequences`
|
|
--
|
|
|
|
LOCK TABLES `drip_sequences` WRITE;
|
|
/*!40000 ALTER TABLE `drip_sequences` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `drip_sequences` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `email_campaigns`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `email_campaigns`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `email_campaigns` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(200) NOT NULL,
|
|
`subject` varchar(500) NOT NULL,
|
|
`campaign_type` enum('newsletter','promotional','transactional','abandoned_booking','welcome','drip','custom') NOT NULL,
|
|
`status` enum('draft','scheduled','sending','sent','paused','cancelled') NOT NULL,
|
|
`html_content` text,
|
|
`text_content` text,
|
|
`template_id` int DEFAULT NULL,
|
|
`scheduled_at` datetime DEFAULT NULL,
|
|
`sent_at` datetime DEFAULT NULL,
|
|
`segment_id` int DEFAULT NULL,
|
|
`segment_criteria` json DEFAULT NULL,
|
|
`recipient_type` varchar(50) DEFAULT NULL,
|
|
`is_ab_test` tinyint(1) NOT NULL,
|
|
`ab_test_variant_a_id` int DEFAULT NULL,
|
|
`ab_test_variant_b_id` int DEFAULT NULL,
|
|
`ab_test_split_percentage` int DEFAULT NULL,
|
|
`ab_test_winner` varchar(1) DEFAULT NULL,
|
|
`is_drip` tinyint(1) NOT NULL,
|
|
`drip_sequence_id` int DEFAULT NULL,
|
|
`drip_delay_days` int DEFAULT NULL,
|
|
`total_recipients` int NOT NULL,
|
|
`total_sent` int NOT NULL,
|
|
`total_delivered` int NOT NULL,
|
|
`total_opened` int NOT NULL,
|
|
`total_clicked` int NOT NULL,
|
|
`total_bounced` int NOT NULL,
|
|
`total_unsubscribed` int NOT NULL,
|
|
`open_rate` decimal(5,2) DEFAULT NULL,
|
|
`click_rate` decimal(5,2) DEFAULT NULL,
|
|
`bounce_rate` decimal(5,2) DEFAULT NULL,
|
|
`from_name` varchar(200) DEFAULT NULL,
|
|
`from_email` varchar(255) DEFAULT NULL,
|
|
`reply_to_email` varchar(255) DEFAULT NULL,
|
|
`track_opens` tinyint(1) NOT NULL,
|
|
`track_clicks` tinyint(1) NOT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `template_id` (`template_id`),
|
|
KEY `segment_id` (`segment_id`),
|
|
KEY `ab_test_variant_a_id` (`ab_test_variant_a_id`),
|
|
KEY `ab_test_variant_b_id` (`ab_test_variant_b_id`),
|
|
KEY `drip_sequence_id` (`drip_sequence_id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_email_campaigns_scheduled_at` (`scheduled_at`),
|
|
KEY `ix_email_campaigns_id` (`id`),
|
|
KEY `ix_email_campaigns_status` (`status`),
|
|
KEY `ix_email_campaigns_name` (`name`),
|
|
KEY `ix_email_campaigns_created_at` (`created_at`),
|
|
CONSTRAINT `email_campaigns_ibfk_1` FOREIGN KEY (`template_id`) REFERENCES `email_templates` (`id`),
|
|
CONSTRAINT `email_campaigns_ibfk_2` FOREIGN KEY (`segment_id`) REFERENCES `campaign_segments` (`id`),
|
|
CONSTRAINT `email_campaigns_ibfk_3` FOREIGN KEY (`ab_test_variant_a_id`) REFERENCES `email_campaigns` (`id`),
|
|
CONSTRAINT `email_campaigns_ibfk_4` FOREIGN KEY (`ab_test_variant_b_id`) REFERENCES `email_campaigns` (`id`),
|
|
CONSTRAINT `email_campaigns_ibfk_5` FOREIGN KEY (`drip_sequence_id`) REFERENCES `drip_sequences` (`id`),
|
|
CONSTRAINT `email_campaigns_ibfk_6` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `email_campaigns`
|
|
--
|
|
|
|
LOCK TABLES `email_campaigns` WRITE;
|
|
/*!40000 ALTER TABLE `email_campaigns` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `email_campaigns` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `email_clicks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `email_clicks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `email_clicks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`campaign_email_id` int NOT NULL,
|
|
`url` varchar(1000) NOT NULL,
|
|
`clicked_at` datetime NOT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(500) DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_email_clicks_campaign_email_id` (`campaign_email_id`),
|
|
KEY `ix_email_clicks_clicked_at` (`clicked_at`),
|
|
KEY `ix_email_clicks_id` (`id`),
|
|
CONSTRAINT `email_clicks_ibfk_1` FOREIGN KEY (`campaign_email_id`) REFERENCES `campaign_emails` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `email_clicks`
|
|
--
|
|
|
|
LOCK TABLES `email_clicks` WRITE;
|
|
/*!40000 ALTER TABLE `email_clicks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `email_clicks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `email_templates`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `email_templates`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `email_templates` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(200) NOT NULL,
|
|
`subject` varchar(500) NOT NULL,
|
|
`html_content` text NOT NULL,
|
|
`text_content` text,
|
|
`variables` json DEFAULT NULL,
|
|
`category` varchar(100) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`is_system` tinyint(1) NOT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_email_templates_category` (`category`),
|
|
KEY `ix_email_templates_id` (`id`),
|
|
KEY `ix_email_templates_name` (`name`),
|
|
CONSTRAINT `email_templates_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `email_templates`
|
|
--
|
|
|
|
LOCK TABLES `email_templates` WRITE;
|
|
/*!40000 ALTER TABLE `email_templates` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `email_templates` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `email_unsubscribes`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `email_unsubscribes`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `email_unsubscribes` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`email` varchar(255) NOT NULL,
|
|
`user_id` int DEFAULT NULL,
|
|
`campaign_id` int DEFAULT NULL,
|
|
`unsubscribe_all` tinyint(1) NOT NULL,
|
|
`unsubscribe_type` varchar(50) DEFAULT NULL,
|
|
`reason` text,
|
|
`unsubscribed_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `campaign_id` (`campaign_id`),
|
|
KEY `ix_email_unsubscribes_email` (`email`),
|
|
KEY `ix_email_unsubscribes_id` (`id`),
|
|
KEY `ix_email_unsubscribes_user_id` (`user_id`),
|
|
KEY `ix_email_unsubscribes_unsubscribed_at` (`unsubscribed_at`),
|
|
CONSTRAINT `email_unsubscribes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `email_unsubscribes_ibfk_2` FOREIGN KEY (`campaign_id`) REFERENCES `email_campaigns` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `email_unsubscribes`
|
|
--
|
|
|
|
LOCK TABLES `email_unsubscribes` WRITE;
|
|
/*!40000 ALTER TABLE `email_unsubscribes` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `email_unsubscribes` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `email_verification_tokens`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `email_verification_tokens`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `email_verification_tokens` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`token` varchar(255) NOT NULL,
|
|
`email` varchar(100) NOT NULL,
|
|
`expires_at` datetime NOT NULL,
|
|
`used` tinyint(1) NOT NULL DEFAULT '0',
|
|
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_email_verification_tokens_token` (`token`),
|
|
KEY `ix_email_verification_tokens_id` (`id`),
|
|
KEY `ix_email_verification_tokens_user_id` (`user_id`),
|
|
KEY `ix_email_verification_tokens_expires_at` (`expires_at`),
|
|
CONSTRAINT `email_verification_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `email_verification_tokens`
|
|
--
|
|
|
|
LOCK TABLES `email_verification_tokens` WRITE;
|
|
/*!40000 ALTER TABLE `email_verification_tokens` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `email_verification_tokens` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `favorites`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `favorites`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `favorites` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`room_id` int NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `room_id` (`room_id`),
|
|
KEY `ix_favorites_id` (`id`),
|
|
CONSTRAINT `favorites_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `favorites_ibfk_2` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `favorites`
|
|
--
|
|
|
|
LOCK TABLES `favorites` WRITE;
|
|
/*!40000 ALTER TABLE `favorites` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `favorites` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `financial_approvals`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `financial_approvals`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `financial_approvals` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`action_type` enum('large_refund','payment_status_override','invoice_write_off','large_discount','tax_rate_change','manual_payment_adjustment') NOT NULL,
|
|
`action_description` text NOT NULL,
|
|
`status` enum('pending','approved','rejected','cancelled') NOT NULL,
|
|
`payment_id` int DEFAULT NULL,
|
|
`invoice_id` int DEFAULT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`amount` decimal(10,2) DEFAULT NULL,
|
|
`previous_value` json DEFAULT NULL,
|
|
`new_value` json DEFAULT NULL,
|
|
`requested_by` int NOT NULL,
|
|
`requested_by_email` varchar(255) DEFAULT NULL,
|
|
`request_reason` text,
|
|
`approved_by` int DEFAULT NULL,
|
|
`approved_by_email` varchar(255) DEFAULT NULL,
|
|
`approval_notes` text,
|
|
`approved_at` datetime DEFAULT NULL,
|
|
`rejected_by` int DEFAULT NULL,
|
|
`rejection_reason` text,
|
|
`rejected_at` datetime DEFAULT NULL,
|
|
`approval_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `rejected_by` (`rejected_by`),
|
|
KEY `idx_financial_approval_action` (`action_type`,`status`),
|
|
KEY `ix_financial_approvals_id` (`id`),
|
|
KEY `idx_financial_approval_requester` (`requested_by`,`status`),
|
|
KEY `ix_financial_approvals_invoice_id` (`invoice_id`),
|
|
KEY `ix_financial_approvals_status` (`status`),
|
|
KEY `idx_financial_approval_approver` (`approved_by`,`created_at`),
|
|
KEY `ix_financial_approvals_payment_id` (`payment_id`),
|
|
KEY `ix_financial_approvals_created_at` (`created_at`),
|
|
KEY `ix_financial_approvals_action_type` (`action_type`),
|
|
KEY `ix_financial_approvals_approved_by` (`approved_by`),
|
|
KEY `ix_financial_approvals_requested_by` (`requested_by`),
|
|
KEY `ix_financial_approvals_booking_id` (`booking_id`),
|
|
KEY `idx_financial_approval_status` (`status`,`created_at`),
|
|
CONSTRAINT `financial_approvals_ibfk_1` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`),
|
|
CONSTRAINT `financial_approvals_ibfk_2` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`),
|
|
CONSTRAINT `financial_approvals_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `financial_approvals_ibfk_4` FOREIGN KEY (`requested_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `financial_approvals_ibfk_5` FOREIGN KEY (`approved_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `financial_approvals_ibfk_6` FOREIGN KEY (`rejected_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `financial_approvals`
|
|
--
|
|
|
|
LOCK TABLES `financial_approvals` WRITE;
|
|
/*!40000 ALTER TABLE `financial_approvals` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `financial_approvals` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `financial_audit_trail`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `financial_audit_trail`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `financial_audit_trail` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`action_type` enum('payment_created','payment_completed','payment_refunded','payment_failed','invoice_created','invoice_updated','invoice_paid','refund_processed','price_modified','discount_applied','promotion_applied','settings_changed','data_exported') NOT NULL,
|
|
`action_description` text NOT NULL,
|
|
`payment_id` int DEFAULT NULL,
|
|
`invoice_id` int DEFAULT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`amount` decimal(10,2) DEFAULT NULL,
|
|
`previous_amount` decimal(10,2) DEFAULT NULL,
|
|
`currency` varchar(3) DEFAULT NULL,
|
|
`performed_by` int NOT NULL,
|
|
`performed_by_email` varchar(255) DEFAULT NULL,
|
|
`audit_metadata` json DEFAULT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_financial_audit_action` (`action_type`,`created_at`),
|
|
KEY `ix_financial_audit_trail_id` (`id`),
|
|
KEY `idx_financial_audit_user` (`performed_by`,`created_at`),
|
|
KEY `ix_financial_audit_trail_payment_id` (`payment_id`),
|
|
KEY `idx_financial_audit_booking` (`booking_id`,`created_at`),
|
|
KEY `ix_financial_audit_trail_performed_by` (`performed_by`),
|
|
KEY `ix_financial_audit_trail_created_at` (`created_at`),
|
|
KEY `ix_financial_audit_trail_booking_id` (`booking_id`),
|
|
KEY `ix_financial_audit_trail_action_type` (`action_type`),
|
|
KEY `idx_financial_audit_created` (`created_at`),
|
|
KEY `ix_financial_audit_trail_invoice_id` (`invoice_id`),
|
|
CONSTRAINT `financial_audit_trail_ibfk_1` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`),
|
|
CONSTRAINT `financial_audit_trail_ibfk_2` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`),
|
|
CONSTRAINT `financial_audit_trail_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `financial_audit_trail_ibfk_4` FOREIGN KEY (`performed_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `financial_audit_trail`
|
|
--
|
|
|
|
LOCK TABLES `financial_audit_trail` WRITE;
|
|
/*!40000 ALTER TABLE `financial_audit_trail` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `financial_audit_trail` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `fiscal_periods`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `fiscal_periods`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `fiscal_periods` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`period_name` varchar(50) NOT NULL,
|
|
`period_type` varchar(20) NOT NULL,
|
|
`start_date` datetime NOT NULL,
|
|
`end_date` datetime NOT NULL,
|
|
`status` enum('open','closed','locked') NOT NULL,
|
|
`is_current` tinyint(1) NOT NULL,
|
|
`closed_by` int DEFAULT NULL,
|
|
`closed_at` datetime DEFAULT NULL,
|
|
`notes` varchar(500) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_fiscal_periods_period_name` (`period_name`),
|
|
KEY `ix_fiscal_periods_id` (`id`),
|
|
KEY `ix_fiscal_periods_start_date` (`start_date`),
|
|
KEY `idx_fiscal_period_status` (`status`,`is_current`),
|
|
KEY `ix_fiscal_periods_end_date` (`end_date`),
|
|
KEY `ix_fiscal_periods_status` (`status`),
|
|
KEY `idx_fiscal_period_dates` (`start_date`,`end_date`),
|
|
KEY `ix_fiscal_periods_is_current` (`is_current`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `fiscal_periods`
|
|
--
|
|
|
|
LOCK TABLES `fiscal_periods` WRITE;
|
|
/*!40000 ALTER TABLE `fiscal_periods` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `fiscal_periods` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `gdpr_requests`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `gdpr_requests`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `gdpr_requests` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`request_type` enum('data_export','data_deletion','data_rectification','consent_withdrawal') NOT NULL,
|
|
`status` enum('pending','processing','completed','rejected','cancelled') NOT NULL,
|
|
`user_id` int DEFAULT NULL,
|
|
`user_email` varchar(255) NOT NULL,
|
|
`is_anonymous` tinyint(1) NOT NULL,
|
|
`request_data` json DEFAULT NULL,
|
|
`verification_token` varchar(255) DEFAULT NULL,
|
|
`verified_at` datetime DEFAULT NULL,
|
|
`processed_by` int DEFAULT NULL,
|
|
`processed_at` datetime DEFAULT NULL,
|
|
`processing_notes` text,
|
|
`export_file_path` varchar(500) DEFAULT NULL,
|
|
`deletion_log` json DEFAULT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(255) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`expires_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_gdpr_requests_verification_token` (`verification_token`),
|
|
KEY `processed_by` (`processed_by`),
|
|
KEY `ix_gdpr_requests_id` (`id`),
|
|
KEY `ix_gdpr_requests_request_type` (`request_type`),
|
|
KEY `ix_gdpr_requests_user_id` (`user_id`),
|
|
KEY `ix_gdpr_requests_created_at` (`created_at`),
|
|
KEY `ix_gdpr_requests_is_anonymous` (`is_anonymous`),
|
|
KEY `ix_gdpr_requests_status` (`status`),
|
|
CONSTRAINT `gdpr_requests_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `gdpr_requests_ibfk_2` FOREIGN KEY (`processed_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `gdpr_requests`
|
|
--
|
|
|
|
LOCK TABLES `gdpr_requests` WRITE;
|
|
/*!40000 ALTER TABLE `gdpr_requests` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `gdpr_requests` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `group_booking_members`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `group_booking_members`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `group_booking_members` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`group_booking_id` int NOT NULL,
|
|
`full_name` varchar(100) NOT NULL,
|
|
`email` varchar(100) DEFAULT NULL,
|
|
`phone` varchar(20) DEFAULT NULL,
|
|
`user_id` int DEFAULT NULL,
|
|
`room_block_id` int DEFAULT NULL,
|
|
`assigned_room_id` int DEFAULT NULL,
|
|
`individual_booking_id` int DEFAULT NULL,
|
|
`special_requests` text,
|
|
`preferences` json DEFAULT NULL,
|
|
`individual_amount` decimal(10,2) DEFAULT NULL,
|
|
`individual_paid` decimal(10,2) DEFAULT NULL,
|
|
`individual_balance` decimal(10,2) DEFAULT NULL,
|
|
`is_checked_in` tinyint(1) NOT NULL,
|
|
`checked_in_at` datetime DEFAULT NULL,
|
|
`is_checked_out` tinyint(1) NOT NULL,
|
|
`checked_out_at` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `group_booking_id` (`group_booking_id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `room_block_id` (`room_block_id`),
|
|
KEY `assigned_room_id` (`assigned_room_id`),
|
|
KEY `individual_booking_id` (`individual_booking_id`),
|
|
KEY `ix_group_booking_members_id` (`id`),
|
|
CONSTRAINT `group_booking_members_ibfk_1` FOREIGN KEY (`group_booking_id`) REFERENCES `group_bookings` (`id`),
|
|
CONSTRAINT `group_booking_members_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `group_booking_members_ibfk_3` FOREIGN KEY (`room_block_id`) REFERENCES `group_room_blocks` (`id`),
|
|
CONSTRAINT `group_booking_members_ibfk_4` FOREIGN KEY (`assigned_room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `group_booking_members_ibfk_5` FOREIGN KEY (`individual_booking_id`) REFERENCES `bookings` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `group_booking_members`
|
|
--
|
|
|
|
LOCK TABLES `group_booking_members` WRITE;
|
|
/*!40000 ALTER TABLE `group_booking_members` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `group_booking_members` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `group_bookings`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `group_bookings`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `group_bookings` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`group_booking_number` varchar(50) NOT NULL,
|
|
`coordinator_id` int NOT NULL,
|
|
`coordinator_name` varchar(100) NOT NULL,
|
|
`coordinator_email` varchar(100) NOT NULL,
|
|
`coordinator_phone` varchar(20) DEFAULT NULL,
|
|
`group_name` varchar(200) DEFAULT NULL,
|
|
`group_type` varchar(50) DEFAULT NULL,
|
|
`total_rooms` int NOT NULL,
|
|
`total_guests` int NOT NULL,
|
|
`check_in_date` datetime NOT NULL,
|
|
`check_out_date` datetime NOT NULL,
|
|
`base_rate_per_room` decimal(10,2) NOT NULL,
|
|
`group_discount_percentage` decimal(5,2) DEFAULT NULL,
|
|
`group_discount_amount` decimal(10,2) DEFAULT NULL,
|
|
`original_total_price` decimal(10,2) NOT NULL,
|
|
`discount_amount` decimal(10,2) DEFAULT NULL,
|
|
`total_price` decimal(10,2) NOT NULL,
|
|
`payment_option` enum('coordinator_pays_all','individual_payments','split_payment') NOT NULL,
|
|
`deposit_required` tinyint(1) NOT NULL,
|
|
`deposit_percentage` int DEFAULT NULL,
|
|
`deposit_amount` decimal(10,2) DEFAULT NULL,
|
|
`amount_paid` decimal(10,2) NOT NULL,
|
|
`balance_due` decimal(10,2) NOT NULL,
|
|
`status` enum('draft','pending','confirmed','partially_confirmed','checked_in','checked_out','cancelled') NOT NULL,
|
|
`cancellation_policy` text,
|
|
`cancellation_deadline` datetime DEFAULT NULL,
|
|
`cancellation_penalty_percentage` decimal(5,2) DEFAULT NULL,
|
|
`special_requests` text,
|
|
`notes` text,
|
|
`contract_terms` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`confirmed_at` datetime DEFAULT NULL,
|
|
`cancelled_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_group_bookings_group_booking_number` (`group_booking_number`),
|
|
KEY `coordinator_id` (`coordinator_id`),
|
|
KEY `ix_group_bookings_id` (`id`),
|
|
CONSTRAINT `group_bookings_ibfk_1` FOREIGN KEY (`coordinator_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `group_bookings`
|
|
--
|
|
|
|
LOCK TABLES `group_bookings` WRITE;
|
|
/*!40000 ALTER TABLE `group_bookings` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `group_bookings` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `group_payments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `group_payments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `group_payments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`group_booking_id` int NOT NULL,
|
|
`amount` decimal(10,2) NOT NULL,
|
|
`payment_method` varchar(50) NOT NULL,
|
|
`payment_type` varchar(50) NOT NULL,
|
|
`payment_status` varchar(50) NOT NULL,
|
|
`transaction_id` varchar(100) DEFAULT NULL,
|
|
`payment_date` datetime DEFAULT NULL,
|
|
`notes` text,
|
|
`paid_by_member_id` int DEFAULT NULL,
|
|
`paid_by_user_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `group_booking_id` (`group_booking_id`),
|
|
KEY `paid_by_member_id` (`paid_by_member_id`),
|
|
KEY `paid_by_user_id` (`paid_by_user_id`),
|
|
KEY `ix_group_payments_id` (`id`),
|
|
CONSTRAINT `group_payments_ibfk_1` FOREIGN KEY (`group_booking_id`) REFERENCES `group_bookings` (`id`),
|
|
CONSTRAINT `group_payments_ibfk_2` FOREIGN KEY (`paid_by_member_id`) REFERENCES `group_booking_members` (`id`),
|
|
CONSTRAINT `group_payments_ibfk_3` FOREIGN KEY (`paid_by_user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `group_payments`
|
|
--
|
|
|
|
LOCK TABLES `group_payments` WRITE;
|
|
/*!40000 ALTER TABLE `group_payments` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `group_payments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `group_room_blocks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `group_room_blocks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `group_room_blocks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`group_booking_id` int NOT NULL,
|
|
`room_type_id` int NOT NULL,
|
|
`rooms_blocked` int NOT NULL,
|
|
`rooms_confirmed` int NOT NULL,
|
|
`rooms_available` int NOT NULL,
|
|
`rate_per_room` decimal(10,2) NOT NULL,
|
|
`total_block_price` decimal(10,2) NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`block_released_at` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `group_booking_id` (`group_booking_id`),
|
|
KEY `room_type_id` (`room_type_id`),
|
|
KEY `ix_group_room_blocks_id` (`id`),
|
|
CONSTRAINT `group_room_blocks_ibfk_1` FOREIGN KEY (`group_booking_id`) REFERENCES `group_bookings` (`id`),
|
|
CONSTRAINT `group_room_blocks_ibfk_2` FOREIGN KEY (`room_type_id`) REFERENCES `room_types` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `group_room_blocks`
|
|
--
|
|
|
|
LOCK TABLES `group_room_blocks` WRITE;
|
|
/*!40000 ALTER TABLE `group_room_blocks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `group_room_blocks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_communications`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_communications`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_communications` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`staff_id` int DEFAULT NULL,
|
|
`communication_type` enum('email','phone','sms','chat','in_person','other') NOT NULL,
|
|
`direction` enum('inbound','outbound') NOT NULL,
|
|
`subject` varchar(255) DEFAULT NULL,
|
|
`content` text NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`is_automated` tinyint(1) NOT NULL,
|
|
`communication_metadata` text,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `staff_id` (`staff_id`),
|
|
KEY `booking_id` (`booking_id`),
|
|
KEY `ix_guest_communications_user_id` (`user_id`),
|
|
KEY `ix_guest_communications_id` (`id`),
|
|
CONSTRAINT `guest_communications_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_communications_ibfk_2` FOREIGN KEY (`staff_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_communications_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_communications`
|
|
--
|
|
|
|
LOCK TABLES `guest_communications` WRITE;
|
|
/*!40000 ALTER TABLE `guest_communications` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_communications` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_complaints`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_complaints`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_complaints` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`guest_id` int NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`room_id` int DEFAULT NULL,
|
|
`category` enum('room_quality','service','cleanliness','noise','billing','staff_behavior','amenities','other') NOT NULL,
|
|
`priority` enum('low','medium','high','urgent') NOT NULL,
|
|
`status` enum('open','in_progress','resolved','closed','escalated') NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`description` text NOT NULL,
|
|
`resolution` text,
|
|
`resolved_at` datetime DEFAULT NULL,
|
|
`resolved_by` int DEFAULT NULL,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`escalated_to` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`closed_at` datetime DEFAULT NULL,
|
|
`guest_satisfaction_rating` int DEFAULT NULL,
|
|
`guest_feedback` text,
|
|
`internal_notes` text,
|
|
`attachments` json DEFAULT NULL,
|
|
`requires_follow_up` tinyint(1) NOT NULL,
|
|
`follow_up_date` datetime DEFAULT NULL,
|
|
`follow_up_completed` tinyint(1) NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `resolved_by` (`resolved_by`),
|
|
KEY `escalated_to` (`escalated_to`),
|
|
KEY `ix_guest_complaints_priority` (`priority`),
|
|
KEY `ix_guest_complaints_room_id` (`room_id`),
|
|
KEY `ix_guest_complaints_status` (`status`),
|
|
KEY `ix_guest_complaints_id` (`id`),
|
|
KEY `ix_guest_complaints_assigned_to` (`assigned_to`),
|
|
KEY `ix_guest_complaints_booking_id` (`booking_id`),
|
|
KEY `ix_guest_complaints_created_at` (`created_at`),
|
|
KEY `ix_guest_complaints_guest_id` (`guest_id`),
|
|
KEY `ix_guest_complaints_category` (`category`),
|
|
CONSTRAINT `guest_complaints_ibfk_1` FOREIGN KEY (`guest_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_complaints_ibfk_2` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `guest_complaints_ibfk_3` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `guest_complaints_ibfk_4` FOREIGN KEY (`resolved_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_complaints_ibfk_5` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_complaints_ibfk_6` FOREIGN KEY (`escalated_to`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_complaints`
|
|
--
|
|
|
|
LOCK TABLES `guest_complaints` WRITE;
|
|
/*!40000 ALTER TABLE `guest_complaints` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_complaints` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_notes`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_notes`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_notes` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`created_by` int NOT NULL,
|
|
`note` text NOT NULL,
|
|
`is_important` tinyint(1) NOT NULL,
|
|
`is_private` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_guest_notes_user_id` (`user_id`),
|
|
KEY `ix_guest_notes_id` (`id`),
|
|
CONSTRAINT `guest_notes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_notes_ibfk_2` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_notes`
|
|
--
|
|
|
|
LOCK TABLES `guest_notes` WRITE;
|
|
/*!40000 ALTER TABLE `guest_notes` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_notes` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_preferences`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_preferences`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_preferences` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`preferred_room_location` varchar(100) DEFAULT NULL,
|
|
`preferred_floor` int DEFAULT NULL,
|
|
`preferred_room_type_id` int DEFAULT NULL,
|
|
`preferred_amenities` json DEFAULT NULL,
|
|
`special_requests` text,
|
|
`preferred_services` json DEFAULT NULL,
|
|
`preferred_contact_method` varchar(50) DEFAULT NULL,
|
|
`preferred_language` varchar(10) DEFAULT NULL,
|
|
`dietary_restrictions` json DEFAULT NULL,
|
|
`additional_preferences` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `preferred_room_type_id` (`preferred_room_type_id`),
|
|
KEY `ix_guest_preferences_user_id` (`user_id`),
|
|
KEY `ix_guest_preferences_id` (`id`),
|
|
CONSTRAINT `guest_preferences_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_preferences_ibfk_2` FOREIGN KEY (`preferred_room_type_id`) REFERENCES `room_types` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_preferences`
|
|
--
|
|
|
|
LOCK TABLES `guest_preferences` WRITE;
|
|
/*!40000 ALTER TABLE `guest_preferences` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_preferences` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_requests`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_requests`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_requests` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`booking_id` int NOT NULL,
|
|
`room_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`request_type` enum('extra_towels','extra_pillows','room_cleaning','turndown_service','amenities','maintenance','room_service','other') NOT NULL,
|
|
`status` enum('pending','in_progress','fulfilled','cancelled') NOT NULL,
|
|
`priority` enum('low','normal','high','urgent') NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`fulfilled_by` int DEFAULT NULL,
|
|
`requested_at` datetime NOT NULL,
|
|
`started_at` datetime DEFAULT NULL,
|
|
`fulfilled_at` datetime DEFAULT NULL,
|
|
`guest_notes` text,
|
|
`staff_notes` text,
|
|
`response_time_minutes` int DEFAULT NULL,
|
|
`fulfillment_time_minutes` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `assigned_to` (`assigned_to`),
|
|
KEY `fulfilled_by` (`fulfilled_by`),
|
|
KEY `ix_guest_requests_booking_id` (`booking_id`),
|
|
KEY `ix_guest_requests_id` (`id`),
|
|
KEY `ix_guest_requests_room_id` (`room_id`),
|
|
KEY `ix_guest_requests_requested_at` (`requested_at`),
|
|
CONSTRAINT `guest_requests_ibfk_1` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `guest_requests_ibfk_2` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `guest_requests_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_requests_ibfk_4` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_requests_ibfk_5` FOREIGN KEY (`fulfilled_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_requests`
|
|
--
|
|
|
|
LOCK TABLES `guest_requests` WRITE;
|
|
/*!40000 ALTER TABLE `guest_requests` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_requests` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_segment_associations`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_segment_associations`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_segment_associations` (
|
|
`user_id` int NOT NULL,
|
|
`segment_id` int NOT NULL,
|
|
`assigned_at` datetime NOT NULL,
|
|
PRIMARY KEY (`user_id`,`segment_id`),
|
|
KEY `segment_id` (`segment_id`),
|
|
CONSTRAINT `guest_segment_associations_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_segment_associations_ibfk_2` FOREIGN KEY (`segment_id`) REFERENCES `guest_segments` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_segment_associations`
|
|
--
|
|
|
|
LOCK TABLES `guest_segment_associations` WRITE;
|
|
/*!40000 ALTER TABLE `guest_segment_associations` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_segment_associations` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_segments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_segments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_segments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(100) NOT NULL,
|
|
`description` text,
|
|
`criteria` json DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_guest_segments_name` (`name`),
|
|
KEY `ix_guest_segments_id` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_segments`
|
|
--
|
|
|
|
LOCK TABLES `guest_segments` WRITE;
|
|
/*!40000 ALTER TABLE `guest_segments` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_segments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_tag_associations`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_tag_associations`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_tag_associations` (
|
|
`user_id` int NOT NULL,
|
|
`tag_id` int NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`user_id`,`tag_id`),
|
|
KEY `tag_id` (`tag_id`),
|
|
CONSTRAINT `guest_tag_associations_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `guest_tag_associations_ibfk_2` FOREIGN KEY (`tag_id`) REFERENCES `guest_tags` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_tag_associations`
|
|
--
|
|
|
|
LOCK TABLES `guest_tag_associations` WRITE;
|
|
/*!40000 ALTER TABLE `guest_tag_associations` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_tag_associations` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `guest_tags`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `guest_tags`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `guest_tags` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(50) NOT NULL,
|
|
`color` varchar(7) DEFAULT NULL,
|
|
`description` varchar(255) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_guest_tags_name` (`name`),
|
|
KEY `ix_guest_tags_id` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `guest_tags`
|
|
--
|
|
|
|
LOCK TABLES `guest_tags` WRITE;
|
|
/*!40000 ALTER TABLE `guest_tags` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `guest_tags` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `housekeeping_tasks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `housekeeping_tasks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `housekeeping_tasks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`room_id` int NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`task_type` enum('checkout','stayover','vacant','inspection','turndown') NOT NULL,
|
|
`status` enum('pending','in_progress','completed','skipped','cancelled') NOT NULL,
|
|
`scheduled_time` datetime NOT NULL,
|
|
`started_at` datetime DEFAULT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`checklist_items` json DEFAULT NULL,
|
|
`notes` text,
|
|
`issues_found` text,
|
|
`photos` json DEFAULT NULL,
|
|
`inspected_by` int DEFAULT NULL,
|
|
`inspected_at` datetime DEFAULT NULL,
|
|
`inspection_notes` text,
|
|
`quality_score` int DEFAULT NULL,
|
|
`estimated_duration_minutes` int DEFAULT NULL,
|
|
`actual_duration_minutes` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `assigned_to` (`assigned_to`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `inspected_by` (`inspected_by`),
|
|
KEY `ix_housekeeping_tasks_room_id` (`room_id`),
|
|
KEY `ix_housekeeping_tasks_scheduled_time` (`scheduled_time`),
|
|
KEY `ix_housekeeping_tasks_id` (`id`),
|
|
KEY `ix_housekeeping_tasks_booking_id` (`booking_id`),
|
|
CONSTRAINT `housekeeping_tasks_ibfk_1` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `housekeeping_tasks_ibfk_2` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `housekeeping_tasks_ibfk_3` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `housekeeping_tasks_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `housekeeping_tasks_ibfk_5` FOREIGN KEY (`inspected_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `housekeeping_tasks`
|
|
--
|
|
|
|
LOCK TABLES `housekeeping_tasks` WRITE;
|
|
/*!40000 ALTER TABLE `housekeeping_tasks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `housekeeping_tasks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `inventory_items`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `inventory_items`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `inventory_items` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`category` enum('cleaning_supplies','linens','toiletries','amenities','maintenance','food_beverage','other') NOT NULL,
|
|
`unit` enum('piece','box','bottle','roll','pack','liter','kilogram','meter','other') NOT NULL,
|
|
`current_quantity` decimal(10,2) NOT NULL,
|
|
`minimum_quantity` decimal(10,2) NOT NULL,
|
|
`maximum_quantity` decimal(10,2) DEFAULT NULL,
|
|
`reorder_quantity` decimal(10,2) DEFAULT NULL,
|
|
`unit_cost` decimal(10,2) DEFAULT NULL,
|
|
`supplier` varchar(255) DEFAULT NULL,
|
|
`supplier_contact` text,
|
|
`storage_location` varchar(255) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`is_tracked` tinyint(1) NOT NULL,
|
|
`barcode` varchar(100) DEFAULT NULL,
|
|
`sku` varchar(100) DEFAULT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_inventory_items_sku` (`sku`),
|
|
UNIQUE KEY `ix_inventory_items_barcode` (`barcode`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_inventory_items_id` (`id`),
|
|
KEY `ix_inventory_items_name` (`name`),
|
|
CONSTRAINT `inventory_items_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `inventory_items`
|
|
--
|
|
|
|
LOCK TABLES `inventory_items` WRITE;
|
|
/*!40000 ALTER TABLE `inventory_items` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `inventory_items` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `inventory_reorder_requests`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `inventory_reorder_requests`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `inventory_reorder_requests` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`item_id` int NOT NULL,
|
|
`requested_quantity` decimal(10,2) NOT NULL,
|
|
`current_quantity` decimal(10,2) NOT NULL,
|
|
`minimum_quantity` decimal(10,2) NOT NULL,
|
|
`status` enum('pending','approved','ordered','received','cancelled') NOT NULL,
|
|
`priority` varchar(20) NOT NULL,
|
|
`requested_by` int NOT NULL,
|
|
`requested_at` datetime NOT NULL,
|
|
`notes` text,
|
|
`approved_by` int DEFAULT NULL,
|
|
`approved_at` datetime DEFAULT NULL,
|
|
`approval_notes` text,
|
|
`order_number` varchar(100) DEFAULT NULL,
|
|
`expected_delivery_date` datetime DEFAULT NULL,
|
|
`received_quantity` decimal(10,2) DEFAULT NULL,
|
|
`received_at` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `requested_by` (`requested_by`),
|
|
KEY `approved_by` (`approved_by`),
|
|
KEY `ix_inventory_reorder_requests_requested_at` (`requested_at`),
|
|
KEY `ix_inventory_reorder_requests_order_number` (`order_number`),
|
|
KEY `ix_inventory_reorder_requests_item_id` (`item_id`),
|
|
KEY `ix_inventory_reorder_requests_id` (`id`),
|
|
CONSTRAINT `inventory_reorder_requests_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `inventory_items` (`id`),
|
|
CONSTRAINT `inventory_reorder_requests_ibfk_2` FOREIGN KEY (`requested_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `inventory_reorder_requests_ibfk_3` FOREIGN KEY (`approved_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `inventory_reorder_requests`
|
|
--
|
|
|
|
LOCK TABLES `inventory_reorder_requests` WRITE;
|
|
/*!40000 ALTER TABLE `inventory_reorder_requests` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `inventory_reorder_requests` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `inventory_task_consumptions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `inventory_task_consumptions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `inventory_task_consumptions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`task_id` int NOT NULL,
|
|
`item_id` int NOT NULL,
|
|
`quantity` decimal(10,2) NOT NULL,
|
|
`notes` text,
|
|
`recorded_by` int DEFAULT NULL,
|
|
`recorded_at` datetime NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `recorded_by` (`recorded_by`),
|
|
KEY `ix_inventory_task_consumptions_recorded_at` (`recorded_at`),
|
|
KEY `ix_inventory_task_consumptions_task_id` (`task_id`),
|
|
KEY `ix_inventory_task_consumptions_id` (`id`),
|
|
KEY `ix_inventory_task_consumptions_item_id` (`item_id`),
|
|
CONSTRAINT `inventory_task_consumptions_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `housekeeping_tasks` (`id`),
|
|
CONSTRAINT `inventory_task_consumptions_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `inventory_items` (`id`),
|
|
CONSTRAINT `inventory_task_consumptions_ibfk_3` FOREIGN KEY (`recorded_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `inventory_task_consumptions`
|
|
--
|
|
|
|
LOCK TABLES `inventory_task_consumptions` WRITE;
|
|
/*!40000 ALTER TABLE `inventory_task_consumptions` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `inventory_task_consumptions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `inventory_transactions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `inventory_transactions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `inventory_transactions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`item_id` int NOT NULL,
|
|
`transaction_type` enum('consumption','adjustment','received','transfer','damaged','returned') NOT NULL,
|
|
`quantity` decimal(10,2) NOT NULL,
|
|
`quantity_before` decimal(10,2) NOT NULL,
|
|
`quantity_after` decimal(10,2) NOT NULL,
|
|
`reference_type` varchar(50) DEFAULT NULL,
|
|
`reference_id` int DEFAULT NULL,
|
|
`notes` text,
|
|
`cost` decimal(10,2) DEFAULT NULL,
|
|
`performed_by` int DEFAULT NULL,
|
|
`transaction_date` datetime NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `performed_by` (`performed_by`),
|
|
KEY `ix_inventory_transactions_reference_id` (`reference_id`),
|
|
KEY `ix_inventory_transactions_transaction_date` (`transaction_date`),
|
|
KEY `ix_inventory_transactions_id` (`id`),
|
|
KEY `ix_inventory_transactions_item_id` (`item_id`),
|
|
CONSTRAINT `inventory_transactions_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `inventory_items` (`id`),
|
|
CONSTRAINT `inventory_transactions_ibfk_2` FOREIGN KEY (`performed_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `inventory_transactions`
|
|
--
|
|
|
|
LOCK TABLES `inventory_transactions` WRITE;
|
|
/*!40000 ALTER TABLE `inventory_transactions` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `inventory_transactions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `invoice_items`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `invoice_items`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `invoice_items` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`invoice_id` int NOT NULL,
|
|
`description` varchar(500) NOT NULL,
|
|
`quantity` decimal(10,2) NOT NULL,
|
|
`unit_price` decimal(10,2) NOT NULL,
|
|
`tax_rate` decimal(5,2) NOT NULL,
|
|
`discount_amount` decimal(10,2) NOT NULL,
|
|
`line_total` decimal(10,2) NOT NULL,
|
|
`room_id` int DEFAULT NULL,
|
|
`service_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `invoice_id` (`invoice_id`),
|
|
KEY `room_id` (`room_id`),
|
|
KEY `service_id` (`service_id`),
|
|
KEY `ix_invoice_items_id` (`id`),
|
|
CONSTRAINT `invoice_items_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`),
|
|
CONSTRAINT `invoice_items_ibfk_2` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `invoice_items_ibfk_3` FOREIGN KEY (`service_id`) REFERENCES `services` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `invoice_items`
|
|
--
|
|
|
|
LOCK TABLES `invoice_items` WRITE;
|
|
/*!40000 ALTER TABLE `invoice_items` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `invoice_items` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `invoices`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `invoices`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `invoices` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`invoice_number` varchar(50) NOT NULL,
|
|
`booking_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`issue_date` datetime NOT NULL,
|
|
`due_date` datetime NOT NULL,
|
|
`paid_date` datetime DEFAULT NULL,
|
|
`subtotal` decimal(10,2) NOT NULL,
|
|
`tax_rate` decimal(5,2) NOT NULL,
|
|
`tax_amount` decimal(10,2) NOT NULL,
|
|
`discount_amount` decimal(10,2) NOT NULL,
|
|
`total_amount` decimal(10,2) NOT NULL,
|
|
`amount_paid` decimal(10,2) NOT NULL,
|
|
`balance_due` decimal(10,2) NOT NULL,
|
|
`status` enum('draft','sent','paid','overdue','cancelled') NOT NULL,
|
|
`is_proforma` tinyint(1) NOT NULL,
|
|
`company_name` varchar(200) DEFAULT NULL,
|
|
`company_address` text,
|
|
`company_phone` varchar(50) DEFAULT NULL,
|
|
`company_email` varchar(100) DEFAULT NULL,
|
|
`company_tax_id` varchar(100) DEFAULT NULL,
|
|
`company_logo_url` varchar(500) DEFAULT NULL,
|
|
`customer_name` varchar(200) NOT NULL,
|
|
`customer_email` varchar(100) NOT NULL,
|
|
`customer_address` text,
|
|
`customer_phone` varchar(50) DEFAULT NULL,
|
|
`customer_tax_id` varchar(100) DEFAULT NULL,
|
|
`notes` text,
|
|
`terms_and_conditions` text,
|
|
`payment_instructions` text,
|
|
`created_by_id` int DEFAULT NULL,
|
|
`updated_by_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_invoices_invoice_number` (`invoice_number`),
|
|
KEY `created_by_id` (`created_by_id`),
|
|
KEY `updated_by_id` (`updated_by_id`),
|
|
KEY `ix_invoices_user_id` (`user_id`),
|
|
KEY `idx_invoice_status` (`status`),
|
|
KEY `ix_invoices_booking_id` (`booking_id`),
|
|
KEY `idx_invoice_user_status` (`user_id`,`status`),
|
|
KEY `idx_invoice_due_date` (`due_date`),
|
|
KEY `ix_invoices_id` (`id`),
|
|
CONSTRAINT `invoices_ibfk_1` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `invoices_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `invoices_ibfk_3` FOREIGN KEY (`created_by_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `invoices_ibfk_4` FOREIGN KEY (`updated_by_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `invoices`
|
|
--
|
|
|
|
LOCK TABLES `invoices` WRITE;
|
|
/*!40000 ALTER TABLE `invoices` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `invoices` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ip_blacklist`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ip_blacklist`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ip_blacklist` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`ip_address` varchar(45) NOT NULL,
|
|
`reason` text,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`blocked_until` datetime DEFAULT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_ip_blacklist_ip_address` (`ip_address`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_ip_blacklist_id` (`id`),
|
|
CONSTRAINT `ip_blacklist_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ip_blacklist`
|
|
--
|
|
|
|
LOCK TABLES `ip_blacklist` WRITE;
|
|
/*!40000 ALTER TABLE `ip_blacklist` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `ip_blacklist` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `ip_whitelist`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `ip_whitelist`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ip_whitelist` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`ip_address` varchar(45) NOT NULL,
|
|
`description` varchar(255) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_ip_whitelist_ip_address` (`ip_address`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_ip_whitelist_id` (`id`),
|
|
CONSTRAINT `ip_whitelist_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `ip_whitelist`
|
|
--
|
|
|
|
LOCK TABLES `ip_whitelist` WRITE;
|
|
/*!40000 ALTER TABLE `ip_whitelist` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `ip_whitelist` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `journal_entries`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `journal_entries`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `journal_entries` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`entry_number` varchar(50) NOT NULL,
|
|
`entry_date` datetime NOT NULL,
|
|
`status` enum('draft','posted','reversed') NOT NULL,
|
|
`fiscal_period_id` int NOT NULL,
|
|
`reference_type` varchar(50) DEFAULT NULL,
|
|
`reference_id` int DEFAULT NULL,
|
|
`description` text NOT NULL,
|
|
`notes` text,
|
|
`created_by` int NOT NULL,
|
|
`posted_by` int DEFAULT NULL,
|
|
`posted_at` datetime DEFAULT NULL,
|
|
`reversed_by` int DEFAULT NULL,
|
|
`reversed_at` datetime DEFAULT NULL,
|
|
`reversal_reason` text,
|
|
`original_entry_id` int DEFAULT NULL,
|
|
`entry_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_journal_entries_entry_number` (`entry_number`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `posted_by` (`posted_by`),
|
|
KEY `reversed_by` (`reversed_by`),
|
|
KEY `original_entry_id` (`original_entry_id`),
|
|
KEY `ix_journal_entries_fiscal_period_id` (`fiscal_period_id`),
|
|
KEY `ix_journal_entries_entry_date` (`entry_date`),
|
|
KEY `ix_journal_entries_created_at` (`created_at`),
|
|
KEY `idx_journal_entry_date` (`entry_date`,`status`),
|
|
KEY `ix_journal_entries_id` (`id`),
|
|
KEY `idx_journal_entry_reference` (`reference_type`,`reference_id`),
|
|
KEY `idx_journal_entry_period` (`fiscal_period_id`,`status`),
|
|
KEY `ix_journal_entries_status` (`status`),
|
|
KEY `ix_journal_entries_reference_id` (`reference_id`),
|
|
CONSTRAINT `journal_entries_ibfk_1` FOREIGN KEY (`fiscal_period_id`) REFERENCES `fiscal_periods` (`id`),
|
|
CONSTRAINT `journal_entries_ibfk_2` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `journal_entries_ibfk_3` FOREIGN KEY (`posted_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `journal_entries_ibfk_4` FOREIGN KEY (`reversed_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `journal_entries_ibfk_5` FOREIGN KEY (`original_entry_id`) REFERENCES `journal_entries` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `journal_entries`
|
|
--
|
|
|
|
LOCK TABLES `journal_entries` WRITE;
|
|
/*!40000 ALTER TABLE `journal_entries` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `journal_entries` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `journal_lines`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `journal_lines`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `journal_lines` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`journal_entry_id` int NOT NULL,
|
|
`line_number` int NOT NULL,
|
|
`account_id` int NOT NULL,
|
|
`debit_amount` decimal(10,2) DEFAULT NULL,
|
|
`credit_amount` decimal(10,2) DEFAULT NULL,
|
|
`description` text,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_journal_lines_journal_entry_id` (`journal_entry_id`),
|
|
KEY `idx_journal_line_entry` (`journal_entry_id`,`line_number`),
|
|
KEY `ix_journal_lines_account_id` (`account_id`),
|
|
KEY `ix_journal_lines_id` (`id`),
|
|
KEY `idx_journal_line_account` (`account_id`,`created_at`),
|
|
CONSTRAINT `journal_lines_ibfk_1` FOREIGN KEY (`journal_entry_id`) REFERENCES `journal_entries` (`id`),
|
|
CONSTRAINT `journal_lines_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES `chart_of_accounts` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `journal_lines`
|
|
--
|
|
|
|
LOCK TABLES `journal_lines` WRITE;
|
|
/*!40000 ALTER TABLE `journal_lines` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `journal_lines` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `loyalty_point_transactions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `loyalty_point_transactions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `loyalty_point_transactions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_loyalty_id` int NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`transaction_type` enum('earned','redeemed','expired','bonus','adjustment') NOT NULL,
|
|
`source` enum('booking','referral','birthday','anniversary','redemption','promotion','manual') NOT NULL,
|
|
`points` int NOT NULL,
|
|
`description` text,
|
|
`expires_at` datetime DEFAULT NULL,
|
|
`reference_number` varchar(100) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_loyalty_point_transactions_transaction_type` (`transaction_type`),
|
|
KEY `ix_loyalty_point_transactions_id` (`id`),
|
|
KEY `ix_loyalty_point_transactions_booking_id` (`booking_id`),
|
|
KEY `ix_loyalty_point_transactions_user_loyalty_id` (`user_loyalty_id`),
|
|
KEY `ix_loyalty_point_transactions_created_at` (`created_at`),
|
|
CONSTRAINT `loyalty_point_transactions_ibfk_1` FOREIGN KEY (`user_loyalty_id`) REFERENCES `user_loyalty` (`id`),
|
|
CONSTRAINT `loyalty_point_transactions_ibfk_2` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `loyalty_point_transactions`
|
|
--
|
|
|
|
LOCK TABLES `loyalty_point_transactions` WRITE;
|
|
/*!40000 ALTER TABLE `loyalty_point_transactions` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `loyalty_point_transactions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `loyalty_rewards`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `loyalty_rewards`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `loyalty_rewards` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(200) NOT NULL,
|
|
`description` text,
|
|
`reward_type` enum('discount','room_upgrade','amenity','cashback','voucher') NOT NULL,
|
|
`points_cost` int NOT NULL,
|
|
`discount_percentage` decimal(5,2) DEFAULT NULL,
|
|
`discount_amount` decimal(10,2) DEFAULT NULL,
|
|
`max_discount_amount` decimal(10,2) DEFAULT NULL,
|
|
`applicable_tier_id` int DEFAULT NULL,
|
|
`min_booking_amount` decimal(10,2) DEFAULT NULL,
|
|
`icon` varchar(255) DEFAULT NULL,
|
|
`image` varchar(255) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`stock_quantity` int DEFAULT NULL,
|
|
`redeemed_count` int NOT NULL,
|
|
`valid_from` datetime DEFAULT NULL,
|
|
`valid_until` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `applicable_tier_id` (`applicable_tier_id`),
|
|
KEY `ix_loyalty_rewards_reward_type` (`reward_type`),
|
|
KEY `ix_loyalty_rewards_id` (`id`),
|
|
CONSTRAINT `loyalty_rewards_ibfk_1` FOREIGN KEY (`applicable_tier_id`) REFERENCES `loyalty_tiers` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `loyalty_rewards`
|
|
--
|
|
|
|
LOCK TABLES `loyalty_rewards` WRITE;
|
|
/*!40000 ALTER TABLE `loyalty_rewards` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `loyalty_rewards` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `loyalty_tiers`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `loyalty_tiers`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `loyalty_tiers` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`level` enum('bronze','silver','gold','platinum') NOT NULL,
|
|
`name` varchar(100) NOT NULL,
|
|
`description` text,
|
|
`min_points` int NOT NULL,
|
|
`points_earn_rate` decimal(5,2) NOT NULL,
|
|
`discount_percentage` decimal(5,2) DEFAULT NULL,
|
|
`benefits` text,
|
|
`icon` varchar(255) DEFAULT NULL,
|
|
`color` varchar(50) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_loyalty_tiers_level` (`level`),
|
|
KEY `ix_loyalty_tiers_id` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `loyalty_tiers`
|
|
--
|
|
|
|
LOCK TABLES `loyalty_tiers` WRITE;
|
|
/*!40000 ALTER TABLE `loyalty_tiers` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `loyalty_tiers` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `newsletter_subscribers`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `newsletter_subscribers`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `newsletter_subscribers` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`email` varchar(255) NOT NULL,
|
|
`user_id` int DEFAULT NULL,
|
|
`name` varchar(255) DEFAULT NULL,
|
|
`subscribed_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_newsletter_subscribers_email` (`email`),
|
|
KEY `ix_newsletter_subscribers_subscribed_at` (`subscribed_at`),
|
|
KEY `ix_newsletter_subscribers_user_id` (`user_id`),
|
|
KEY `ix_newsletter_subscribers_is_active` (`is_active`),
|
|
KEY `ix_newsletter_subscribers_id` (`id`),
|
|
CONSTRAINT `newsletter_subscribers_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `newsletter_subscribers`
|
|
--
|
|
|
|
LOCK TABLES `newsletter_subscribers` WRITE;
|
|
/*!40000 ALTER TABLE `newsletter_subscribers` DISABLE KEYS */;
|
|
INSERT INTO `newsletter_subscribers` VALUES (1,'ryan90@abv.bg',NULL,NULL,'2025-12-05 22:57:53','2025-12-05 22:57:53',1);
|
|
/*!40000 ALTER TABLE `newsletter_subscribers` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `notification_delivery_logs`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `notification_delivery_logs`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `notification_delivery_logs` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`notification_id` int NOT NULL,
|
|
`channel` enum('email','sms','push','whatsapp','in_app') NOT NULL,
|
|
`status` enum('pending','sent','delivered','failed','read') NOT NULL,
|
|
`external_id` varchar(255) DEFAULT NULL,
|
|
`error_message` text,
|
|
`response_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `notification_id` (`notification_id`),
|
|
KEY `ix_notification_delivery_logs_id` (`id`),
|
|
CONSTRAINT `notification_delivery_logs_ibfk_1` FOREIGN KEY (`notification_id`) REFERENCES `notifications` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `notification_delivery_logs`
|
|
--
|
|
|
|
LOCK TABLES `notification_delivery_logs` WRITE;
|
|
/*!40000 ALTER TABLE `notification_delivery_logs` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `notification_delivery_logs` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `notification_preferences`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `notification_preferences`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `notification_preferences` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`email_enabled` tinyint(1) NOT NULL,
|
|
`sms_enabled` tinyint(1) NOT NULL,
|
|
`push_enabled` tinyint(1) NOT NULL,
|
|
`whatsapp_enabled` tinyint(1) NOT NULL,
|
|
`in_app_enabled` tinyint(1) NOT NULL,
|
|
`booking_confirmation_email` tinyint(1) NOT NULL,
|
|
`booking_confirmation_sms` tinyint(1) NOT NULL,
|
|
`payment_receipt_email` tinyint(1) NOT NULL,
|
|
`payment_receipt_sms` tinyint(1) NOT NULL,
|
|
`pre_arrival_reminder_email` tinyint(1) NOT NULL,
|
|
`pre_arrival_reminder_sms` tinyint(1) NOT NULL,
|
|
`check_in_reminder_email` tinyint(1) NOT NULL,
|
|
`check_in_reminder_sms` tinyint(1) NOT NULL,
|
|
`check_out_reminder_email` tinyint(1) NOT NULL,
|
|
`check_out_reminder_sms` tinyint(1) NOT NULL,
|
|
`marketing_campaign_email` tinyint(1) NOT NULL,
|
|
`marketing_campaign_sms` tinyint(1) NOT NULL,
|
|
`loyalty_update_email` tinyint(1) NOT NULL,
|
|
`loyalty_update_sms` tinyint(1) NOT NULL,
|
|
`system_alert_email` tinyint(1) NOT NULL,
|
|
`system_alert_push` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `user_id` (`user_id`),
|
|
KEY `ix_notification_preferences_id` (`id`),
|
|
CONSTRAINT `notification_preferences_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `notification_preferences`
|
|
--
|
|
|
|
LOCK TABLES `notification_preferences` WRITE;
|
|
/*!40000 ALTER TABLE `notification_preferences` DISABLE KEYS */;
|
|
INSERT INTO `notification_preferences` VALUES (1,5,1,1,1,0,1,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,1,'2025-12-09 18:39:43','2025-12-09 18:39:43');
|
|
/*!40000 ALTER TABLE `notification_preferences` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `notification_templates`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `notification_templates`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `notification_templates` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(255) NOT NULL,
|
|
`notification_type` enum('booking_confirmation','payment_receipt','pre_arrival_reminder','check_in_reminder','check_out_reminder','marketing_campaign','loyalty_update','system_alert','custom') NOT NULL,
|
|
`channel` enum('email','sms','push','whatsapp','in_app') NOT NULL,
|
|
`subject` varchar(255) DEFAULT NULL,
|
|
`content` text NOT NULL,
|
|
`variables` json DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_by` int NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_notification_templates_id` (`id`),
|
|
CONSTRAINT `notification_templates_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `notification_templates`
|
|
--
|
|
|
|
LOCK TABLES `notification_templates` WRITE;
|
|
/*!40000 ALTER TABLE `notification_templates` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `notification_templates` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `notifications`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `notifications`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `notifications` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int DEFAULT NULL,
|
|
`notification_type` enum('booking_confirmation','payment_receipt','pre_arrival_reminder','check_in_reminder','check_out_reminder','marketing_campaign','loyalty_update','system_alert','custom') NOT NULL,
|
|
`channel` enum('email','sms','push','whatsapp','in_app') NOT NULL,
|
|
`subject` varchar(255) DEFAULT NULL,
|
|
`content` text NOT NULL,
|
|
`template_id` int DEFAULT NULL,
|
|
`status` enum('pending','sent','delivered','failed','read') NOT NULL,
|
|
`priority` varchar(20) NOT NULL,
|
|
`scheduled_at` datetime DEFAULT NULL,
|
|
`sent_at` datetime DEFAULT NULL,
|
|
`delivered_at` datetime DEFAULT NULL,
|
|
`read_at` datetime DEFAULT NULL,
|
|
`error_message` text,
|
|
`external_id` varchar(255) DEFAULT NULL,
|
|
`meta_data` json DEFAULT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`payment_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `template_id` (`template_id`),
|
|
KEY `booking_id` (`booking_id`),
|
|
KEY `payment_id` (`payment_id`),
|
|
KEY `ix_notifications_id` (`id`),
|
|
CONSTRAINT `notifications_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `notifications_ibfk_2` FOREIGN KEY (`template_id`) REFERENCES `notification_templates` (`id`),
|
|
CONSTRAINT `notifications_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `notifications_ibfk_4` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `notifications`
|
|
--
|
|
|
|
LOCK TABLES `notifications` WRITE;
|
|
/*!40000 ALTER TABLE `notifications` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `notifications` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `oauth_providers`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `oauth_providers`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `oauth_providers` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(50) NOT NULL,
|
|
`display_name` varchar(100) NOT NULL,
|
|
`client_id` varchar(500) NOT NULL,
|
|
`client_secret` varchar(500) NOT NULL,
|
|
`authorization_url` varchar(500) NOT NULL,
|
|
`token_url` varchar(500) NOT NULL,
|
|
`userinfo_url` varchar(500) NOT NULL,
|
|
`scopes` varchar(500) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`is_sso_enabled` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `name` (`name`),
|
|
KEY `ix_oauth_providers_id` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `oauth_providers`
|
|
--
|
|
|
|
LOCK TABLES `oauth_providers` WRITE;
|
|
/*!40000 ALTER TABLE `oauth_providers` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `oauth_providers` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `oauth_tokens`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `oauth_tokens`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `oauth_tokens` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`provider_id` int NOT NULL,
|
|
`provider_user_id` varchar(255) NOT NULL,
|
|
`access_token` text NOT NULL,
|
|
`refresh_token` text,
|
|
`token_type` varchar(50) DEFAULT NULL,
|
|
`expires_at` datetime DEFAULT NULL,
|
|
`scopes` varchar(500) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `provider_id` (`provider_id`),
|
|
KEY `ix_oauth_tokens_user_id` (`user_id`),
|
|
KEY `ix_oauth_tokens_id` (`id`),
|
|
CONSTRAINT `oauth_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `oauth_tokens_ibfk_2` FOREIGN KEY (`provider_id`) REFERENCES `oauth_providers` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `oauth_tokens`
|
|
--
|
|
|
|
LOCK TABLES `oauth_tokens` WRITE;
|
|
/*!40000 ALTER TABLE `oauth_tokens` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `oauth_tokens` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `package_items`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `package_items`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `package_items` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`package_id` int NOT NULL,
|
|
`item_type` enum('room','service','breakfast','activity','amenity','discount') NOT NULL,
|
|
`item_id` int DEFAULT NULL,
|
|
`item_name` varchar(200) NOT NULL,
|
|
`item_description` text,
|
|
`quantity` int NOT NULL,
|
|
`unit` varchar(50) DEFAULT NULL,
|
|
`price` decimal(10,2) DEFAULT NULL,
|
|
`included` tinyint(1) NOT NULL,
|
|
`price_modifier` decimal(5,2) DEFAULT NULL,
|
|
`display_order` int NOT NULL,
|
|
`extra_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_package_items_package_id` (`package_id`),
|
|
KEY `ix_package_items_id` (`id`),
|
|
CONSTRAINT `package_items_ibfk_1` FOREIGN KEY (`package_id`) REFERENCES `packages` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `package_items`
|
|
--
|
|
|
|
LOCK TABLES `package_items` WRITE;
|
|
/*!40000 ALTER TABLE `package_items` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `package_items` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `packages`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `packages`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `packages` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(100) NOT NULL,
|
|
`code` varchar(50) NOT NULL,
|
|
`description` text,
|
|
`status` enum('active','inactive','scheduled','expired') NOT NULL,
|
|
`base_price` decimal(10,2) DEFAULT NULL,
|
|
`price_modifier` decimal(5,2) NOT NULL,
|
|
`discount_percentage` decimal(5,2) DEFAULT NULL,
|
|
`room_type_id` int DEFAULT NULL,
|
|
`min_nights` int DEFAULT NULL,
|
|
`max_nights` int DEFAULT NULL,
|
|
`valid_from` date DEFAULT NULL,
|
|
`valid_to` date DEFAULT NULL,
|
|
`image_url` varchar(500) DEFAULT NULL,
|
|
`highlights` json DEFAULT NULL,
|
|
`terms_conditions` text,
|
|
`extra_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_packages_code` (`code`),
|
|
KEY `room_type_id` (`room_type_id`),
|
|
KEY `ix_packages_name` (`name`),
|
|
KEY `ix_packages_id` (`id`),
|
|
CONSTRAINT `packages_ibfk_1` FOREIGN KEY (`room_type_id`) REFERENCES `room_types` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `packages`
|
|
--
|
|
|
|
LOCK TABLES `packages` WRITE;
|
|
/*!40000 ALTER TABLE `packages` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `packages` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `page_contents`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `page_contents`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `page_contents` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`page_type` varchar(50) NOT NULL,
|
|
`title` varchar(500) DEFAULT NULL,
|
|
`subtitle` varchar(1000) DEFAULT NULL,
|
|
`description` text,
|
|
`content` text,
|
|
`meta_title` varchar(500) DEFAULT NULL,
|
|
`meta_description` text,
|
|
`meta_keywords` varchar(1000) DEFAULT NULL,
|
|
`og_title` varchar(500) DEFAULT NULL,
|
|
`og_description` text,
|
|
`og_image` varchar(1000) DEFAULT NULL,
|
|
`canonical_url` varchar(1000) DEFAULT NULL,
|
|
`contact_info` text,
|
|
`map_url` varchar(1000) DEFAULT NULL,
|
|
`social_links` text,
|
|
`footer_links` text,
|
|
`badges` text,
|
|
`copyright_text` text,
|
|
`hero_title` varchar(500) DEFAULT NULL,
|
|
`hero_subtitle` varchar(1000) DEFAULT NULL,
|
|
`hero_image` varchar(1000) DEFAULT NULL,
|
|
`hero_video_url` text,
|
|
`hero_video_poster` text,
|
|
`story_content` text,
|
|
`values` text,
|
|
`features` text,
|
|
`features_section_title` text,
|
|
`features_section_subtitle` text,
|
|
`about_hero_image` text,
|
|
`mission` text,
|
|
`vision` text,
|
|
`team` text,
|
|
`timeline` text,
|
|
`achievements` text,
|
|
`luxury_section_title` text,
|
|
`luxury_section_subtitle` text,
|
|
`luxury_section_image` text,
|
|
`luxury_features` text,
|
|
`luxury_gallery_section_title` text,
|
|
`luxury_gallery_section_subtitle` text,
|
|
`luxury_gallery` text,
|
|
`luxury_testimonials_section_title` text,
|
|
`luxury_testimonials_section_subtitle` text,
|
|
`luxury_testimonials` text,
|
|
`amenities_section_title` varchar(500) DEFAULT NULL,
|
|
`amenities_section_subtitle` varchar(1000) DEFAULT NULL,
|
|
`amenities` text,
|
|
`testimonials_section_title` varchar(500) DEFAULT NULL,
|
|
`testimonials_section_subtitle` varchar(1000) DEFAULT NULL,
|
|
`testimonials` text,
|
|
`gallery_section_title` varchar(500) DEFAULT NULL,
|
|
`gallery_section_subtitle` varchar(1000) DEFAULT NULL,
|
|
`gallery_images` text,
|
|
`about_preview_title` varchar(500) DEFAULT NULL,
|
|
`about_preview_subtitle` varchar(1000) DEFAULT NULL,
|
|
`about_preview_content` text,
|
|
`about_preview_image` varchar(1000) DEFAULT NULL,
|
|
`stats` text,
|
|
`stats_section_title` text,
|
|
`stats_section_subtitle` text,
|
|
`rooms_section_title` text,
|
|
`rooms_section_subtitle` text,
|
|
`rooms_section_button_text` text,
|
|
`rooms_section_button_link` text,
|
|
`rooms_section_enabled` tinyint(1) DEFAULT NULL,
|
|
`luxury_services_section_title` text,
|
|
`luxury_services_section_subtitle` text,
|
|
`services_section_button_text` text,
|
|
`services_section_button_link` text,
|
|
`services_section_limit` int DEFAULT NULL,
|
|
`luxury_services` text,
|
|
`luxury_experiences_section_title` text,
|
|
`luxury_experiences_section_subtitle` text,
|
|
`luxury_experiences` text,
|
|
`awards_section_title` text,
|
|
`awards_section_subtitle` text,
|
|
`awards` text,
|
|
`cta_title` text,
|
|
`cta_subtitle` text,
|
|
`cta_button_text` text,
|
|
`cta_button_link` text,
|
|
`cta_image` text,
|
|
`partners_section_title` text,
|
|
`partners_section_subtitle` text,
|
|
`partners` text,
|
|
`sections_enabled` text,
|
|
`newsletter_section_title` text,
|
|
`newsletter_section_subtitle` text,
|
|
`newsletter_placeholder` text,
|
|
`newsletter_button_text` text,
|
|
`newsletter_enabled` tinyint(1) DEFAULT NULL,
|
|
`trust_badges_section_title` text,
|
|
`trust_badges_section_subtitle` text,
|
|
`trust_badges` text,
|
|
`trust_badges_enabled` tinyint(1) DEFAULT NULL,
|
|
`promotions_section_title` text,
|
|
`promotions_section_subtitle` text,
|
|
`promotions` text,
|
|
`promotions_enabled` tinyint(1) DEFAULT NULL,
|
|
`blog_section_title` text,
|
|
`blog_section_subtitle` text,
|
|
`blog_posts_limit` int DEFAULT NULL,
|
|
`blog_enabled` tinyint(1) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_page_contents_page_type` (`page_type`),
|
|
KEY `ix_page_contents_id` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `page_contents`
|
|
--
|
|
|
|
LOCK TABLES `page_contents` WRITE;
|
|
/*!40000 ALTER TABLE `page_contents` DISABLE KEYS */;
|
|
INSERT INTO `page_contents` VALUES (1,'home','Luxury Hotel & Resort','Experience Unparalleled Elegance and Comfort','Welcome to our world-class luxury hotel where exceptional service meets breathtaking elegance. Discover a sanctuary of sophistication and comfort.','<p>Experience the pinnacle of luxury hospitality at our award-winning hotel. Nestled in a prime location, we offer world-class amenities, exquisite dining, and unparalleled service that creates unforgettable memories.</p>','Luxury Hotel & Resort | Premium Accommodation & World-Class Service','Discover luxury accommodation with world-class amenities, fine dining, and exceptional service. Book your stay at our award-winning hotel today.','luxury hotel, resort, premium accommodation, fine dining, spa, business hotel, vacation, travel','Luxury Hotel & Resort - Experience Unparalleled Elegance','Welcome to our world-class luxury hotel where exceptional service meets breathtaking elegance.','https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1200&h=630&fit=crop','https://luxuryhotel.com','{\"phone\": \"+1 (555) 123-4567\", \"email\": \"info@luxuryhotel.com\", \"address\": \"123 Luxury Avenue, Premium City, PC 12345\"}',NULL,'{\"facebook\": \"https://facebook.com/luxuryhotel\", \"twitter\": \"https://twitter.com/luxuryhotel\", \"instagram\": \"https://instagram.com/luxuryhotel\", \"linkedin\": \"https://linkedin.com/company/luxuryhotel\", \"youtube\": \"https://youtube.com/luxuryhotel\"}',NULL,'[{\"text\": \"5-Star Rated\", \"icon\": \"star\"}, {\"text\": \"Award Winning\", \"icon\": \"award\"}, {\"text\": \"Eco-Friendly\", \"icon\": \"leaf\"}]',NULL,'Welcome to Luxury Redefined','Where Every Moment Becomes a Memory','https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1920&h=1080&fit=crop',NULL,NULL,'<p>For over three decades, we have been crafting exceptional experiences for our guests. Our commitment to excellence, attention to detail, and passion for hospitality has made us a destination of choice for discerning travelers worldwide.</p>','[{\"icon\": \"heart\", \"title\": \"Excellence\", \"description\": \"We strive for perfection in every detail, ensuring your experience exceeds expectations.\"}, {\"icon\": \"shield\", \"title\": \"Trust\", \"description\": \"Your comfort and security are our top priorities, backed by years of trusted service.\"}, {\"icon\": \"users\", \"title\": \"Hospitality\", \"description\": \"Our dedicated team is committed to making your stay memorable and delightful.\"}, {\"icon\": \"award\", \"title\": \"Quality\", \"description\": \"We maintain the highest standards in service, amenities, and guest satisfaction.\"}]','[{\"icon\": \"wifi\", \"title\": \"Free High-Speed WiFi\", \"description\": \"Stay connected with complimentary high-speed internet throughout the property.\", \"image\": \"https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800&h=600&fit=crop\"}, {\"icon\": \"utensils\", \"title\": \"Fine Dining\", \"description\": \"Savor exquisite cuisine at our award-winning restaurants and bars.\", \"image\": \"https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=800&h=600&fit=crop\"}, {\"icon\": \"spa\", \"title\": \"Luxury Spa\", \"description\": \"Rejuvenate your mind and body at our world-class spa and wellness center.\", \"image\": \"https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=800&h=600&fit=crop\"}, {\"icon\": \"dumbbell\", \"title\": \"Fitness Center\", \"description\": \"Maintain your workout routine in our state-of-the-art fitness facility.\", \"image\": \"https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=800&h=600&fit=crop\"}, {\"icon\": \"swimming-pool\", \"title\": \"Swimming Pool\", \"description\": \"Relax and unwind in our stunning outdoor and indoor pools.\", \"image\": \"https://images.unsplash.com/photo-1571896349842-33c89424de2d?w=800&h=600&fit=crop\"}, {\"icon\": \"car\", \"title\": \"Valet Parking\", \"description\": \"Complimentary valet parking service for all our guests.\", \"image\": \"https://images.unsplash.com/photo-1502877338535-766e1452684a?w=800&h=600&fit=crop\"}]','Why Choose Us','Discover what makes us the perfect choice for your stay',NULL,NULL,NULL,NULL,NULL,NULL,'Luxury Redefined','Experience the epitome of elegance and sophistication','https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1400&h=900&fit=crop','[{\"icon\": \"crown\", \"title\": \"Royal Treatment\", \"description\": \"Experience service fit for royalty with our personalized attention to every detail.\"}, {\"icon\": \"gem\", \"title\": \"Premium Quality\", \"description\": \"Only the finest materials and furnishings grace our elegant spaces.\"}, {\"icon\": \"sparkles\", \"title\": \"Exclusive Access\", \"description\": \"Enjoy exclusive access to private lounges and premium facilities.\"}]','Luxury Gallery','Discover our world of refined elegance','[\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\"]','Guest Experiences','Stories from our valued guests','[{\"name\": \"James Wilson\", \"title\": \"VIP Guest\", \"quote\": \"The level of luxury and attention to detail is simply extraordinary. This is hospitality at its finest.\", \"image\": \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"Maria Garcia\", \"title\": \"Celebrity Guest\", \"quote\": \"Privacy, elegance, and impeccable service. This hotel understands true luxury.\", \"image\": \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=200&h=200&fit=crop&crop=face\"}]','World-Class Amenities','Everything you need for a perfect stay','[{\"icon\": \"wifi\", \"title\": \"Free WiFi\", \"description\": \"High-speed internet access throughout the property\"}, {\"icon\": \"tv\", \"title\": \"Smart TV\", \"description\": \"Streaming services and premium channels in every room\"}, {\"icon\": \"coffee\", \"title\": \"Coffee Maker\", \"description\": \"Premium coffee and tea making facilities\"}, {\"icon\": \"snowflake\", \"title\": \"Climate Control\", \"description\": \"Individual temperature control in all rooms\"}, {\"icon\": \"lock\", \"title\": \"Safe\", \"description\": \"In-room safe for your valuables\"}, {\"icon\": \"shirt\", \"title\": \"Laundry Service\", \"description\": \"Professional laundry and dry cleaning services\"}]','What Our Guests Say','Real experiences from real guests','[{\"name\": \"Sarah Johnson\", \"title\": \"Business Traveler\", \"quote\": \"The service was exceptional and the rooms were immaculate. This hotel exceeded all my expectations.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"Michael Chen\", \"title\": \"Honeymooner\", \"quote\": \"Our honeymoon was made perfect by the attentive staff and beautiful accommodations. Truly unforgettable!\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"Emily Rodriguez\", \"title\": \"Family Vacation\", \"quote\": \"Perfect for families! The kids loved the pool and the staff was so accommodating. We will definitely return.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"David Thompson\", \"title\": \"Luxury Traveler\", \"quote\": \"The attention to detail and level of service is unmatched. This is what luxury hospitality should be.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=200&h=200&fit=crop&crop=face\"}]','Photo Gallery','A glimpse into our world of luxury','[\"https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1571896349842-33c89424de2d?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1542314831-068cd1dbfeeb?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1611892440504-42a792e24d32?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1578683010236-d716f9a3f461?w=1200&h=800&fit=crop\"]','Our Story','A Legacy of Excellence','<p>Since our founding, we have been dedicated to providing exceptional hospitality experiences. Our commitment to excellence, combined with our passion for service, has established us as a leader in the luxury hospitality industry.</p>','https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1200&h=800&fit=crop','[{\"number\": \"50000+\", \"label\": \"Happy Guests\", \"icon\": \"users\"}, {\"number\": \"30+\", \"label\": \"Years of Excellence\", \"icon\": \"calendar\"}, {\"number\": \"150+\", \"label\": \"Awards Won\", \"icon\": \"award\"}, {\"number\": \"98%\", \"label\": \"Guest Satisfaction\", \"icon\": \"star\"}]','Our Achievements','Numbers that speak for themselves','Luxurious Accommodations','Elegant rooms and suites designed for your comfort','View All Rooms','/rooms',1,'Premium Services','Indulge in our exclusive offerings','Explore Services','/services',6,'[{\"icon\": \"concierge\", \"title\": \"24/7 Concierge\", \"description\": \"Our dedicated concierge team is available around the clock to assist with any request.\", \"image\": \"https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=600&h=400&fit=crop\"}, {\"icon\": \"plane\", \"title\": \"Airport Transfer\", \"description\": \"Complimentary airport transfer service for a seamless arrival experience.\", \"image\": \"https://images.unsplash.com/photo-1449824913935-59a10b8d2000?w=600&h=400&fit=crop\"}, {\"icon\": \"briefcase\", \"title\": \"Business Center\", \"description\": \"Fully equipped business center with meeting rooms and conference facilities.\", \"image\": \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=600&h=400&fit=crop\"}, {\"icon\": \"wine\", \"title\": \"Wine Cellar\", \"description\": \"Explore our extensive collection of fine wines from around the world.\", \"image\": \"https://images.unsplash.com/photo-1510812431401-41d2bd2722f3?w=600&h=400&fit=crop\"}, {\"icon\": \"music\", \"title\": \"Live Entertainment\", \"description\": \"Enjoy live music and entertainment in our elegant lounge areas.\", \"image\": \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=600&h=400&fit=crop\"}, {\"icon\": \"gift\", \"title\": \"Gift Shop\", \"description\": \"Browse our curated selection of luxury gifts and souvenirs.\", \"image\": \"https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=600&h=400&fit=crop\"}]','Unique Experiences','Create unforgettable memories with our curated experiences','[{\"icon\": \"sunset\", \"title\": \"Sunset Rooftop Dining\", \"description\": \"Dine under the stars with panoramic city views and gourmet cuisine.\", \"image\": \"https://images.unsplash.com/photo-1517248135467-4c7edcad34c4?w=800&h=600&fit=crop\"}, {\"icon\": \"compass\", \"title\": \"City Tours\", \"description\": \"Explore the city with our guided tours showcasing local culture and landmarks.\", \"image\": \"https://images.unsplash.com/photo-1488646953014-85cb44e25828?w=800&h=600&fit=crop\"}, {\"icon\": \"camera\", \"title\": \"Photography Sessions\", \"description\": \"Capture your special moments with our professional photography services.\", \"image\": \"https://images.unsplash.com/photo-1516035069371-29a1b244cc32?w=800&h=600&fit=crop\"}]','Awards & Recognition','Recognized for excellence in hospitality','[{\"icon\": \"trophy\", \"title\": \"Best Luxury Hotel 2023\", \"description\": \"Awarded by International Hospitality Association\", \"year\": \"2023\", \"image\": \"https://images.unsplash.com/photo-1606761568499-6d2451b23c66?w=400&h=400&fit=crop\"}, {\"icon\": \"star\", \"title\": \"5-Star Rating\", \"description\": \"Consistently rated 5 stars by leading travel organizations\", \"year\": \"2023\", \"image\": \"https://images.unsplash.com/photo-1519389950473-47ba0277781c?w=400&h=400&fit=crop\"}, {\"icon\": \"award\", \"title\": \"Excellence in Service\", \"description\": \"Recognized for outstanding customer service and guest satisfaction\", \"year\": \"2022\", \"image\": \"https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=400&h=400&fit=crop\"}]','Ready to Experience Luxury?','Book your stay today and discover why we are the preferred choice for discerning travelers','Book Now','/book','https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1400&h=700&fit=crop','Our Partners','Trusted by leading brands and organizations','[{\"name\": \"Travel Partner\", \"logo\": \"https://images.unsplash.com/photo-1566073771259-6a8506099945?w=200&h=100&fit=crop\", \"url\": \"#\"}, {\"name\": \"Luxury Brand\", \"logo\": \"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=200&h=100&fit=crop\", \"url\": \"#\"}, {\"name\": \"Hospitality Group\", \"logo\": \"https://images.unsplash.com/photo-1571896349842-33c89424de2d?w=200&h=100&fit=crop\", \"url\": \"#\"}]','{\"hero\": true, \"features\": true, \"about_preview\": true, \"stats\": true, \"rooms\": true, \"services\": true, \"experiences\": true, \"amenities\": true, \"testimonials\": true, \"gallery\": true, \"luxury\": true, \"awards\": true, \"partners\": true, \"cta\": true, \"newsletter\": true, \"trust_badges\": true, \"promotions\": true, \"blog\": true}','Stay Connected','Subscribe to our newsletter for exclusive offers and updates','Enter your email address','Subscribe',1,'Why Trust Us','Your peace of mind is our priority','[{\"icon\": \"shield-check\", \"title\": \"Secure Booking\", \"description\": \"Your data and payments are protected with industry-leading security\"}, {\"icon\": \"clock\", \"title\": \"24/7 Support\", \"description\": \"Round-the-clock customer support for all your needs\"}, {\"icon\": \"undo\", \"title\": \"Flexible Cancellation\", \"description\": \"Free cancellation up to 24 hours before check-in\"}, {\"icon\": \"check-circle\", \"title\": \"Best Price Guarantee\", \"description\": \"We guarantee the best rates for your stay\"}]',1,'Special Offers','Exclusive deals and packages for our guests','[{\"title\": \"Early Bird Special\", \"description\": \"Book 30 days in advance and save 20%\", \"discount\": \"20% OFF\", \"image\": \"https://images.unsplash.com/photo-1566073771259-6a8506099945?w=800&h=600&fit=crop\", \"link\": \"/promotions/early-bird\"}, {\"title\": \"Weekend Getaway\", \"description\": \"Perfect weekend escape with complimentary breakfast\", \"discount\": \"15% OFF\", \"image\": \"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=800&h=600&fit=crop\", \"link\": \"/promotions/weekend\"}, {\"title\": \"Honeymoon Package\", \"description\": \"Romantic getaway with special amenities and services\", \"discount\": \"25% OFF\", \"image\": \"https://images.unsplash.com/photo-1571896349842-33c89424de2d?w=800&h=600&fit=crop\", \"link\": \"/promotions/honeymoon\"}]',1,'Latest News & Updates','Stay informed with our latest articles and hotel news',3,1,1,'2025-12-05 22:00:57','2025-12-05 22:00:57'),(2,'about','About Our Hotel','A Legacy of Luxury and Exceptional Service','Discover our rich heritage spanning three decades. We have been crafting exceptional experiences for discerning travelers worldwide, blending timeless elegance with modern amenities.','<p>For over three decades, we have been at the forefront of luxury hospitality, creating unforgettable experiences for our guests. Our commitment to excellence, attention to detail, and passion for service has made us a destination of choice for travelers seeking the finest in accommodation, dining, and personalized service.</p>','About Us | Luxury Hotel & Resort - Our Story, Mission & Vision','Learn about our luxury hotel\'s rich heritage, mission, vision, and commitment to exceptional hospitality. Discover our story spanning three decades of excellence.','about us, hotel history, luxury hospitality, hotel mission, hotel vision, hotel story, luxury hotel','About Our Luxury Hotel - A Legacy of Excellence','Discover our rich heritage spanning three decades. We have been crafting exceptional experiences for discerning travelers worldwide.','https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1200&h=630&fit=crop','https://luxuryhotel.com/about','{\"phone\": \"+1 (555) 123-4567\", \"email\": \"info@luxuryhotel.com\", \"address\": \"123 Luxury Avenue, Premium City, PC 12345\"}',NULL,'{\"facebook\": \"https://facebook.com/luxuryhotel\", \"twitter\": \"https://twitter.com/luxuryhotel\", \"instagram\": \"https://instagram.com/luxuryhotel\", \"linkedin\": \"https://linkedin.com/company/luxuryhotel\", \"youtube\": \"https://youtube.com/luxuryhotel\"}',NULL,NULL,NULL,'Our Story','Three Decades of Excellence in Luxury Hospitality','https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1920&h=1080&fit=crop',NULL,NULL,'<p>Founded in 1993, our hotel began as a vision to create a sanctuary of luxury and sophistication in the heart of the city. What started as a small boutique property has grown into an internationally recognized destination, consistently ranked among the world\'s finest hotels.</p><p>Over the years, we have welcomed countless guests, from world leaders and celebrities to families celebrating special moments. Each guest has contributed to our story, and we are honored to have been part of their journeys.</p><p>Our commitment to excellence has never wavered. We continuously invest in our facilities, train our staff to the highest standards, and innovate to exceed expectations. Today, we stand as a testament to what is possible when passion meets dedication.</p>','[{\"icon\": \"heart\", \"title\": \"Excellence\", \"description\": \"We strive for perfection in every detail, ensuring your experience exceeds expectations. Excellence is not a goal but a standard we maintain in everything we do.\"}, {\"icon\": \"users\", \"title\": \"Hospitality\", \"description\": \"Our dedicated team provides warm, personalized service to make you feel at home. We believe true hospitality comes from the heart and is reflected in every interaction.\"}, {\"icon\": \"leaf\", \"title\": \"Sustainability\", \"description\": \"Committed to eco-friendly practices for a better future and a delightful stay. We balance luxury with responsibility, ensuring our operations protect the environment for future generations.\"}, {\"icon\": \"award\", \"title\": \"Quality\", \"description\": \"We maintain the highest standards in service, amenities, and guest satisfaction. Quality is embedded in our culture and evident in every aspect of your stay.\"}, {\"icon\": \"handshake\", \"title\": \"Integrity\", \"description\": \"We conduct our business with honesty, transparency, and ethical practices. Trust is the foundation of our relationships with guests, partners, and our community.\"}, {\"icon\": \"lightbulb\", \"title\": \"Innovation\", \"description\": \"We embrace new technologies and creative solutions to enhance your experience. Innovation drives us to continuously improve and stay ahead of industry trends.\"}]',NULL,NULL,NULL,'https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1400&h=900&fit=crop','<p>Our mission is to provide unparalleled luxury experiences that exceed expectations. We are committed to creating memorable moments for every guest through exceptional service, world-class amenities, and attention to every detail. We strive to be the benchmark of excellence in hospitality, where every interaction reflects our dedication to perfection.</p>','<p>Our vision is to be the world\'s most respected luxury hotel brand, recognized for our unwavering commitment to excellence, innovation, and sustainable luxury. We envision a future where our guests feel truly at home, where our team members are proud ambassadors of our values, and where our community benefits from our presence and commitment to responsible hospitality.</p>','[{\"name\": \"Sarah Johnson\", \"position\": \"General Manager\", \"bio\": \"With over 20 years of experience in luxury hospitality, Sarah leads our team with passion and dedication. Her commitment to excellence has been instrumental in our success.\", \"image\": \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&fit=crop&crop=face\", \"social\": {\"linkedin\": \"https://linkedin.com/in/sarahjohnson\", \"twitter\": \"https://twitter.com/sarahjohnson\"}}, {\"name\": \"Michael Chen\", \"position\": \"Executive Chef\", \"bio\": \"Award-winning chef with a passion for creating culinary masterpieces. Michael brings innovative flavors and techniques to our restaurants, delighting guests with every dish.\", \"image\": \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&fit=crop&crop=face\", \"social\": {\"linkedin\": \"https://linkedin.com/in/michaelchen\", \"instagram\": \"https://instagram.com/chefmichael\"}}, {\"name\": \"Emily Rodriguez\", \"position\": \"Director of Guest Services\", \"bio\": \"Emily ensures every guest receives personalized attention and exceptional service. Her warm personality and attention to detail make her a favorite among our guests.\", \"image\": \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&fit=crop&crop=face\", \"social\": {\"linkedin\": \"https://linkedin.com/in/emilyrodriguez\"}}, {\"name\": \"David Thompson\", \"position\": \"Spa Director\", \"bio\": \"With expertise in wellness and holistic healing, David has created a world-class spa experience. His innovative treatments and serene environment provide guests with ultimate relaxation.\", \"image\": \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&fit=crop&crop=face\", \"social\": {\"linkedin\": \"https://linkedin.com/in/davidthompson\"}}]','[{\"year\": \"1993\", \"title\": \"Foundation\", \"description\": \"Hotel founded with a vision to create a luxury destination. Opened with 50 rooms and a commitment to exceptional service.\", \"image\": \"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=800&h=600&fit=crop\"}, {\"year\": \"2000\", \"title\": \"First Expansion\", \"description\": \"Expanded to 150 rooms and added our first fine dining restaurant. Received our first five-star rating from international travel guides.\", \"image\": \"https://images.unsplash.com/photo-1566073771259-6a8506099945?w=800&h=600&fit=crop\"}, {\"year\": \"2008\", \"title\": \"Spa & Wellness Center\", \"description\": \"Opened our world-class spa and wellness center, introducing holistic wellness programs and luxury treatments.\", \"image\": \"https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=800&h=600&fit=crop\"}, {\"year\": \"2015\", \"title\": \"Major Renovation\", \"description\": \"Completed a comprehensive renovation, modernizing all rooms and public spaces while preserving our classic elegance.\", \"image\": \"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=800&h=600&fit=crop\"}, {\"year\": \"2020\", \"title\": \"Sustainability Initiative\", \"description\": \"Launched our comprehensive sustainability program, achieving carbon neutrality and implementing eco-friendly practices throughout the property.\", \"image\": \"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=800&h=600&fit=crop\"}, {\"year\": \"2023\", \"title\": \"Award Recognition\", \"description\": \"Received \\\"Best Luxury Hotel\\\" award and maintained our five-star rating. Celebrated 30 years of excellence in hospitality.\", \"image\": \"https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=800&h=600&fit=crop\"}]','[{\"icon\": \"trophy\", \"title\": \"Best Luxury Hotel 2023\", \"description\": \"Awarded by International Hospitality Association\", \"year\": \"2023\", \"image\": \"https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=400&h=400&fit=crop\"}, {\"icon\": \"star\", \"title\": \"Five-Star Rating\", \"description\": \"Consistently rated five-star by global travel guides\", \"year\": \"2020-2023\", \"image\": \"https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=400&h=400&fit=crop\"}, {\"icon\": \"medal\", \"title\": \"Excellence in Service\", \"description\": \"Recognized for outstanding customer service and guest satisfaction\", \"year\": \"2022\", \"image\": \"https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=400&h=400&fit=crop\"}, {\"icon\": \"leaf\", \"title\": \"Green Hotel Certification\", \"description\": \"Certified for sustainable practices and environmental responsibility\", \"year\": \"2021\", \"image\": \"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=400&h=400&fit=crop\"}, {\"icon\": \"users\", \"title\": \"Guest Choice Award\", \"description\": \"Voted favorite luxury hotel by guests worldwide\", \"year\": \"2023\", \"image\": \"https://images.unsplash.com/photo-1579621970563-ebec7560ff3e?w=400&h=400&fit=crop\"}, {\"icon\": \"award\", \"title\": \"Culinary Excellence\", \"description\": \"Restaurant awarded Michelin star for exceptional cuisine\", \"year\": \"2022\", \"image\": \"https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=400&h=400&fit=crop\"}]',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'What Our Guests Say','Stories from our valued guests','[{\"name\": \"James Wilson\", \"title\": \"VIP Guest\", \"quote\": \"The level of luxury and attention to detail is simply extraordinary. This hotel understands what true hospitality means.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"Sophia Lee\", \"title\": \"Travel Blogger\", \"quote\": \"Every aspect of my stay was flawless. The service, the amenities, the ambiance - truly a five-star experience.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"David Chen\", \"title\": \"CEO, Global Corp\", \"quote\": \"An impeccable hotel with outstanding service. This is what luxury hospitality should be - perfect in every way.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"Maria Garcia\", \"title\": \"Frequent Guest\", \"quote\": \"I\'ve stayed at many luxury hotels, but this one stands out. The personal attention and genuine care for guests is remarkable.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=200&h=200&fit=crop&crop=face\"}]','Our Photo Gallery','A glimpse into our world of luxury','[\"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1571896349842-33c89424de2d?w=1200&h=800&fit=crop\"]',NULL,NULL,NULL,NULL,'[{\"number\": \"50000+\", \"label\": \"Happy Guests\", \"icon\": \"users\"}, {\"number\": \"30+\", \"label\": \"Years of Excellence\", \"icon\": \"calendar\"}, {\"number\": \"150+\", \"label\": \"Awards Won\", \"icon\": \"award\"}, {\"number\": \"98%\", \"label\": \"Guest Satisfaction\", \"icon\": \"star\"}, {\"number\": \"200+\", \"label\": \"Team Members\", \"icon\": \"users\"}, {\"number\": \"115\", \"label\": \"Luxury Rooms\", \"icon\": \"home\"}]','Our Achievements in Numbers','A legacy built on excellence and guest satisfaction',NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 22:44:40','2025-12-05 22:44:40'),(3,'contact','Contact Us','We\'re Here to Help - Get in Touch','Have questions or need assistance? Our friendly team is available 24/7 to help with reservations, inquiries, and special requests. Reach out to us through any of the methods below.','<p>We value your feedback and are here to assist you with any questions or requests. Whether you\'re planning a stay, have a question about our services, or need assistance during your visit, our team is ready to help.</p>','Contact Us | Luxury Hotel & Resort - Get in Touch','Contact our luxury hotel for reservations, inquiries, or assistance. Our friendly team is available 24/7. Phone, email, and location information.','contact us, hotel contact, reservations, customer service, hotel phone number, hotel email','Contact Us - Luxury Hotel & Resort','Have questions or need assistance? Our friendly team is available 24/7 to help with reservations, inquiries, and special requests.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/contact','{\"phone\": \"+1 (555) 123-4567\", \"toll_free\": \"+1 (800) 123-4567\", \"email\": \"info@luxuryhotel.com\", \"reservations_email\": \"reservations@luxuryhotel.com\", \"address\": \"123 Luxury Avenue, Premium City, PC 12345\", \"address_line2\": \"United States\", \"business_hours\": {\"front_desk\": \"24/7\", \"concierge\": \"24/7\", \"reservations\": \"Monday - Sunday: 8:00 AM - 10:00 PM\", \"restaurant\": \"Breakfast: 7:00 AM - 11:00 AM, Lunch: 12:00 PM - 3:00 PM, Dinner: 6:00 PM - 11:00 PM\", \"spa\": \"Monday - Sunday: 9:00 AM - 9:00 PM\"}}','https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3022.184132576!2d-73.98811768459418!3d40.75889597932681!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25855c6480299%3A0x55194ec5a1ae072e!2sTimes%20Square!5e0!3m2!1sen!2sus!4v1234567890123!5m2!1sen!2sus','{\"facebook\": \"https://facebook.com/luxuryhotel\", \"twitter\": \"https://twitter.com/luxuryhotel\", \"instagram\": \"https://instagram.com/luxuryhotel\", \"linkedin\": \"https://linkedin.com/company/luxuryhotel\", \"youtube\": \"https://youtube.com/luxuryhotel\", \"pinterest\": \"https://pinterest.com/luxuryhotel\"}',NULL,NULL,NULL,'Get in Touch','We\'re Here to Help You','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1920&h=1080&fit=crop',NULL,NULL,NULL,NULL,'[{\"icon\": \"phone\", \"title\": \"24/7 Support\", \"description\": \"Our team is available around the clock to assist you with any questions or requests.\"}, {\"icon\": \"clock\", \"title\": \"Quick Response\", \"description\": \"We respond to all inquiries within 24 hours, often much sooner.\"}, {\"icon\": \"users\", \"title\": \"Expert Team\", \"description\": \"Our knowledgeable staff is trained to provide exceptional service and assistance.\"}, {\"icon\": \"globe\", \"title\": \"Multiple Languages\", \"description\": \"We speak your language. Our team is fluent in multiple languages to serve international guests.\"}]','Why Contact Us','We\'re committed to providing exceptional service',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'What Our Guests Say About Our Service','Real feedback from our valued guests','[{\"name\": \"Sarah Johnson\", \"title\": \"Guest\", \"quote\": \"The customer service team was incredibly helpful and responsive. They answered all my questions and made my booking process seamless.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200&h=200&fit=crop&crop=face\"}, {\"name\": \"Michael Chen\", \"title\": \"Business Traveler\", \"quote\": \"The concierge team went above and beyond to help with my business needs. Their attention to detail and professionalism is outstanding.\", \"rating\": 5, \"image\": \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop&crop=face\"}]','Visit Our Hotel','Experience our luxury facilities','[\"https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?w=1200&h=800&fit=crop\"]',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 22:47:37','2025-12-05 22:47:37'),(4,'footer','Luxury Hotel & Resort','Experience Unparalleled Elegance and Comfort','Your premier destination for luxury hospitality. Experience world-class service, exquisite accommodations, and unforgettable moments.','<p>For over three decades, we have been crafting exceptional experiences for discerning travelers worldwide. Our commitment to excellence and attention to detail sets us apart.</p>',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'{\"phone\": \"+1 (555) 123-4567\", \"toll_free\": \"+1 (800) 123-4567\", \"email\": \"info@luxuryhotel.com\", \"reservations_email\": \"reservations@luxuryhotel.com\", \"address\": \"123 Luxury Avenue, Premium City, PC 12345, United States\"}',NULL,'{\"facebook\": \"https://facebook.com/luxuryhotel\", \"twitter\": \"https://twitter.com/luxuryhotel\", \"instagram\": \"https://instagram.com/luxuryhotel\", \"linkedin\": \"https://linkedin.com/company/luxuryhotel\", \"youtube\": \"https://youtube.com/luxuryhotel\", \"pinterest\": \"https://pinterest.com/luxuryhotel\"}','{\"quick_links\": [{\"label\": \"Home\", \"url\": \"/\"}, {\"label\": \"About Us\", \"url\": \"/about\"}, {\"label\": \"Rooms & Suites\", \"url\": \"/rooms\"}, {\"label\": \"Services\", \"url\": \"/services\"}, {\"label\": \"Contact\", \"url\": \"/contact\"}, {\"label\": \"Blog\", \"url\": \"/blog\"}], \"accommodations\": [{\"label\": \"Standard Rooms\", \"url\": \"/rooms?type=standard\"}, {\"label\": \"Deluxe Rooms\", \"url\": \"/rooms?type=deluxe\"}, {\"label\": \"Executive Suites\", \"url\": \"/rooms?type=executive\"}, {\"label\": \"Presidential Suites\", \"url\": \"/rooms?type=presidential\"}, {\"label\": \"Ocean View Rooms\", \"url\": \"/rooms?type=ocean-view\"}, {\"label\": \"Family Rooms\", \"url\": \"/rooms?type=family\"}], \"services\": [{\"label\": \"Spa & Wellness\", \"url\": \"/services?category=spa\"}, {\"label\": \"Fine Dining\", \"url\": \"/services?category=dining\"}, {\"label\": \"Concierge\", \"url\": \"/services?category=concierge\"}, {\"label\": \"Business Center\", \"url\": \"/services?category=business\"}, {\"label\": \"Event Planning\", \"url\": \"/services?category=events\"}, {\"label\": \"Transportation\", \"url\": \"/services?category=transportation\"}], \"information\": [{\"label\": \"About Us\", \"url\": \"/about\"}, {\"label\": \"Our Story\", \"url\": \"/about#story\"}, {\"label\": \"Awards & Recognition\", \"url\": \"/about#awards\"}, {\"label\": \"Careers\", \"url\": \"/careers\"}, {\"label\": \"Press & Media\", \"url\": \"/press\"}, {\"label\": \"Blog\", \"url\": \"/blog\"}], \"support_links\": [{\"label\": \"Contact Us\", \"url\": \"/contact\"}, {\"label\": \"FAQ\", \"url\": \"/faq\"}, {\"label\": \"Booking Help\", \"url\": \"/help\"}, {\"label\": \"Cancellation Policy\", \"url\": \"/cancellation\"}, {\"label\": \"Privacy Policy\", \"url\": \"/privacy\"}, {\"label\": \"Terms & Conditions\", \"url\": \"/terms\"}, {\"label\": \"Refund Policy\", \"url\": \"/refunds\"}, {\"label\": \"Accessibility\", \"url\": \"/accessibility\"}]}','[{\"icon\": \"award\", \"text\": \"5-Star Rated\", \"description\": \"Consistently rated five-star by global travel guides\"}, {\"icon\": \"trophy\", \"text\": \"Award Winning\", \"description\": \"Best Luxury Hotel 2023\"}, {\"icon\": \"shield\", \"text\": \"Secure Booking\", \"description\": \"Your data and payments are protected\"}, {\"icon\": \"star\", \"text\": \"98% Satisfaction\", \"description\": \"Guest satisfaction rating\"}, {\"icon\": \"leaf\", \"text\": \"Eco-Friendly\", \"description\": \"Certified green hotel\"}, {\"icon\": \"check-circle\", \"text\": \"Best Price Guarantee\", \"description\": \"We guarantee the best rates\"}]','© 2025 Luxury Hotel & Resort. All rights reserved.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 22:54:29','2025-12-05 23:02:16'),(5,'privacy','Privacy Policy','Your Privacy Matters to Us','Learn how we collect, use, and protect your personal information. We are committed to maintaining your privacy and ensuring the security of your data.','\n <h2>1. Introduction</h2>\n <p>At Luxury Hotel & Resort, we are committed to protecting your privacy and ensuring the security of your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you visit our website, make a reservation, or use our services.</p>\n \n <h2>2. Information We Collect</h2>\n <h3>2.1 Personal Information</h3>\n <p>We may collect personal information that you provide directly to us, including:</p>\n <ul>\n <li>Name, email address, phone number, and mailing address</li>\n <li>Payment information (credit card details, billing address)</li>\n <li>Reservation details and preferences</li>\n <li>Identification documents (for check-in purposes)</li>\n <li>Special requests or dietary requirements</li>\n </ul>\n \n <h3>2.2 Automatically Collected Information</h3>\n <p>When you visit our website, we may automatically collect certain information, including:</p>\n <ul>\n <li>IP address and browser type</li>\n <li>Device information and operating system</li>\n <li>Pages visited and time spent on our site</li>\n <li>Referring website addresses</li>\n <li>Cookies and similar tracking technologies</li>\n </ul>\n \n <h2>3. How We Use Your Information</h2>\n <p>We use the information we collect for various purposes, including:</p>\n <ul>\n <li>Processing and managing your reservations</li>\n <li>Communicating with you about your stay</li>\n <li>Providing customer service and support</li>\n <li>Sending marketing communications (with your consent)</li>\n <li>Improving our services and website experience</li>\n <li>Complying with legal obligations</li>\n <li>Preventing fraud and ensuring security</li>\n </ul>\n \n <h2>4. Information Sharing and Disclosure</h2>\n <p>We do not sell your personal information. We may share your information in the following circumstances:</p>\n <ul>\n <li><strong>Service Providers:</strong> With trusted third-party service providers who assist us in operating our business</li>\n <li><strong>Legal Requirements:</strong> When required by law or to protect our rights and safety</li>\n <li><strong>Business Transfers:</strong> In connection with a merger, acquisition, or sale of assets</li>\n <li><strong>With Your Consent:</strong> When you have given us explicit permission to share your information</li>\n </ul>\n \n <h2>5. Data Security</h2>\n <p>We implement appropriate technical and organizational measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the Internet is 100% secure, and we cannot guarantee absolute security.</p>\n \n <h2>6. Your Rights</h2>\n <p>Depending on your location, you may have certain rights regarding your personal information, including:</p>\n <ul>\n <li>The right to access your personal information</li>\n <li>The right to correct inaccurate information</li>\n <li>The right to request deletion of your information</li>\n <li>The right to object to processing of your information</li>\n <li>The right to data portability</li>\n <li>The right to withdraw consent</li>\n </ul>\n \n <h2>7. Cookies and Tracking Technologies</h2>\n <p>We use cookies and similar tracking technologies to enhance your browsing experience, analyze website traffic, and personalize content. You can control cookie preferences through your browser settings.</p>\n \n <h2>8. Third-Party Links</h2>\n <p>Our website may contain links to third-party websites. We are not responsible for the privacy practices of these external sites. We encourage you to review their privacy policies.</p>\n \n <h2>9. Children\'s Privacy</h2>\n <p>Our services are not directed to individuals under the age of 18. We do not knowingly collect personal information from children. If you believe we have collected information from a child, please contact us immediately.</p>\n \n <h2>10. International Data Transfers</h2>\n <p>Your information may be transferred to and processed in countries other than your country of residence. We ensure appropriate safeguards are in place to protect your information in accordance with this Privacy Policy.</p>\n \n <h2>11. Changes to This Privacy Policy</h2>\n <p>We may update this Privacy Policy from time to time. We will notify you of any material changes by posting the new policy on this page and updating the \"Last Updated\" date.</p>\n \n <h2>12. Contact Us</h2>\n <p>If you have any questions or concerns about this Privacy Policy or our data practices, please contact us at:</p>\n <p>\n <strong>Email:</strong> privacy@luxuryhotel.com<br>\n <strong>Phone:</strong> +1 (555) 123-4567<br>\n <strong>Address:</strong> 123 Luxury Avenue, Premium City, PC 12345, United States\n </p>\n \n <p><em>Last Updated: December 05, 2025</em></p>\n ','Privacy Policy | Luxury Hotel & Resort','Learn how Luxury Hotel & Resort collects, uses, and protects your personal information. Read our comprehensive privacy policy.','privacy policy, data protection, personal information, GDPR, privacy rights, hotel privacy','Privacy Policy - Luxury Hotel & Resort','Your privacy matters to us. Learn how we protect and use your personal information.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/privacy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 23:02:04','2025-12-05 23:02:04'),(6,'faq','Frequently Asked Questions','Find Answers to Common Questions','Get answers to the most frequently asked questions about our hotel, reservations, services, and policies.','\n <h2>General Questions</h2>\n \n <h3>What are your check-in and check-out times?</h3>\n <p>Check-in time is 3:00 PM, and check-out time is 11:00 AM. Early check-in and late check-out may be available upon request, subject to availability and additional charges.</p>\n \n <h3>Do you offer airport transportation?</h3>\n <p>Yes, we offer airport transfer services. Please contact our concierge team at least 24 hours in advance to arrange transportation. Additional charges may apply.</p>\n \n <h3>Is parking available?</h3>\n <p>Yes, we offer complimentary valet parking for all hotel guests. Self-parking is also available at an additional charge.</p>\n \n <h3>Do you have a fitness center?</h3>\n <p>Yes, our state-of-the-art fitness center is open 24/7 and is complimentary for all hotel guests. We also offer personal training sessions upon request.</p>\n \n <h3>Is Wi-Fi available?</h3>\n <p>Yes, complimentary high-speed Wi-Fi is available throughout the hotel, including all guest rooms and public areas.</p>\n \n <h2>Reservations & Booking</h2>\n \n <h3>How do I make a reservation?</h3>\n <p>You can make a reservation through our website, by calling our reservations team at +1 (555) 123-4567, or by emailing reservations@luxuryhotel.com.</p>\n \n <h3>Can I modify or cancel my reservation?</h3>\n <p>Yes, you can modify or cancel your reservation through our website or by contacting our reservations team. Please refer to our cancellation policy for details on refunds and fees.</p>\n \n <h3>What payment methods do you accept?</h3>\n <p>We accept all major credit cards (Visa, MasterCard, American Express, Discover), debit cards, and bank transfers. Cash payments are also accepted at check-in.</p>\n \n <h3>Do you require a deposit?</h3>\n <p>A credit card is required to guarantee your reservation. A deposit may be required for certain room types or during peak seasons. Details will be provided at the time of booking.</p>\n \n <h3>Can I book for someone else?</h3>\n <p>Yes, you can make a reservation for another guest. Please provide the guest\'s name and contact information at the time of booking, and ensure they have a valid ID for check-in.</p>\n \n <h2>Rooms & Accommodations</h2>\n \n <h3>What amenities are included in the rooms?</h3>\n <p>All rooms include complimentary Wi-Fi, flat-screen TV, minibar, coffee maker, in-room safe, air conditioning, and luxury toiletries. Suites include additional amenities such as separate living areas and premium services.</p>\n \n <h3>Do you have connecting rooms?</h3>\n <p>Yes, we have connecting rooms available. Please request connecting rooms at the time of booking, and we will do our best to accommodate your request based on availability.</p>\n \n <h3>Are rooms accessible for guests with disabilities?</h3>\n <p>Yes, we have accessible rooms designed to meet ADA requirements. Please inform us of any specific accessibility needs when making your reservation.</p>\n \n <h3>Can I request a specific room or floor?</h3>\n <p>Yes, you can request a specific room or floor preference. While we cannot guarantee specific rooms, we will do our best to honor your request based on availability.</p>\n \n <h3>Do you allow pets?</h3>\n <p>We welcome service animals. For pets, please contact us in advance as pet-friendly rooms are limited and additional charges may apply.</p>\n \n <h2>Services & Amenities</h2>\n \n <h3>Do you have a spa?</h3>\n <p>Yes, we have a world-class spa offering a variety of treatments. Advance reservations are recommended. Please contact our spa directly to book treatments.</p>\n \n <h3>Are there restaurants on-site?</h3>\n <p>Yes, we have multiple dining options including fine dining, casual restaurants, and room service available 24/7. Our restaurants feature award-winning cuisine and extensive wine selections.</p>\n \n <h3>Do you offer room service?</h3>\n <p>Yes, room service is available 24 hours a day. Our extensive menu includes breakfast, lunch, dinner, and late-night options.</p>\n \n <h3>Is there a business center?</h3>\n <p>Yes, our business center is equipped with computers, printers, and meeting facilities. It is available 24/7 for all guests.</p>\n \n <h3>Do you have meeting and event facilities?</h3>\n <p>Yes, we have versatile meeting and event spaces suitable for conferences, weddings, and other special occasions. Please contact our events team for more information.</p>\n \n <h2>Policies & Procedures</h2>\n \n <h3>What is your cancellation policy?</h3>\n <p>Cancellation policies vary by rate type and booking. Generally, cancellations made 24-48 hours before check-in are free. Please refer to your booking confirmation for specific cancellation terms.</p>\n \n <h3>What is your smoking policy?</h3>\n <p>Our hotel is 100% non-smoking. Smoking is not permitted in any guest rooms or indoor public areas. Designated outdoor smoking areas are available.</p>\n \n <h3>What is the minimum age to check in?</h3>\n <p>Guests must be at least 18 years old to check in. Guests under 18 must be accompanied by an adult.</p>\n \n <h3>Do you have a lost and found?</h3>\n <p>Yes, we maintain a lost and found department. If you have lost an item, please contact our front desk immediately. We will make every effort to locate and return your belongings.</p>\n \n <h2>Special Requests</h2>\n \n <h3>Can I request early check-in or late check-out?</h3>\n <p>Early check-in and late check-out are subject to availability. Please contact us in advance, and we will do our best to accommodate your request. Additional charges may apply.</p>\n \n <h3>Do you accommodate special dietary requirements?</h3>\n <p>Yes, we can accommodate various dietary requirements including vegetarian, vegan, gluten-free, and allergies. Please inform us of any dietary restrictions when making your reservation or dining reservation.</p>\n \n <h3>Can you help arrange special occasions?</h3>\n <p>Absolutely! Our concierge team can help arrange special occasions such as anniversaries, birthdays, or proposals. Please contact us in advance to discuss your needs.</p>\n \n <h2>Contact & Support</h2>\n \n <h3>How can I contact the hotel?</h3>\n <p>You can reach us by phone at +1 (555) 123-4567, email at info@luxuryhotel.com, or through our website\'s contact form. Our front desk is available 24/7.</p>\n \n <h3>Do you have a loyalty program?</h3>\n <p>Yes, we offer a loyalty program with exclusive benefits including room upgrades, late check-out, and special rates. Membership is free. Please visit our website or contact us for more information.</p>\n \n <h3>Can I leave feedback about my stay?</h3>\n <p>We value your feedback! You can leave a review on our website, through our post-stay survey, or by contacting our guest relations team directly.</p>\n ','FAQ | Frequently Asked Questions - Luxury Hotel & Resort','Find answers to frequently asked questions about reservations, rooms, services, and policies at Luxury Hotel & Resort.','FAQ, frequently asked questions, hotel questions, booking questions, hotel policies, hotel information','FAQ - Luxury Hotel & Resort','Find answers to common questions about our hotel, reservations, and services.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/faq',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 23:02:06','2025-12-05 23:02:06'),(7,'accessibility','Accessibility','Committed to Accessibility for All','We are committed to providing accessible facilities and services for all our guests. Learn about our accessibility features and accommodations.','\n <h2>Our Commitment to Accessibility</h2>\n <p>At Luxury Hotel & Resort, we are committed to ensuring that our facilities and services are accessible to all guests, including those with disabilities. We strive to comply with the Americans with Disabilities Act (ADA) and continuously work to improve accessibility throughout our property.</p>\n \n <h2>Accessible Accommodations</h2>\n <h3>Accessible Guest Rooms</h3>\n <p>We offer several accessible guest rooms designed to meet ADA requirements, featuring:</p>\n <ul>\n <li>Wider doorways (minimum 32 inches)</li>\n <li>Roll-in showers or accessible bathtubs with grab bars</li>\n <li>Lowered light switches and thermostats</li>\n <li>Visual door knockers and phone alerts</li>\n <li>Accessible vanities and bathroom fixtures</li>\n <li>Closed-captioned televisions</li>\n <li>Accessible closet rods and shelves</li>\n </ul>\n \n <h3>Room Features</h3>\n <ul>\n <li>Hearing-impaired kits available upon request</li>\n <li>Visual smoke detectors</li>\n <li>TTY/TDD devices available</li>\n <li>Accessible furniture and seating</li>\n </ul>\n \n <h2>Public Areas & Facilities</h2>\n <h3>Entrance & Lobby</h3>\n <ul>\n <li>Wheelchair-accessible main entrance</li>\n <li>Automatic doors at main entrance</li>\n <li>Accessible front desk with lowered counter</li>\n <li>Accessible seating areas in lobby</li>\n </ul>\n \n <h3>Dining Facilities</h3>\n <ul>\n <li>Accessible dining areas in all restaurants</li>\n <li>Accessible tables and seating</li>\n <li>Menus available in large print or braille upon request</li>\n <li>Staff trained to assist guests with disabilities</li>\n </ul>\n \n <h3>Recreation & Fitness</h3>\n <ul>\n <li>Accessible fitness center with adaptive equipment</li>\n <li>Accessible pool area with pool lift (available upon request)</li>\n <li>Accessible spa facilities</li>\n </ul>\n \n <h3>Meeting & Event Spaces</h3>\n <ul>\n <li>Accessible meeting rooms</li>\n <li>Accessible restrooms in meeting areas</li>\n <li>Assistive listening devices available</li>\n <li>Sign language interpreters available with advance notice</li>\n </ul>\n \n <h2>Parking & Transportation</h2>\n <ul>\n <li>Accessible parking spaces near main entrance</li>\n <li>Van-accessible parking spaces</li>\n <li>Accessible valet service</li>\n <li>Accessible transportation available upon request</li>\n </ul>\n \n <h2>Service Animals</h2>\n <p>Service animals are welcome throughout our property. We comply with all applicable laws regarding service animals and do not charge additional fees for service animals.</p>\n \n <h2>Assistive Devices & Services</h2>\n <h3>Available Upon Request</h3>\n <ul>\n <li>TTY/TDD devices</li>\n <li>Visual door knockers</li>\n <li>Hearing-impaired kits</li>\n <li>Closed-captioned televisions</li>\n <li>Large print menus and materials</li>\n <li>Braille materials (available for select items)</li>\n <li>Assistive listening devices for meetings</li>\n <li>Sign language interpreters (with advance notice)</li>\n </ul>\n \n <h2>Website Accessibility</h2>\n <p>We are committed to making our website accessible to all users. Our website is designed to comply with WCAG 2.1 Level AA standards. If you encounter any accessibility barriers on our website, please contact us so we can address the issue.</p>\n \n <h2>Communication</h2>\n <p>Our staff is trained to communicate effectively with guests who have disabilities. We can provide information in alternative formats upon request, including:</p>\n <ul>\n <li>Large print materials</li>\n <li>Written materials</li>\n <li>Assistance with reading menus or other materials</li>\n </ul>\n \n <h2>Accessibility Concerns & Feedback</h2>\n <p>We welcome feedback from our guests regarding accessibility. If you have any concerns or suggestions for improvement, please contact us:</p>\n <ul>\n <li><strong>Email:</strong> accessibility@luxuryhotel.com</li>\n <li><strong>Phone:</strong> +1 (555) 123-4567</li>\n <li><strong>TTY/TDD:</strong> +1 (555) 123-4568</li>\n <li><strong>Address:</strong> 123 Luxury Avenue, Premium City, PC 12345, United States</li>\n </ul>\n \n <h2>Reservations</h2>\n <p>When making a reservation, please inform us of any specific accessibility needs so we can ensure your room and services meet your requirements. Our reservations team is available 24/7 to assist you.</p>\n <ul>\n <li><strong>Reservations Phone:</strong> +1 (555) 123-4567</li>\n <li><strong>Reservations Email:</strong> reservations@luxuryhotel.com</li>\n </ul>\n \n <h2>Ongoing Improvements</h2>\n <p>We are continuously working to improve accessibility throughout our property. We regularly review and update our facilities and services to better serve all our guests. If you have suggestions for improvements, we would love to hear from you.</p>\n \n <p><em>Last Updated: December 05, 2025</em></p>\n ','Accessibility | Luxury Hotel & Resort - Accessible Facilities','Learn about our accessible facilities and services. We are committed to providing accessible accommodations for all guests.','accessibility, ADA, accessible hotel, wheelchair accessible, disability accommodations, accessible rooms','Accessibility - Luxury Hotel & Resort','Committed to accessibility for all. Learn about our accessible facilities and services.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/accessibility',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 23:02:08','2025-12-05 23:02:08'),(8,'refunds','Refund Policy','Our Refund Policy and Procedures','Learn about our refund policy, including eligibility, processing times, and how to request a refund for your reservation or services.','\n <h2>1. Overview</h2>\n <p>At Luxury Hotel & Resort, we strive to provide exceptional service and ensure your satisfaction. This Refund Policy outlines the terms and conditions under which refunds may be issued for reservations, services, and other transactions.</p>\n \n <h2>2. Reservation Refunds</h2>\n <h3>2.1 Cancellation Refunds</h3>\n <p>Refunds for cancelled reservations are subject to the cancellation policy associated with your booking:</p>\n <ul>\n <li><strong>Flexible Rate:</strong> Full refund if cancelled 24-48 hours before check-in (depending on rate terms)</li>\n <li><strong>Non-Refundable Rate:</strong> No refund for cancellations, but may be eligible for credit or rescheduling (subject to terms)</li>\n <li><strong>Special Packages:</strong> Refund terms vary by package - please refer to your booking confirmation</li>\n </ul>\n \n <h3>2.2 Early Departure</h3>\n <p>If you check out earlier than your scheduled departure date, you may be eligible for a partial refund for unused nights, subject to the terms of your reservation and availability. Early departure refunds are not guaranteed and are evaluated on a case-by-case basis.</p>\n \n <h3>2.3 No-Show</h3>\n <p>If you do not arrive on your scheduled check-in date and have not cancelled your reservation, you will be charged for the first night. No refunds are provided for no-show reservations.</p>\n \n <h2>3. Service Refunds</h2>\n <h3>3.1 Spa Services</h3>\n <p>Spa service refunds or rescheduling:</p>\n <ul>\n <li>Cancellations made 24 hours in advance: Full refund or rescheduling</li>\n <li>Cancellations made less than 24 hours in advance: 50% refund or rescheduling</li>\n <li>No-show: No refund</li>\n </ul>\n \n <h3>3.2 Dining Reservations</h3>\n <p>Dining reservation refunds:</p>\n <ul>\n <li>Cancellations made 4 hours in advance: Full refund</li>\n <li>Cancellations made less than 4 hours in advance: No refund, but may be rescheduled</li>\n <li>Special event dining: Subject to specific event terms</li>\n </ul>\n \n <h3>3.3 Event & Meeting Bookings</h3>\n <p>Refund policies for events and meetings vary based on the size and type of event. Please refer to your event contract for specific refund terms.</p>\n \n <h2>4. Processing Refunds</h2>\n <h3>4.1 Refund Processing Time</h3>\n <p>Once approved, refunds are typically processed within 5-10 business days. The time it takes for the refund to appear in your account depends on your financial institution:</p>\n <ul>\n <li>Credit card refunds: 5-10 business days</li>\n <li>Debit card refunds: 5-10 business days</li>\n <li>Bank transfer refunds: 7-14 business days</li>\n </ul>\n \n <h3>4.2 Refund Method</h3>\n <p>Refunds will be issued to the original payment method used for the transaction. If the original payment method is no longer valid, please contact us to arrange an alternative refund method.</p>\n \n <h2>5. Requesting a Refund</h2>\n <h3>5.1 How to Request</h3>\n <p>To request a refund, please contact us:</p>\n <ul>\n <li><strong>Phone:</strong> +1 (555) 123-4567</li>\n <li><strong>Email:</strong> refunds@luxuryhotel.com</li>\n <li><strong>Online:</strong> Through your booking confirmation or account</li>\n </ul>\n \n <h3>5.2 Required Information</h3>\n <p>When requesting a refund, please provide:</p>\n <ul>\n <li>Reservation or booking confirmation number</li>\n <li>Guest name and contact information</li>\n <li>Reason for refund request</li>\n <li>Original payment method details</li>\n </ul>\n \n <h2>6. Non-Refundable Items</h2>\n <p>The following items and services are generally non-refundable:</p>\n <ul>\n <li>Non-refundable rate bookings (unless otherwise specified)</li>\n <li>Gift cards and vouchers (subject to terms and conditions)</li>\n <li>Third-party bookings (subject to third-party policies)</li>\n <li>Consumed services (meals, spa treatments already received)</li>\n <li>No-show charges</li>\n </ul>\n \n <h2>7. Special Circumstances</h2>\n <h3>7.1 Force Majeure</h3>\n <p>In cases of force majeure events (natural disasters, pandemics, government restrictions, etc.), we will work with you to provide refunds, credits, or rescheduling options. Each situation is evaluated individually.</p>\n \n <h3>7.2 Service Issues</h3>\n <p>If you experience service issues during your stay, please bring them to our attention immediately so we can address them. We may offer partial refunds or credits for significant service failures, evaluated on a case-by-case basis.</p>\n \n <h2>8. Disputes & Appeals</h2>\n <p>If you are not satisfied with a refund decision, you may appeal by contacting our guest relations team. We will review your case and provide a response within 5-7 business days.</p>\n \n <h2>9. Third-Party Bookings</h2>\n <p>If you made your reservation through a third-party booking site (such as Expedia, Booking.com, etc.), refund requests must be processed through that third party according to their policies. We cannot directly process refunds for third-party bookings.</p>\n \n <h2>10. Contact Information</h2>\n <p>For refund inquiries or assistance, please contact us:</p>\n <ul>\n <li><strong>Refunds Department:</strong> refunds@luxuryhotel.com</li>\n <li><strong>Phone:</strong> +1 (555) 123-4567</li>\n <li><strong>Hours:</strong> Monday-Friday, 9:00 AM - 6:00 PM EST</li>\n <li><strong>Address:</strong> 123 Luxury Avenue, Premium City, PC 12345, United States</li>\n </ul>\n \n <h2>11. Policy Updates</h2>\n <p>We reserve the right to update this Refund Policy at any time. Changes will be posted on this page with an updated \"Last Updated\" date. Your continued use of our services after changes are posted constitutes acceptance of the updated policy.</p>\n \n <p><em>Last Updated: December 05, 2025</em></p>\n ','Refund Policy | Luxury Hotel & Resort','Learn about our refund policy, including eligibility, processing times, and how to request refunds for reservations and services.','refund policy, cancellation refund, hotel refund, booking refund, refund request','Refund Policy - Luxury Hotel & Resort','Our refund policy and procedures. Learn how to request refunds for reservations and services.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/refunds',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 23:02:10','2025-12-05 23:02:10'),(9,'terms','Terms of Use','Terms and Conditions for Using Our Services','Please read these terms and conditions carefully before using our website or services. By using our services, you agree to be bound by these terms.','\n <h2>1. Acceptance of Terms</h2>\n <p>By accessing and using the Luxury Hotel & Resort website and services, you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to these terms, please do not use our services.</p>\n \n <h2>2. Use of Website</h2>\n <h3>2.1 Eligibility</h3>\n <p>You must be at least 18 years old to make a reservation or use our services. By using our website, you represent and warrant that you are at least 18 years of age and have the legal capacity to enter into this agreement.</p>\n \n <h3>2.2 User Account</h3>\n <p>If you create an account with us, you are responsible for maintaining the confidentiality of your account and password. You agree to accept responsibility for all activities that occur under your account.</p>\n \n <h3>2.3 Prohibited Uses</h3>\n <p>You agree not to use our website or services:</p>\n <ul>\n <li>For any unlawful purpose or to solicit others to perform unlawful acts</li>\n <li>To violate any international, federal, provincial, or state regulations, rules, laws, or local ordinances</li>\n <li>To infringe upon or violate our intellectual property rights or the intellectual property rights of others</li>\n <li>To harass, abuse, insult, harm, defame, slander, disparage, intimidate, or discriminate</li>\n <li>To submit false or misleading information</li>\n <li>To upload or transmit viruses or any other type of malicious code</li>\n <li>To collect or track the personal information of others</li>\n <li>To spam, phish, pharm, pretext, spider, crawl, or scrape</li>\n <li>For any obscene or immoral purpose</li>\n <li>To interfere with or circumvent the security features of our website</li>\n </ul>\n \n <h2>3. Reservations and Bookings</h2>\n <h3>3.1 Reservation Terms</h3>\n <p>When you make a reservation through our website or by phone, you agree to:</p>\n <ul>\n <li>Provide accurate and complete information</li>\n <li>Use a valid payment method</li>\n <li>Pay all charges incurred by your account</li>\n <li>Comply with our cancellation and refund policies</li>\n </ul>\n \n <h3>3.2 Pricing</h3>\n <p>All prices are displayed in the currency specified and are subject to change without notice. We reserve the right to correct any pricing errors. Taxes and fees may apply and will be disclosed at the time of booking.</p>\n \n <h3>3.3 Payment</h3>\n <p>Payment is required at the time of booking or as specified in your reservation confirmation. We accept major credit cards and other payment methods as indicated on our website.</p>\n \n <h2>4. Cancellation and Refund Policy</h2>\n <p>Cancellation and refund terms vary by rate type and are specified at the time of booking. Please refer to your booking confirmation and our Refund Policy for detailed information.</p>\n \n <h2>5. Intellectual Property</h2>\n <p>The content on our website, including text, graphics, logos, images, and software, is the property of Luxury Hotel & Resort or its content suppliers and is protected by copyright and other intellectual property laws. You may not reproduce, distribute, modify, or create derivative works from any content without our express written permission.</p>\n \n <h2>6. User Content</h2>\n <p>If you submit content to our website (such as reviews, comments, or photos), you grant us a non-exclusive, royalty-free, perpetual, and worldwide license to use, reproduce, modify, and distribute such content for any purpose.</p>\n \n <h2>7. Limitation of Liability</h2>\n <p>To the fullest extent permitted by law, Luxury Hotel & Resort shall not be liable for any indirect, incidental, special, consequential, or punitive damages, or any loss of profits or revenues, whether incurred directly or indirectly, or any loss of data, use, goodwill, or other intangible losses resulting from your use of our services.</p>\n \n <h2>8. Indemnification</h2>\n <p>You agree to indemnify, defend, and hold harmless Luxury Hotel & Resort and its officers, directors, employees, and agents from any claims, damages, losses, liabilities, and expenses (including legal fees) arising out of or relating to your use of our services or violation of these terms.</p>\n \n <h2>9. Disclaimer of Warranties</h2>\n <p>Our services are provided \"as is\" and \"as available\" without warranties of any kind, either express or implied. We do not warrant that our services will be uninterrupted, secure, or error-free.</p>\n \n <h2>10. Third-Party Links</h2>\n <p>Our website may contain links to third-party websites. We are not responsible for the content, privacy policies, or practices of third-party websites. Your use of third-party websites is at your own risk.</p>\n \n <h2>11. Force Majeure</h2>\n <p>We shall not be liable for any failure or delay in performance under these terms which is due to circumstances beyond our reasonable control, including but not limited to natural disasters, war, terrorism, pandemics, government actions, or other force majeure events.</p>\n \n <h2>12. Governing Law</h2>\n <p>These terms shall be governed by and construed in accordance with the laws of the jurisdiction in which our hotel is located, without regard to its conflict of law provisions.</p>\n \n <h2>13. Dispute Resolution</h2>\n <p>Any disputes arising out of or relating to these terms or our services shall be resolved through binding arbitration in accordance with the rules of the applicable arbitration association, except where prohibited by law.</p>\n \n <h2>14. Changes to Terms</h2>\n <p>We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting on our website. Your continued use of our services after changes are posted constitutes acceptance of the modified terms.</p>\n \n <h2>15. Severability</h2>\n <p>If any provision of these terms is found to be unenforceable or invalid, that provision shall be limited or eliminated to the minimum extent necessary, and the remaining provisions shall remain in full force and effect.</p>\n \n <h2>16. Entire Agreement</h2>\n <p>These terms constitute the entire agreement between you and Luxury Hotel & Resort regarding the use of our services and supersede all prior agreements and understandings.</p>\n \n <h2>17. Contact Information</h2>\n <p>If you have any questions about these Terms of Use, please contact us:</p>\n <ul>\n <li><strong>Email:</strong> legal@luxuryhotel.com</li>\n <li><strong>Phone:</strong> +1 (555) 123-4567</li>\n <li><strong>Address:</strong> 123 Luxury Avenue, Premium City, PC 12345, United States</li>\n </ul>\n \n <p><em>Last Updated: December 05, 2025</em></p>\n ','Terms of Use | Luxury Hotel & Resort - Terms and Conditions','Read our terms and conditions for using our website and services. By using our services, you agree to these terms.','terms of use, terms and conditions, user agreement, legal terms, hotel terms','Terms of Use - Luxury Hotel & Resort','Terms and conditions for using our website and services. Please read carefully before using our services.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/terms',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 23:02:12','2025-12-05 23:02:12'),(10,'cancellation','Cancellation Policy','Reservation Cancellation Terms and Conditions','Learn about our cancellation policy, including cancellation deadlines, fees, and procedures for different rate types.','\n <h2>1. Overview</h2>\n <p>This Cancellation Policy outlines the terms and conditions for cancelling reservations at Luxury Hotel & Resort. Cancellation terms vary by rate type and are clearly stated at the time of booking. Please review this policy carefully before making a reservation.</p>\n \n <h2>2. Standard Cancellation Policy</h2>\n <h3>2.1 Flexible Rate</h3>\n <p>For reservations made with our Flexible Rate:</p>\n <ul>\n <li><strong>Free Cancellation:</strong> Cancellations made 24-48 hours before the scheduled check-in date and time are free of charge</li>\n <li><strong>Late Cancellation:</strong> Cancellations made less than 24 hours before check-in will incur a charge equal to one night\'s room rate plus taxes</li>\n <li><strong>No-Show:</strong> Failure to arrive on the scheduled check-in date will result in a charge for the entire reservation</li>\n </ul>\n \n <h3>2.2 Non-Refundable Rate</h3>\n <p>For reservations made with our Non-Refundable Rate:</p>\n <ul>\n <li>These rates offer the best value but are non-refundable</li>\n <li>Cancellations or modifications are not permitted</li>\n <li>In exceptional circumstances, we may offer a credit for future stays (subject to management approval)</li>\n <li>No-shows will be charged the full reservation amount</li>\n </ul>\n \n <h3>2.3 Advance Purchase Rate</h3>\n <p>For Advance Purchase rates:</p>\n <ul>\n <li>Full payment is required at the time of booking</li>\n <li>Cancellations made 7 days or more before check-in: Full refund minus a processing fee</li>\n <li>Cancellations made less than 7 days before check-in: No refund</li>\n </ul>\n \n <h2>3. Special Packages and Promotions</h2>\n <p>Cancellation terms for special packages, promotions, and seasonal offers may differ from standard rates. Specific cancellation terms will be clearly stated at the time of booking and in your confirmation email.</p>\n \n <h2>4. Group Bookings</h2>\n <p>For group bookings (typically 10 or more rooms):</p>\n <ul>\n <li>Cancellation terms are specified in the group booking contract</li>\n <li>Generally, cancellations must be made 30-60 days in advance to avoid penalties</li>\n <li>Individual room cancellations within a group may be subject to different terms</li>\n <li>Please refer to your group booking agreement for specific terms</li>\n </ul>\n \n <h2>5. Event and Meeting Bookings</h2>\n <p>Cancellation policies for event and meeting space bookings are detailed in your event contract. Generally:</p>\n <ul>\n <li>Cancellations made 30+ days in advance: Full refund or credit</li>\n <li>Cancellations made 14-30 days in advance: 50% refund or credit</li>\n <li>Cancellations made less than 14 days in advance: No refund</li>\n </ul>\n \n <h2>6. How to Cancel</h2>\n <h3>6.1 Online Cancellation</h3>\n <p>You can cancel your reservation online through:</p>\n <ul>\n <li>Your booking confirmation email (click \"Manage Reservation\")</li>\n <li>Our website\'s \"Manage Booking\" section</li>\n <li>Your account dashboard (if you have an account)</li>\n </ul>\n \n <h3>6.2 Phone Cancellation</h3>\n <p>Call our reservations team:</p>\n <ul>\n <li><strong>Phone:</strong> +1 (555) 123-4567</li>\n <li><strong>Hours:</strong> 24/7</li>\n <li>Please have your confirmation number ready</li>\n </ul>\n \n <h3>6.3 Email Cancellation</h3>\n <p>Send an email to:</p>\n <ul>\n <li><strong>Email:</strong> reservations@luxuryhotel.com</li>\n <li>Include your confirmation number and guest name</li>\n <li>Allow 24-48 hours for email processing</li>\n </ul>\n \n <h2>7. Cancellation Confirmation</h2>\n <p>Upon successful cancellation, you will receive a cancellation confirmation email. Please retain this confirmation for your records. If you do not receive a confirmation, please contact us to verify that your cancellation was processed.</p>\n \n <h2>8. Refunds</h2>\n <p>Refunds for eligible cancellations will be processed to the original payment method within 5-10 business days. The time it takes for the refund to appear in your account depends on your financial institution. For more information, please refer to our Refund Policy.</p>\n \n <h2>9. Modifications vs. Cancellations</h2>\n <h3>9.1 Date Changes</h3>\n <p>Modifying your reservation dates may be treated as a cancellation and rebooking, subject to availability and current rates. Please contact us to discuss modification options.</p>\n \n <h3>9.2 Room Type Changes</h3>\n <p>Changes to room type are subject to availability and rate differences. Additional charges may apply if the new room type has a higher rate.</p>\n \n <h2>10. Force Majeure</h2>\n <p>In cases of force majeure events (natural disasters, pandemics, government restrictions, travel bans, etc.), we will work with you to provide flexible cancellation options, including:</p>\n <ul>\n <li>Full refunds</li>\n <li>Rescheduling without penalty</li>\n <li>Credit for future stays</li>\n </ul>\n <p>Each situation is evaluated individually. Please contact us as soon as possible if you are affected by a force majeure event.</p>\n \n <h2>11. Third-Party Bookings</h2>\n <p>If you made your reservation through a third-party booking site (such as Expedia, Booking.com, etc.), you must cancel through that third party according to their cancellation policies. We cannot directly cancel third-party bookings.</p>\n \n <h2>12. No-Show Policy</h2>\n <p>If you do not arrive on your scheduled check-in date and have not cancelled your reservation:</p>\n <ul>\n <li>Your reservation will be considered a \"no-show\"</li>\n <li>You will be charged according to your rate\'s cancellation policy</li>\n <li>Remaining nights may be released for resale</li>\n <li>No refunds are provided for no-show reservations</li>\n </ul>\n \n <h2>13. Early Departure</h2>\n <p>If you check out earlier than your scheduled departure date:</p>\n <ul>\n <li>You may be eligible for a partial refund for unused nights</li>\n <li>Early departure refunds are not guaranteed and are evaluated on a case-by-case basis</li>\n <li>Please notify the front desk at least 24 hours before your early departure</li>\n <li>Refunds are subject to the terms of your original reservation</li>\n </ul>\n \n <h2>14. Special Circumstances</h2>\n <p>We understand that unexpected circumstances may arise. In cases of medical emergencies, family emergencies, or other extenuating circumstances, please contact us immediately. We will review your situation and may offer flexible cancellation options on a case-by-case basis.</p>\n \n <h2>15. Contact Information</h2>\n <p>For cancellation requests or questions about our cancellation policy, please contact us:</p>\n <ul>\n <li><strong>Reservations Phone:</strong> +1 (555) 123-4567 (24/7)</li>\n <li><strong>Reservations Email:</strong> reservations@luxuryhotel.com</li>\n <li><strong>Address:</strong> 123 Luxury Avenue, Premium City, PC 12345, United States</li>\n </ul>\n \n <h2>16. Policy Updates</h2>\n <p>We reserve the right to update this Cancellation Policy at any time. Changes will be posted on this page with an updated \"Last Updated\" date. The cancellation terms that apply to your reservation are those in effect at the time you made your booking.</p>\n \n <p><em>Last Updated: December 05, 2025</em></p>\n ','Cancellation Policy | Luxury Hotel & Resort','Learn about our cancellation policy, including cancellation deadlines, fees, and procedures for different rate types.','cancellation policy, hotel cancellation, booking cancellation, cancel reservation, cancellation terms','Cancellation Policy - Luxury Hotel & Resort','Reservation cancellation terms and conditions. Learn how to cancel your booking and applicable fees.','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=630&fit=crop','https://luxuryhotel.com/cancellation',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,1,'2025-12-05 23:02:14','2025-12-05 23:02:14');
|
|
/*!40000 ALTER TABLE `page_contents` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `password_history`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `password_history`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `password_history` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`password_hash` varchar(255) NOT NULL,
|
|
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_password_history_id` (`id`),
|
|
KEY `ix_password_history_user_id` (`user_id`),
|
|
KEY `ix_password_history_created_at` (`created_at`),
|
|
CONSTRAINT `password_history_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `password_history`
|
|
--
|
|
|
|
LOCK TABLES `password_history` WRITE;
|
|
/*!40000 ALTER TABLE `password_history` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `password_history` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `password_reset_tokens`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `password_reset_tokens`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `password_reset_tokens` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`token` varchar(255) NOT NULL,
|
|
`expires_at` datetime NOT NULL,
|
|
`used` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_password_reset_tokens_token` (`token`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_password_reset_tokens_id` (`id`),
|
|
CONSTRAINT `password_reset_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `password_reset_tokens`
|
|
--
|
|
|
|
LOCK TABLES `password_reset_tokens` WRITE;
|
|
/*!40000 ALTER TABLE `password_reset_tokens` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `password_reset_tokens` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `payments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `payments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `payments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`booking_id` int NOT NULL,
|
|
`amount` decimal(10,2) NOT NULL,
|
|
`payment_method` enum('cash','credit_card','debit_card','bank_transfer','e_wallet','stripe','paypal','borica') NOT NULL,
|
|
`payment_type` enum('full','deposit','remaining') NOT NULL,
|
|
`deposit_percentage` int DEFAULT NULL,
|
|
`related_payment_id` int DEFAULT NULL,
|
|
`payment_status` enum('pending','completed','failed','refunded') NOT NULL,
|
|
`transaction_id` varchar(100) DEFAULT NULL,
|
|
`payment_date` datetime DEFAULT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `related_payment_id` (`related_payment_id`),
|
|
KEY `idx_payment_booking_status` (`booking_id`,`payment_status`),
|
|
KEY `ix_payments_id` (`id`),
|
|
KEY `idx_payment_status` (`payment_status`),
|
|
KEY `ix_payments_booking_id` (`booking_id`),
|
|
CONSTRAINT `payments_ibfk_1` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `payments_ibfk_2` FOREIGN KEY (`related_payment_id`) REFERENCES `payments` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `payments`
|
|
--
|
|
|
|
LOCK TABLES `payments` WRITE;
|
|
/*!40000 ALTER TABLE `payments` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `payments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `promotions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `promotions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `promotions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`code` varchar(50) NOT NULL,
|
|
`name` varchar(100) NOT NULL,
|
|
`description` text,
|
|
`discount_type` enum('percentage','fixed_amount') NOT NULL,
|
|
`discount_value` decimal(10,2) NOT NULL,
|
|
`min_booking_amount` decimal(10,2) DEFAULT NULL,
|
|
`max_discount_amount` decimal(10,2) DEFAULT NULL,
|
|
`min_stay_days` int DEFAULT NULL COMMENT 'Minimum number of nights required for booking',
|
|
`max_stay_days` int DEFAULT NULL COMMENT 'Maximum number of nights allowed for booking',
|
|
`advance_booking_days` int DEFAULT NULL COMMENT 'Minimum days in advance the booking must be made',
|
|
`max_advance_booking_days` int DEFAULT NULL COMMENT 'Maximum days in advance the booking can be made',
|
|
`allowed_check_in_days` json DEFAULT NULL COMMENT 'Allowed check-in days of week (0-6, Mon-Sun)',
|
|
`allowed_check_out_days` json DEFAULT NULL COMMENT 'Allowed check-out days of week (0-6, Mon-Sun)',
|
|
`allowed_room_type_ids` json DEFAULT NULL COMMENT 'Allowed room type IDs (JSON array)',
|
|
`excluded_room_type_ids` json DEFAULT NULL COMMENT 'Excluded room type IDs (JSON array)',
|
|
`min_guests` int DEFAULT NULL COMMENT 'Minimum number of guests required',
|
|
`max_guests` int DEFAULT NULL COMMENT 'Maximum number of guests allowed',
|
|
`first_time_customer_only` tinyint(1) NOT NULL COMMENT 'Only for first-time customers',
|
|
`repeat_customer_only` tinyint(1) NOT NULL COMMENT 'Only for returning customers',
|
|
`blackout_dates` json DEFAULT NULL COMMENT 'Blackout dates when promotion doesn''t apply (JSON array of YYYY-MM-DD)',
|
|
`start_date` datetime NOT NULL,
|
|
`end_date` datetime NOT NULL,
|
|
`usage_limit` int DEFAULT NULL,
|
|
`used_count` int NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_promotions_code` (`code`),
|
|
KEY `ix_promotions_id` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `promotions`
|
|
--
|
|
|
|
LOCK TABLES `promotions` WRITE;
|
|
/*!40000 ALTER TABLE `promotions` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `promotions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `rate_plan_rules`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `rate_plan_rules`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `rate_plan_rules` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`rate_plan_id` int NOT NULL,
|
|
`rule_type` varchar(50) NOT NULL,
|
|
`rule_key` varchar(100) NOT NULL,
|
|
`rule_value` json DEFAULT NULL,
|
|
`price_modifier` decimal(5,2) DEFAULT NULL,
|
|
`discount_percentage` decimal(5,2) DEFAULT NULL,
|
|
`fixed_adjustment` decimal(10,2) DEFAULT NULL,
|
|
`priority` int NOT NULL,
|
|
`extra_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_rate_plan_rules_id` (`id`),
|
|
KEY `ix_rate_plan_rules_rate_plan_id` (`rate_plan_id`),
|
|
CONSTRAINT `rate_plan_rules_ibfk_1` FOREIGN KEY (`rate_plan_id`) REFERENCES `rate_plans` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `rate_plan_rules`
|
|
--
|
|
|
|
LOCK TABLES `rate_plan_rules` WRITE;
|
|
/*!40000 ALTER TABLE `rate_plan_rules` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `rate_plan_rules` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `rate_plans`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `rate_plans`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `rate_plans` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(100) NOT NULL,
|
|
`code` varchar(50) NOT NULL,
|
|
`description` text,
|
|
`plan_type` enum('BAR','non_refundable','advance_purchase','corporate','government','military','long_stay','package') NOT NULL,
|
|
`status` enum('active','inactive','scheduled','expired') NOT NULL,
|
|
`base_price_modifier` decimal(5,2) NOT NULL,
|
|
`discount_percentage` decimal(5,2) DEFAULT NULL,
|
|
`fixed_discount` decimal(10,2) DEFAULT NULL,
|
|
`room_type_id` int DEFAULT NULL,
|
|
`min_nights` int DEFAULT NULL,
|
|
`max_nights` int DEFAULT NULL,
|
|
`advance_days_required` int DEFAULT NULL,
|
|
`valid_from` date DEFAULT NULL,
|
|
`valid_to` date DEFAULT NULL,
|
|
`is_refundable` tinyint(1) NOT NULL,
|
|
`requires_deposit` tinyint(1) NOT NULL,
|
|
`deposit_percentage` decimal(5,2) DEFAULT NULL,
|
|
`cancellation_hours` int DEFAULT NULL,
|
|
`corporate_code` varchar(50) DEFAULT NULL,
|
|
`requires_verification` tinyint(1) NOT NULL,
|
|
`verification_type` varchar(50) DEFAULT NULL,
|
|
`long_stay_nights` int DEFAULT NULL,
|
|
`is_package` tinyint(1) NOT NULL,
|
|
`package_id` int DEFAULT NULL,
|
|
`priority` int NOT NULL,
|
|
`extra_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_rate_plans_code` (`code`),
|
|
KEY `room_type_id` (`room_type_id`),
|
|
KEY `package_id` (`package_id`),
|
|
KEY `ix_rate_plans_corporate_code` (`corporate_code`),
|
|
KEY `ix_rate_plans_name` (`name`),
|
|
KEY `ix_rate_plans_id` (`id`),
|
|
CONSTRAINT `rate_plans_ibfk_1` FOREIGN KEY (`room_type_id`) REFERENCES `room_types` (`id`),
|
|
CONSTRAINT `rate_plans_ibfk_2` FOREIGN KEY (`package_id`) REFERENCES `packages` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `rate_plans`
|
|
--
|
|
|
|
LOCK TABLES `rate_plans` WRITE;
|
|
/*!40000 ALTER TABLE `rate_plans` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `rate_plans` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `reconciliation_exceptions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `reconciliation_exceptions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `reconciliation_exceptions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`exception_type` enum('missing_invoice','missing_payment','amount_mismatch','duplicate_payment','orphaned_payment','date_mismatch') NOT NULL,
|
|
`status` enum('open','assigned','in_review','resolved','closed') NOT NULL,
|
|
`severity` varchar(20) NOT NULL,
|
|
`payment_id` int DEFAULT NULL,
|
|
`invoice_id` int DEFAULT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`description` text NOT NULL,
|
|
`expected_amount` decimal(10,2) DEFAULT NULL,
|
|
`actual_amount` decimal(10,2) DEFAULT NULL,
|
|
`difference` decimal(10,2) DEFAULT NULL,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`assigned_at` datetime DEFAULT NULL,
|
|
`resolved_by` int DEFAULT NULL,
|
|
`resolved_at` datetime DEFAULT NULL,
|
|
`resolution_notes` text,
|
|
`comments` json DEFAULT NULL,
|
|
`exception_metadata` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `resolved_by` (`resolved_by`),
|
|
KEY `ix_reconciliation_exceptions_id` (`id`),
|
|
KEY `ix_reconciliation_exceptions_status` (`status`),
|
|
KEY `idx_reconciliation_exception_assigned` (`assigned_to`,`status`),
|
|
KEY `ix_reconciliation_exceptions_invoice_id` (`invoice_id`),
|
|
KEY `idx_reconciliation_exception_type` (`exception_type`,`status`),
|
|
KEY `ix_reconciliation_exceptions_exception_type` (`exception_type`),
|
|
KEY `ix_reconciliation_exceptions_payment_id` (`payment_id`),
|
|
KEY `ix_reconciliation_exceptions_created_at` (`created_at`),
|
|
KEY `idx_reconciliation_exception_status` (`status`,`created_at`),
|
|
KEY `ix_reconciliation_exceptions_booking_id` (`booking_id`),
|
|
KEY `ix_reconciliation_exceptions_assigned_to` (`assigned_to`),
|
|
CONSTRAINT `reconciliation_exceptions_ibfk_1` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`),
|
|
CONSTRAINT `reconciliation_exceptions_ibfk_2` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`),
|
|
CONSTRAINT `reconciliation_exceptions_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `reconciliation_exceptions_ibfk_4` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `reconciliation_exceptions_ibfk_5` FOREIGN KEY (`resolved_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `reconciliation_exceptions`
|
|
--
|
|
|
|
LOCK TABLES `reconciliation_exceptions` WRITE;
|
|
/*!40000 ALTER TABLE `reconciliation_exceptions` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `reconciliation_exceptions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `referrals`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `referrals`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `referrals` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`referrer_id` int NOT NULL,
|
|
`referred_user_id` int NOT NULL,
|
|
`referral_code` varchar(50) NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`status` enum('pending','completed','rewarded') NOT NULL,
|
|
`referrer_points_earned` int NOT NULL,
|
|
`referred_points_earned` int NOT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`rewarded_at` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_referrals_booking_id` (`booking_id`),
|
|
KEY `ix_referrals_id` (`id`),
|
|
KEY `ix_referrals_referred_user_id` (`referred_user_id`),
|
|
KEY `ix_referrals_created_at` (`created_at`),
|
|
KEY `ix_referrals_referrer_id` (`referrer_id`),
|
|
KEY `ix_referrals_status` (`status`),
|
|
KEY `ix_referrals_referral_code` (`referral_code`),
|
|
CONSTRAINT `referrals_ibfk_1` FOREIGN KEY (`referrer_id`) REFERENCES `user_loyalty` (`id`),
|
|
CONSTRAINT `referrals_ibfk_2` FOREIGN KEY (`referred_user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `referrals_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `referrals`
|
|
--
|
|
|
|
LOCK TABLES `referrals` WRITE;
|
|
/*!40000 ALTER TABLE `referrals` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `referrals` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `refresh_tokens`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `refresh_tokens`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `refresh_tokens` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`token` varchar(500) NOT NULL,
|
|
`expires_at` datetime NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_refresh_tokens_token` (`token`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_refresh_tokens_id` (`id`),
|
|
CONSTRAINT `refresh_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `refresh_tokens`
|
|
--
|
|
|
|
LOCK TABLES `refresh_tokens` WRITE;
|
|
/*!40000 ALTER TABLE `refresh_tokens` DISABLE KEYS */;
|
|
INSERT INTO `refresh_tokens` VALUES (23,5,'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUsImV4cCI6MTc2NTcxNjk2MiwiaWF0IjoxNzY1MTEyMTYyLCJpc3MiOiJIb3RlbCBCb29raW5nIEFQSSIsInR5cGUiOiJyZWZyZXNoIn0.Z05WBther5_b5OfK6acdEZq4S_LkXgiJJaDatiHaVQ8','2025-12-08 12:56:03','2025-12-07 12:56:03'),(41,1,'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsImV4cCI6MTc2NTkyODQyNiwiaWF0IjoxNzY1MzIzNjI2LCJpc3MiOiJIb3RlbCBCb29raW5nIEFQSSIsInR5cGUiOiJyZWZyZXNoIn0.ydw6bSnbPOx9p2eIGdTGG7mOXxCUmn_WDZFqSH1Hxko','2025-12-10 23:40:26','2025-12-09 23:40:26');
|
|
/*!40000 ALTER TABLE `refresh_tokens` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `reviews`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `reviews`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `reviews` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`room_id` int NOT NULL,
|
|
`rating` int NOT NULL,
|
|
`comment` text NOT NULL,
|
|
`status` enum('pending','approved','rejected') NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_reviews_user_id` (`user_id`),
|
|
KEY `idx_review_room_status` (`room_id`,`status`),
|
|
KEY `ix_reviews_id` (`id`),
|
|
KEY `idx_review_status` (`status`),
|
|
KEY `ix_reviews_room_id` (`room_id`),
|
|
CONSTRAINT `reviews_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `reviews_ibfk_2` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `reviews`
|
|
--
|
|
|
|
LOCK TABLES `reviews` WRITE;
|
|
/*!40000 ALTER TABLE `reviews` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `reviews` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `reward_redemptions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `reward_redemptions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `reward_redemptions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_loyalty_id` int NOT NULL,
|
|
`reward_id` int NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`points_used` int NOT NULL,
|
|
`status` enum('pending','active','used','expired','cancelled') NOT NULL,
|
|
`code` varchar(50) DEFAULT NULL,
|
|
`expires_at` datetime DEFAULT NULL,
|
|
`used_at` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_reward_redemptions_code` (`code`),
|
|
KEY `ix_reward_redemptions_user_loyalty_id` (`user_loyalty_id`),
|
|
KEY `ix_reward_redemptions_status` (`status`),
|
|
KEY `ix_reward_redemptions_booking_id` (`booking_id`),
|
|
KEY `ix_reward_redemptions_id` (`id`),
|
|
KEY `ix_reward_redemptions_reward_id` (`reward_id`),
|
|
CONSTRAINT `reward_redemptions_ibfk_1` FOREIGN KEY (`user_loyalty_id`) REFERENCES `user_loyalty` (`id`),
|
|
CONSTRAINT `reward_redemptions_ibfk_2` FOREIGN KEY (`reward_id`) REFERENCES `loyalty_rewards` (`id`),
|
|
CONSTRAINT `reward_redemptions_ibfk_3` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `reward_redemptions`
|
|
--
|
|
|
|
LOCK TABLES `reward_redemptions` WRITE;
|
|
/*!40000 ALTER TABLE `reward_redemptions` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `reward_redemptions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `roles`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `roles`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `roles` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(50) NOT NULL,
|
|
`description` varchar(255) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_roles_name` (`name`),
|
|
KEY `ix_roles_id` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `roles`
|
|
--
|
|
|
|
LOCK TABLES `roles` WRITE;
|
|
/*!40000 ALTER TABLE `roles` DISABLE KEYS */;
|
|
INSERT INTO `roles` VALUES (1,'admin','Full system access with all administrative privileges','2025-12-05 22:05:57','2025-12-05 22:05:57'),(2,'staff','Hotel staff with operational access','2025-12-05 22:05:57','2025-12-05 22:05:57'),(3,'customer','Regular customer/guest user','2025-12-05 22:05:57','2025-12-05 22:05:57'),(4,'accountant','Financial management and accounting access','2025-12-05 22:05:57','2025-12-05 22:05:57'),(5,'housekeeping','Housekeeping and room management access','2025-12-05 22:05:57','2025-12-05 22:05:57');
|
|
/*!40000 ALTER TABLE `roles` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `room_attributes`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `room_attributes`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `room_attributes` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`room_id` int NOT NULL,
|
|
`attribute_name` varchar(100) NOT NULL,
|
|
`attribute_value` varchar(255) DEFAULT NULL,
|
|
`attribute_data` json DEFAULT NULL,
|
|
`last_updated` datetime NOT NULL,
|
|
`updated_by` int DEFAULT NULL,
|
|
`notes` text,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `updated_by` (`updated_by`),
|
|
KEY `ix_room_attributes_id` (`id`),
|
|
KEY `ix_room_attributes_room_id` (`room_id`),
|
|
CONSTRAINT `room_attributes_ibfk_1` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `room_attributes_ibfk_2` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `room_attributes`
|
|
--
|
|
|
|
LOCK TABLES `room_attributes` WRITE;
|
|
/*!40000 ALTER TABLE `room_attributes` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `room_attributes` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `room_inspections`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `room_inspections`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `room_inspections` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`room_id` int NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`inspection_type` enum('pre_checkin','post_checkout','routine','maintenance','damage') NOT NULL,
|
|
`status` enum('pending','in_progress','completed','failed','cancelled') NOT NULL,
|
|
`scheduled_at` datetime NOT NULL,
|
|
`started_at` datetime DEFAULT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`inspected_by` int DEFAULT NULL,
|
|
`created_by` int DEFAULT NULL,
|
|
`checklist_template_id` int DEFAULT NULL,
|
|
`checklist_items` json NOT NULL,
|
|
`overall_score` decimal(3,2) DEFAULT NULL,
|
|
`overall_notes` text,
|
|
`issues_found` json DEFAULT NULL,
|
|
`photos` json DEFAULT NULL,
|
|
`requires_followup` tinyint(1) NOT NULL,
|
|
`followup_notes` text,
|
|
`maintenance_request_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `inspected_by` (`inspected_by`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `maintenance_request_id` (`maintenance_request_id`),
|
|
KEY `ix_room_inspections_booking_id` (`booking_id`),
|
|
KEY `ix_room_inspections_scheduled_at` (`scheduled_at`),
|
|
KEY `ix_room_inspections_room_id` (`room_id`),
|
|
KEY `ix_room_inspections_id` (`id`),
|
|
CONSTRAINT `room_inspections_ibfk_1` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `room_inspections_ibfk_2` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `room_inspections_ibfk_3` FOREIGN KEY (`inspected_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `room_inspections_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `room_inspections_ibfk_5` FOREIGN KEY (`maintenance_request_id`) REFERENCES `room_maintenance` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `room_inspections`
|
|
--
|
|
|
|
LOCK TABLES `room_inspections` WRITE;
|
|
/*!40000 ALTER TABLE `room_inspections` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `room_inspections` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `room_maintenance`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `room_maintenance`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `room_maintenance` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`room_id` int NOT NULL,
|
|
`maintenance_type` enum('preventive','corrective','emergency','upgrade','inspection') NOT NULL,
|
|
`status` enum('scheduled','in_progress','completed','cancelled','on_hold') NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`scheduled_start` datetime NOT NULL,
|
|
`scheduled_end` datetime DEFAULT NULL,
|
|
`actual_start` datetime DEFAULT NULL,
|
|
`actual_end` datetime DEFAULT NULL,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`reported_by` int DEFAULT NULL,
|
|
`estimated_cost` decimal(10,2) DEFAULT NULL,
|
|
`actual_cost` decimal(10,2) DEFAULT NULL,
|
|
`blocks_room` tinyint(1) NOT NULL,
|
|
`block_start` datetime DEFAULT NULL,
|
|
`block_end` datetime DEFAULT NULL,
|
|
`priority` varchar(20) NOT NULL,
|
|
`notes` text,
|
|
`completion_notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `assigned_to` (`assigned_to`),
|
|
KEY `reported_by` (`reported_by`),
|
|
KEY `ix_room_maintenance_room_id` (`room_id`),
|
|
KEY `ix_room_maintenance_id` (`id`),
|
|
CONSTRAINT `room_maintenance_ibfk_1` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `room_maintenance_ibfk_2` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `room_maintenance_ibfk_3` FOREIGN KEY (`reported_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `room_maintenance`
|
|
--
|
|
|
|
LOCK TABLES `room_maintenance` WRITE;
|
|
/*!40000 ALTER TABLE `room_maintenance` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `room_maintenance` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `room_types`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `room_types`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `room_types` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(100) NOT NULL,
|
|
`description` text,
|
|
`base_price` decimal(10,2) NOT NULL,
|
|
`capacity` int NOT NULL,
|
|
`amenities` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `name` (`name`),
|
|
KEY `ix_room_types_id` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `room_types`
|
|
--
|
|
|
|
LOCK TABLES `room_types` WRITE;
|
|
/*!40000 ALTER TABLE `room_types` DISABLE KEYS */;
|
|
INSERT INTO `room_types` VALUES (1,'Standard Room','Comfortable and well-appointed standard rooms perfect for business travelers and couples. Features modern amenities and elegant decor.',150.00,2,'\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\", \\\"Coffee Maker\\\", \\\"Hair Dryer\\\"]\"','2025-12-05 22:21:03','2025-12-05 22:26:22'),(2,'Deluxe','Spacious deluxe rooms with enhanced amenities and premium furnishings. Ideal for guests seeking extra comfort and space.',220.00,2,'[\"Free WiFi\", \"Smart TV\", \"Air Conditioning\", \"Premium Mini Bar\", \"Work Desk\", \"In-room Safe\", \"Nespresso Machine\", \"Hair Dryer\", \"Bathrobe & Slippers\", \"City View\"]','2025-12-05 22:21:03','2025-12-05 23:33:36'),(3,'Executive Suite','Luxurious suites with separate living areas, perfect for extended stays or guests who prefer extra space and privacy.',350.00,3,'\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Separate Living Area\\\", \\\"In-room Safe\\\", \\\"Nespresso Machine\\\", \\\"Hair Dryer\\\", \\\"Bathrobe & Slippers\\\", \\\"Panoramic View\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','2025-12-05 22:21:03','2025-12-05 22:26:22'),(4,'Presidential Suite','The ultimate in luxury accommodation. Spacious multi-room suite with premium amenities, private terrace, and personalized butler service.',800.00,4,'\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Separate Living & Dining Areas\\\", \\\"In-room Safe\\\", \\\"Nespresso Machine\\\", \\\"Hair Dryer\\\", \\\"Bathrobe & Slippers\\\", \\\"Panoramic View\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\", \\\"Private Terrace\\\", \\\"Butler Service\\\", \\\"Private Bar\\\", \\\"Jacuzzi\\\"]\"','2025-12-05 22:21:03','2025-12-05 22:26:22'),(5,'Ocean View Room','Stunning ocean view rooms with floor-to-ceiling windows and private balconies. Perfect for romantic getaways and relaxation.',280.00,2,'\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\", \\\"Nespresso Machine\\\", \\\"Hair Dryer\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\", \\\"Private Balcony\\\", \\\"Premium Toiletries\\\"]\"','2025-12-05 22:21:03','2025-12-05 22:26:22'),(6,'Family Room','Spacious family-friendly rooms designed to accommodate families with children. Features extra beds and family amenities.',300.00,4,'\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"In-room Safe\\\", \\\"Coffee Maker\\\", \\\"Hair Dryer\\\", \\\"Family Amenities\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\"]\"','2025-12-05 22:21:03','2025-12-05 22:26:22'),(7,'single','test',100.00,1,'[\"Air Conditioning\", \"Bathrobe & Slippers\", \"Extra Beds\", \"Butler Service\", \"Family Amenities\", \"In-room Safe\", \"Hair Dryer\", \"Coffee Maker\", \"Panoramic View\", \"Premium Mini Bar\", \"lee\"]','2025-12-05 23:36:27','2025-12-05 23:36:27');
|
|
/*!40000 ALTER TABLE `room_types` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `rooms`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `rooms`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `rooms` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`room_type_id` int NOT NULL,
|
|
`room_number` varchar(20) NOT NULL,
|
|
`floor` int NOT NULL,
|
|
`status` enum('available','occupied','maintenance','cleaning') NOT NULL,
|
|
`price` decimal(10,2) NOT NULL,
|
|
`featured` tinyint(1) NOT NULL,
|
|
`capacity` int DEFAULT NULL,
|
|
`room_size` varchar(50) DEFAULT NULL,
|
|
`view` varchar(100) DEFAULT NULL,
|
|
`images` json DEFAULT NULL,
|
|
`amenities` json DEFAULT NULL,
|
|
`description` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_rooms_room_number` (`room_number`),
|
|
KEY `room_type_id` (`room_type_id`),
|
|
KEY `ix_rooms_id` (`id`),
|
|
CONSTRAINT `rooms_ibfk_1` FOREIGN KEY (`room_type_id`) REFERENCES `room_types` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=223 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `rooms`
|
|
--
|
|
|
|
LOCK TABLES `rooms` WRITE;
|
|
/*!40000 ALTER TABLE `rooms` DISABLE KEYS */;
|
|
INSERT INTO `rooms` VALUES (107,1,'101',1,'available',150.00,1,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(108,1,'102',1,'available',150.00,1,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(109,1,'103',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(110,1,'104',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(111,1,'105',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(112,1,'106',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(113,1,'107',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(114,1,'108',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(115,1,'109',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(116,1,'110',1,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 1 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(117,1,'201',2,'available',150.00,1,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(118,1,'202',2,'available',150.00,1,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(119,1,'203',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(120,1,'204',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(121,1,'205',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(122,1,'206',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(123,1,'207',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(124,1,'208',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(125,1,'209',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(126,1,'210',2,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 2 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(127,1,'301',3,'available',150.00,1,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(128,1,'302',3,'available',150.00,1,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(129,1,'303',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(130,1,'304',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(131,1,'305',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(132,1,'306',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(133,1,'307',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(134,1,'308',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(135,1,'309',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(136,1,'310',3,'available',150.00,0,2,'25 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Flat-screen TV\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Work Desk\\\", \\\"In-room Safe\\\"]\"','Comfortable standard room on floor 3 with modern amenities and city view. Perfect for business travelers and couples.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(137,2,'401',4,'available',220.00,1,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(138,2,'402',4,'available',220.00,1,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(139,2,'403',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(140,2,'404',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(141,2,'405',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(142,2,'406',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(143,2,'407',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(144,2,'408',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(145,2,'409',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(146,2,'410',4,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 4 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(147,2,'501',5,'available',220.00,1,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(148,2,'502',5,'available',220.00,1,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(149,2,'503',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(150,2,'504',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(151,2,'505',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(152,2,'506',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(153,2,'507',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(154,2,'508',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(155,2,'509',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(156,2,'510',5,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 5 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(157,2,'601',6,'available',220.00,1,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(158,2,'602',6,'available',220.00,1,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(159,2,'603',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(160,2,'604',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(161,2,'605',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(162,2,'606',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(163,2,'607',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(164,2,'608',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(165,2,'609',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(166,2,'610',6,'available',220.00,0,2,'35 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Work Desk\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\"]\"','Spacious deluxe room on floor 6 with premium amenities and enhanced comfort. Ideal for guests seeking extra space.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(167,3,'701',7,'available',350.00,1,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(168,3,'702',7,'available',350.00,1,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','[\"Free WiFi\", \"Smart TV (Multiple)\", \"Separate Living Area\", \"Premium Mini Bar\", \"Nespresso Machine\", \"Bathrobe & Slippers\", \"Premium Toiletries\", \"Welcome Amenities\", \"Air Conditioning\", \"Butler Service\", \"Extra Beds\", \"Coffee Maker\", \"City View\", \"Family Amenities\", \"Private Terrace\", \"Private Bar\", \"Private Balcony\"]','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 23:45:03'),(169,3,'703',7,'available',350.00,1,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(170,3,'704',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(171,3,'705',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(172,3,'706',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(173,3,'707',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(174,3,'708',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(175,3,'709',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(176,3,'710',7,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 7 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(177,3,'801',8,'available',350.00,1,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(178,3,'802',8,'available',350.00,1,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(179,3,'803',8,'available',350.00,1,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(180,3,'804',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(181,3,'805',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(182,3,'806',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(183,3,'807',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(184,3,'808',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(185,3,'809',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(186,3,'810',8,'available',350.00,0,3,'55 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living Area\\\", \\\"Premium Mini Bar\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Luxurious executive suite on floor 8 with separate living area and panoramic views. Perfect for extended stays.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(187,4,'901',9,'available',800.00,1,4,'120 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living & Dining Areas\\\", \\\"Private Terrace\\\", \\\"Butler Service\\\", \\\"Premium Mini Bar\\\", \\\"Private Bar\\\", \\\"Jacuzzi\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Ultimate luxury in our exclusive presidential suite. Features grand living room, formal dining, private terrace, and personal butler service. Suite 1.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(188,4,'902',9,'available',800.00,1,4,'120 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living & Dining Areas\\\", \\\"Private Terrace\\\", \\\"Butler Service\\\", \\\"Premium Mini Bar\\\", \\\"Private Bar\\\", \\\"Jacuzzi\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Ultimate luxury in our exclusive presidential suite. Features grand living room, formal dining, private terrace, and personal butler service. Suite 2.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(189,4,'903',9,'available',800.00,1,4,'120 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living & Dining Areas\\\", \\\"Private Terrace\\\", \\\"Butler Service\\\", \\\"Premium Mini Bar\\\", \\\"Private Bar\\\", \\\"Jacuzzi\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Ultimate luxury in our exclusive presidential suite. Features grand living room, formal dining, private terrace, and personal butler service. Suite 3.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(190,4,'904',9,'available',800.00,1,4,'120 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living & Dining Areas\\\", \\\"Private Terrace\\\", \\\"Butler Service\\\", \\\"Premium Mini Bar\\\", \\\"Private Bar\\\", \\\"Jacuzzi\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Ultimate luxury in our exclusive presidential suite. Features grand living room, formal dining, private terrace, and personal butler service. Suite 4.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(191,4,'905',9,'available',800.00,1,4,'120 sqm','Panoramic View','\"[\\\"https://images.unsplash.com/photo-1596394516093-501ba68a0ba6?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Separate Living & Dining Areas\\\", \\\"Private Terrace\\\", \\\"Butler Service\\\", \\\"Premium Mini Bar\\\", \\\"Private Bar\\\", \\\"Jacuzzi\\\", \\\"Premium Toiletries\\\", \\\"Welcome Amenities\\\"]\"','Ultimate luxury in our exclusive presidential suite. Features grand living room, formal dining, private terrace, and personal butler service. Suite 5.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(192,5,'1001',10,'available',280.00,1,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','[\"Free WiFi\", \"Smart TV\", \"Air Conditioning\", \"Premium Mini Bar\", \"Private Balcony\", \"Nespresso Machine\", \"Bathrobe & Slippers\", \"Ocean View\", \"City View\", \"Child Safety Features\", \"Flat-screen TV\", \"Private Bar\", \"Private Terrace\"]','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 23:44:28'),(193,5,'1002',10,'available',280.00,1,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(194,5,'1003',10,'available',280.00,1,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(195,5,'1004',10,'available',280.00,1,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(196,5,'1005',10,'available',280.00,1,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(197,5,'1006',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(198,5,'1007',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(199,5,'1008',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(200,5,'1009',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(201,5,'1010',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(202,5,'1011',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(203,5,'1012',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(204,5,'1013',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(205,5,'1014',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(206,5,'1015',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(207,5,'1016',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(208,5,'1017',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(209,5,'1018',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(210,5,'1019',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(211,5,'1020',10,'available',280.00,0,2,'30 sqm','Ocean View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1587925358603-dc217c8a64f8?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV\\\", \\\"Air Conditioning\\\", \\\"Premium Mini Bar\\\", \\\"Private Balcony\\\", \\\"Nespresso Machine\\\", \\\"Bathrobe & Slippers\\\", \\\"Ocean View\\\"]\"','Stunning ocean view room with floor-to-ceiling windows and private balcony. Perfect for romantic getaways and relaxation.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(212,6,'111',1,'available',300.00,1,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(213,6,'112',1,'available',300.00,1,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(214,6,'113',1,'available',300.00,1,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(215,6,'114',1,'available',300.00,0,4,'45 sqm','City View','[\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\", \"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\"]','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-09 23:58:24'),(216,6,'115',1,'available',300.00,0,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(217,6,'116',1,'available',300.00,0,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(218,6,'117',1,'available',300.00,0,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(219,6,'118',1,'available',300.00,0,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(220,6,'119',1,'available',300.00,0,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(221,6,'120',1,'available',300.00,0,4,'45 sqm','City View','\"[\\\"https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1618773928121-c32242e63f39?w=1200&h=800&fit=crop\\\", \\\"https://images.unsplash.com/photo-1590490360182-c33d57733427?w=1200&h=800&fit=crop\\\"]\"','\"[\\\"Free WiFi\\\", \\\"Smart TV (Multiple)\\\", \\\"Air Conditioning\\\", \\\"Mini Bar\\\", \\\"Extra Beds\\\", \\\"Game Console\\\", \\\"Child Safety Features\\\", \\\"Family Amenities\\\"]\"','Spacious family-friendly room on floor 1 designed to accommodate families with children. Features extra beds and family amenities.','2025-12-05 22:21:24','2025-12-05 22:26:22'),(222,7,'20008',1,'available',100.00,0,NULL,NULL,NULL,NULL,'[]',NULL,'2025-12-05 23:38:00','2025-12-05 23:38:13');
|
|
/*!40000 ALTER TABLE `rooms` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `security_events`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `security_events`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `security_events` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int DEFAULT NULL,
|
|
`event_type` enum('login_attempt','login_success','login_failure','logout','password_change','password_reset','account_locked','account_unlocked','permission_denied','suspicious_activity','data_access','data_modification','data_deletion','api_access','ip_blocked','rate_limit_exceeded','oauth_login','sso_login') NOT NULL,
|
|
`severity` enum('low','medium','high','critical') NOT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(500) DEFAULT NULL,
|
|
`request_path` varchar(500) DEFAULT NULL,
|
|
`request_method` varchar(10) DEFAULT NULL,
|
|
`request_id` varchar(36) DEFAULT NULL,
|
|
`description` text,
|
|
`details` json DEFAULT NULL,
|
|
`extra_data` json DEFAULT NULL,
|
|
`resolved` tinyint(1) NOT NULL,
|
|
`resolved_at` datetime DEFAULT NULL,
|
|
`resolved_by` int DEFAULT NULL,
|
|
`resolution_notes` text,
|
|
`country` varchar(100) DEFAULT NULL,
|
|
`city` varchar(100) DEFAULT NULL,
|
|
`latitude` varchar(20) DEFAULT NULL,
|
|
`longitude` varchar(20) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `resolved_by` (`resolved_by`),
|
|
KEY `ix_security_events_event_type` (`event_type`),
|
|
KEY `ix_security_events_request_id` (`request_id`),
|
|
KEY `ix_security_events_user_id` (`user_id`),
|
|
KEY `ix_security_events_severity` (`severity`),
|
|
KEY `ix_security_events_ip_address` (`ip_address`),
|
|
KEY `ix_security_events_created_at` (`created_at`),
|
|
KEY `ix_security_events_id` (`id`),
|
|
CONSTRAINT `security_events_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `security_events_ibfk_2` FOREIGN KEY (`resolved_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `security_events`
|
|
--
|
|
|
|
LOCK TABLES `security_events` WRITE;
|
|
/*!40000 ALTER TABLE `security_events` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `security_events` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `service_booking_items`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `service_booking_items`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `service_booking_items` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`service_booking_id` int NOT NULL,
|
|
`service_id` int NOT NULL,
|
|
`quantity` int NOT NULL,
|
|
`unit_price` decimal(10,2) NOT NULL,
|
|
`total_price` decimal(10,2) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `service_booking_id` (`service_booking_id`),
|
|
KEY `service_id` (`service_id`),
|
|
KEY `ix_service_booking_items_id` (`id`),
|
|
CONSTRAINT `service_booking_items_ibfk_1` FOREIGN KEY (`service_booking_id`) REFERENCES `service_bookings` (`id`),
|
|
CONSTRAINT `service_booking_items_ibfk_2` FOREIGN KEY (`service_id`) REFERENCES `services` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `service_booking_items`
|
|
--
|
|
|
|
LOCK TABLES `service_booking_items` WRITE;
|
|
/*!40000 ALTER TABLE `service_booking_items` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `service_booking_items` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `service_bookings`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `service_bookings`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `service_bookings` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`booking_number` varchar(50) NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`total_amount` decimal(10,2) NOT NULL,
|
|
`status` enum('pending','confirmed','completed','cancelled') NOT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_service_bookings_booking_number` (`booking_number`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_service_bookings_id` (`id`),
|
|
CONSTRAINT `service_bookings_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `service_bookings`
|
|
--
|
|
|
|
LOCK TABLES `service_bookings` WRITE;
|
|
/*!40000 ALTER TABLE `service_bookings` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `service_bookings` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `service_payments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `service_payments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `service_payments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`service_booking_id` int NOT NULL,
|
|
`amount` decimal(10,2) NOT NULL,
|
|
`payment_method` enum('cash','stripe','bank_transfer') NOT NULL,
|
|
`payment_status` enum('pending','completed','failed','refunded') NOT NULL,
|
|
`transaction_id` varchar(100) DEFAULT NULL,
|
|
`payment_date` datetime DEFAULT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `service_booking_id` (`service_booking_id`),
|
|
KEY `ix_service_payments_id` (`id`),
|
|
CONSTRAINT `service_payments_ibfk_1` FOREIGN KEY (`service_booking_id`) REFERENCES `service_bookings` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `service_payments`
|
|
--
|
|
|
|
LOCK TABLES `service_payments` WRITE;
|
|
/*!40000 ALTER TABLE `service_payments` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `service_payments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `service_usages`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `service_usages`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `service_usages` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`booking_id` int NOT NULL,
|
|
`service_id` int NOT NULL,
|
|
`quantity` int NOT NULL,
|
|
`unit_price` decimal(10,2) NOT NULL,
|
|
`total_price` decimal(10,2) NOT NULL,
|
|
`usage_date` datetime NOT NULL,
|
|
`notes` text,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `booking_id` (`booking_id`),
|
|
KEY `service_id` (`service_id`),
|
|
KEY `ix_service_usages_id` (`id`),
|
|
CONSTRAINT `service_usages_ibfk_1` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `service_usages_ibfk_2` FOREIGN KEY (`service_id`) REFERENCES `services` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `service_usages`
|
|
--
|
|
|
|
LOCK TABLES `service_usages` WRITE;
|
|
/*!40000 ALTER TABLE `service_usages` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `service_usages` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `services`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `services`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `services` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(100) NOT NULL,
|
|
`description` text,
|
|
`price` decimal(10,2) NOT NULL,
|
|
`category` varchar(50) DEFAULT NULL,
|
|
`slug` varchar(200) DEFAULT NULL,
|
|
`image` varchar(1000) DEFAULT NULL,
|
|
`content` text,
|
|
`sections` text,
|
|
`meta_title` varchar(500) DEFAULT NULL,
|
|
`meta_description` text,
|
|
`meta_keywords` varchar(1000) DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_services_slug` (`slug`),
|
|
KEY `ix_services_id` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `services`
|
|
--
|
|
|
|
LOCK TABLES `services` WRITE;
|
|
/*!40000 ALTER TABLE `services` DISABLE KEYS */;
|
|
INSERT INTO `services` VALUES (1,'Luxury Spa Treatment','Indulge in our signature spa treatments designed to rejuvenate your mind, body, and soul. Experience ultimate relaxation with our expert therapists.',150.00,'Spa & Wellness','luxury-spa-treatment','https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=1200&h=800&fit=crop','<p>Our luxury spa treatments combine traditional techniques with modern wellness practices. Choose from a variety of massages, facials, and body treatments tailored to your needs.</p>','[{\"type\": \"features\", \"title\": \"Treatment Options\", \"content\": \"Swedish Massage, Deep Tissue, Hot Stone, Aromatherapy, Facial Treatments\", \"alignment\": \"left\", \"is_visible\": true}]','Luxury Spa Treatment | Hotel Spa Services','Experience ultimate relaxation with our luxury spa treatments. Expert therapists, premium products, and serene environment.','spa, massage, wellness, relaxation, hotel spa, luxury treatment',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(2,'Couples Massage','Share a relaxing experience with your partner in our private couples massage room. Perfect for romantic getaways and special occasions.',280.00,'Spa & Wellness','couples-massage','https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=1200&h=800&fit=crop','<p>Enjoy a synchronized massage experience with your loved one in our beautifully appointed couples suite. Includes champagne and chocolate-covered strawberries.</p>',NULL,'Couples Massage | Romantic Spa Experience','Share a romantic spa experience with couples massage. Private suite, synchronized treatments, and special amenities included.','couples massage, romantic spa, couples treatment, hotel spa',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(3,'Facial Treatment','Rejuvenate your skin with our professional facial treatments using premium skincare products. Customized for your skin type.',120.00,'Spa & Wellness','facial-treatment','https://images.unsplash.com/photo-1570172619644-dfd03ed5d881?w=1200&h=800&fit=crop','<p>Our expert estheticians provide personalized facial treatments to address your specific skin concerns. Includes deep cleansing, exfoliation, and hydration.</p>',NULL,'Facial Treatment | Professional Skincare Services','Professional facial treatments with premium products. Customized for your skin type by expert estheticians.','facial, skincare, spa facial, beauty treatment',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(4,'Fine Dining Experience','Savor exquisite cuisine at our award-winning restaurant. Chef-prepared meals with the finest ingredients and impeccable service.',200.00,'Dining','fine-dining-experience','https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=1200&h=800&fit=crop','<p>Experience culinary excellence at our Michelin-starred restaurant. Our talented chefs create innovative dishes using locally sourced, seasonal ingredients.</p>','[{\"type\": \"menu\", \"title\": \"Signature Dishes\", \"content\": \"Truffle Risotto, Wagyu Beef, Lobster Thermidor, Seasonal Tasting Menu\", \"alignment\": \"center\", \"is_visible\": true}]','Fine Dining Restaurant | Award-Winning Cuisine','Experience award-winning fine dining with chef-prepared meals, premium ingredients, and exceptional service.','fine dining, restaurant, gourmet, Michelin, hotel restaurant',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(5,'Room Service','Enjoy delicious meals in the comfort of your room. Available 24/7 with an extensive menu of international and local cuisine.',50.00,'Dining','room-service','https://images.unsplash.com/photo-1551632811-5617803d319f?w=1200&h=800&fit=crop','<p>Our room service menu features breakfast, lunch, dinner, and late-night options. All dishes are prepared fresh and delivered to your room with professional service.</p>',NULL,'24/7 Room Service | In-Room Dining','Enjoy delicious meals in your room with our 24/7 room service. Extensive menu, fresh preparation, and professional delivery.','room service, in-room dining, hotel food delivery',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(6,'Private Chef Service','Experience gourmet dining in the privacy of your suite with a personal chef. Customized menus and intimate dining experience.',500.00,'Dining','private-chef-service','https://images.unsplash.com/photo-1577219491135-ce391730fd43?w=1200&h=800&fit=crop','<p>Our private chef service brings fine dining directly to your suite. Work with our chef to create a customized menu for your special occasion.</p>',NULL,'Private Chef Service | In-Suite Dining','Enjoy a private chef experience in your suite. Customized menus, intimate dining, and exceptional culinary expertise.','private chef, in-suite dining, personal chef, luxury dining',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(7,'24/7 Concierge Service','Our dedicated concierge team is available around the clock to assist with restaurant reservations, event tickets, transportation, and more.',0.00,'Concierge','concierge-service','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=800&fit=crop','<p>From restaurant reservations to exclusive experiences, our concierge team ensures your stay is seamless and memorable. Available 24/7 for all your needs.</p>','[{\"type\": \"services\", \"title\": \"Concierge Services\", \"content\": \"Restaurant Reservations, Event Tickets, Transportation, City Tours, Special Occasions\", \"alignment\": \"left\", \"is_visible\": true}]','24/7 Concierge Service | Personal Assistance','Round-the-clock concierge service for restaurant reservations, tickets, transportation, and personalized assistance.','concierge, personal assistant, hotel concierge, guest services',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(8,'Airport Transfer','Enjoy seamless airport transfers in our luxury vehicles. Professional drivers and comfortable transportation to and from the airport.',80.00,'Transportation','airport-transfer','https://images.unsplash.com/photo-1583485088076-494435075764?w=1200&h=800&fit=crop','<p>Start and end your journey in comfort with our premium airport transfer service. Available for all major airports with luxury vehicles and professional drivers.</p>',NULL,'Airport Transfer Service | Luxury Transportation','Premium airport transfer service with luxury vehicles and professional drivers. Seamless transportation to and from the airport.','airport transfer, transportation, airport shuttle, luxury car service',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(9,'City Tour Service','Discover the city with our guided tour service. Customized itineraries and expert local guides to show you the best attractions.',150.00,'Concierge','city-tour-service','https://images.unsplash.com/photo-1488646953014-85cb44e25828?w=1200&h=800&fit=crop','<p>Explore the city with our professional tour guides. Choose from standard tours or customize your itinerary to visit your preferred attractions.</p>',NULL,'City Tour Service | Guided Tours','Discover the city with our guided tour service. Expert guides, customized itineraries, and memorable experiences.','city tour, guided tour, sightseeing, local attractions',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(10,'Business Center Access','Access our fully equipped business center with computers, printers, meeting rooms, and high-speed internet. Perfect for business travelers.',25.00,'Business','business-center-access','https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&h=800&fit=crop','<p>Our business center provides all the facilities you need for productive work. Includes private workstations, printing services, and meeting spaces.</p>',NULL,'Business Center | Professional Workspace','Fully equipped business center with computers, printers, meeting rooms, and high-speed internet for business travelers.','business center, workspace, meeting room, business facilities',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(11,'Meeting Room Rental','Host your business meetings in our state-of-the-art meeting rooms. Equipped with modern technology and professional amenities.',300.00,'Business','meeting-room-rental','https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&h=800&fit=crop','<p>Our meeting rooms accommodate various group sizes and are equipped with AV equipment, high-speed internet, and catering options.</p>',NULL,'Meeting Room Rental | Business Facilities','State-of-the-art meeting rooms with modern technology, AV equipment, and professional amenities for your business needs.','meeting room, conference room, business meeting, event space',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(12,'Laundry & Dry Cleaning','Professional laundry and dry cleaning services. Same-day service available for your convenience.',30.00,'Housekeeping','laundry-dry-cleaning','https://images.unsplash.com/photo-1582735689369-4fe89db7114c?w=1200&h=800&fit=crop','<p>Keep your wardrobe fresh with our professional laundry and dry cleaning services. Same-day service available for urgent needs.</p>',NULL,'Laundry & Dry Cleaning Service','Professional laundry and dry cleaning services with same-day service available. Keep your wardrobe fresh during your stay.','laundry, dry cleaning, clothing service, hotel laundry',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(13,'Fitness Center Access','Access our state-of-the-art fitness center with modern equipment, personal trainers, and group fitness classes.',0.00,'Fitness','fitness-center-access','https://images.unsplash.com/photo-1534438747741-0bf23ca35f0d?w=1200&h=800&fit=crop','<p>Maintain your fitness routine in our fully equipped gym. Features cardio equipment, weight training, and personal training sessions available.</p>',NULL,'Fitness Center | Hotel Gym Access','State-of-the-art fitness center with modern equipment, personal trainers, and group fitness classes. Stay fit during your stay.','fitness center, gym, workout, exercise, hotel gym',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(14,'Personal Shopper','Discover the city\'s best boutiques and shopping destinations with our expert personal shopper. Tailored shopping experiences.',200.00,'Concierge','personal-shopper','https://images.unsplash.com/photo-1528716321680-815a8cdb8bc7?w=1200&h=800&fit=crop','<p>Let our personal shopper guide you to the best shopping destinations. From luxury boutiques to local markets, we\'ll help you find exactly what you\'re looking for.</p>',NULL,'Personal Shopper Service | Shopping Assistance','Expert personal shopper service to guide you to the best boutiques and shopping destinations. Tailored shopping experiences.','personal shopper, shopping service, boutique shopping, shopping guide',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(15,'Valet Parking','Complimentary valet parking service for all hotel guests. Secure parking with professional valet attendants.',0.00,'Transportation','valet-parking','https://images.unsplash.com/photo-1502877338535-766e1452684a?w=1200&h=800&fit=crop','<p>Enjoy the convenience of valet parking. Our professional attendants will safely park and retrieve your vehicle whenever needed.</p>',NULL,'Valet Parking Service | Complimentary Parking','Complimentary valet parking service with professional attendants. Secure and convenient parking for all hotel guests.','valet parking, parking service, hotel parking',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(16,'Butler Service','Experience personalized butler service for suite guests. Available 24/7 to attend to your every need and ensure a flawless stay.',0.00,'Concierge','butler-service','https://images.unsplash.com/photo-1556761175-5973dc0f32e7?w=1200&h=800&fit=crop','<p>Our dedicated butlers provide personalized service to suite guests. From unpacking to arranging special requests, we ensure every detail is perfect.</p>',NULL,'Butler Service | Personalized Assistance','Personalized butler service for suite guests. Available 24/7 to attend to your every need and ensure a flawless stay.','butler service, personal butler, suite service, luxury service',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(17,'Event Planning','Let our expert event planners organize your special occasion. From intimate dinners to grand celebrations, we handle every detail.',500.00,'Events','event-planning','https://images.unsplash.com/photo-1519167758481-83f29da1c4fe?w=1200&h=800&fit=crop','<p>Our event planning team will work with you to create unforgettable celebrations. From venue selection to catering and entertainment, we manage it all.</p>',NULL,'Event Planning Service | Special Occasions','Expert event planning service for special occasions. From intimate dinners to grand celebrations, we handle every detail.','event planning, party planning, special events, celebration planning',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(18,'Photography Service','Capture your special moments with our professional photography service. Available for events, portraits, and special occasions.',300.00,'Events','photography-service','https://images.unsplash.com/photo-1516035069371-29a1b244cc32?w=1200&h=800&fit=crop','<p>Our professional photographers will capture your special moments with artistic flair. Perfect for weddings, anniversaries, and other celebrations.</p>',NULL,'Professional Photography Service','Professional photography service for events, portraits, and special occasions. Capture your special moments with artistic flair.','photography, photographer, event photography, portrait photography',1,'2025-12-05 22:42:01','2025-12-05 22:42:06'),(19,'Babysitting Service','Professional babysitting service for families. Certified caregivers available to watch your children while you enjoy your stay.',50.00,'Family','babysitting-service','https://images.unsplash.com/photo-1503454537195-1dcabb73ffb9?w=1200&h=800&fit=crop','<p>Enjoy peace of mind with our professional babysitting service. All caregivers are certified and experienced in childcare.</p>',NULL,'Babysitting Service | Childcare','Professional babysitting service with certified caregivers. Enjoy your stay while your children are safely cared for.','babysitting, childcare, kids service, family service',1,'2025-12-05 22:42:01','2025-12-05 22:42:06');
|
|
/*!40000 ALTER TABLE `services` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `staff_shifts`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `staff_shifts`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `staff_shifts` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`staff_id` int NOT NULL,
|
|
`shift_date` datetime NOT NULL,
|
|
`shift_type` enum('morning','afternoon','night','full_day','custom') NOT NULL,
|
|
`start_time` time NOT NULL,
|
|
`end_time` time NOT NULL,
|
|
`status` enum('scheduled','in_progress','completed','cancelled','no_show') NOT NULL,
|
|
`actual_start_time` datetime DEFAULT NULL,
|
|
`actual_end_time` datetime DEFAULT NULL,
|
|
`break_duration_minutes` int DEFAULT NULL,
|
|
`assigned_by` int DEFAULT NULL,
|
|
`department` varchar(100) DEFAULT NULL,
|
|
`notes` text,
|
|
`handover_notes` text,
|
|
`tasks_completed` int DEFAULT NULL,
|
|
`tasks_assigned` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `assigned_by` (`assigned_by`),
|
|
KEY `ix_staff_shifts_staff_id` (`staff_id`),
|
|
KEY `ix_staff_shifts_id` (`id`),
|
|
KEY `ix_staff_shifts_shift_date` (`shift_date`),
|
|
CONSTRAINT `staff_shifts_ibfk_1` FOREIGN KEY (`staff_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `staff_shifts_ibfk_2` FOREIGN KEY (`assigned_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `staff_shifts`
|
|
--
|
|
|
|
LOCK TABLES `staff_shifts` WRITE;
|
|
/*!40000 ALTER TABLE `staff_shifts` DISABLE KEYS */;
|
|
INSERT INTO `staff_shifts` VALUES (1,5,'2025-12-15 17:09:01','full_day','08:00:00','20:00:00','completed','2025-12-09 18:33:13','2025-12-09 18:33:17',30,1,NULL,NULL,NULL,0,0,'2025-12-07 17:09:16','2025-12-09 18:33:17'),(2,5,'2025-12-10 18:39:15','full_day','08:00:00','20:00:00','completed','2025-12-09 18:39:43','2025-12-09 18:39:56',30,1,NULL,NULL,NULL,0,0,'2025-12-09 18:39:23','2025-12-09 18:39:57');
|
|
/*!40000 ALTER TABLE `staff_shifts` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `staff_tasks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `staff_tasks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `staff_tasks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`shift_id` int DEFAULT NULL,
|
|
`staff_id` int NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`task_type` varchar(100) NOT NULL,
|
|
`priority` enum('low','normal','high','urgent') NOT NULL,
|
|
`status` enum('pending','assigned','in_progress','completed','cancelled','on_hold') NOT NULL,
|
|
`scheduled_start` datetime DEFAULT NULL,
|
|
`scheduled_end` datetime DEFAULT NULL,
|
|
`actual_start` datetime DEFAULT NULL,
|
|
`actual_end` datetime DEFAULT NULL,
|
|
`estimated_duration_minutes` int DEFAULT NULL,
|
|
`actual_duration_minutes` int DEFAULT NULL,
|
|
`assigned_by` int DEFAULT NULL,
|
|
`due_date` datetime DEFAULT NULL,
|
|
`related_booking_id` int DEFAULT NULL,
|
|
`related_room_id` int DEFAULT NULL,
|
|
`related_guest_request_id` int DEFAULT NULL,
|
|
`related_maintenance_id` int DEFAULT NULL,
|
|
`notes` text,
|
|
`completion_notes` text,
|
|
`is_recurring` tinyint(1) NOT NULL,
|
|
`recurrence_pattern` varchar(100) DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `assigned_by` (`assigned_by`),
|
|
KEY `related_booking_id` (`related_booking_id`),
|
|
KEY `related_room_id` (`related_room_id`),
|
|
KEY `related_guest_request_id` (`related_guest_request_id`),
|
|
KEY `related_maintenance_id` (`related_maintenance_id`),
|
|
KEY `ix_staff_tasks_staff_id` (`staff_id`),
|
|
KEY `ix_staff_tasks_shift_id` (`shift_id`),
|
|
KEY `ix_staff_tasks_id` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_1` FOREIGN KEY (`shift_id`) REFERENCES `staff_shifts` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_2` FOREIGN KEY (`staff_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_3` FOREIGN KEY (`assigned_by`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_4` FOREIGN KEY (`related_booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_5` FOREIGN KEY (`related_room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_6` FOREIGN KEY (`related_guest_request_id`) REFERENCES `guest_requests` (`id`),
|
|
CONSTRAINT `staff_tasks_ibfk_7` FOREIGN KEY (`related_maintenance_id`) REFERENCES `room_maintenance` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `staff_tasks`
|
|
--
|
|
|
|
LOCK TABLES `staff_tasks` WRITE;
|
|
/*!40000 ALTER TABLE `staff_tasks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `staff_tasks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `system_settings`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `system_settings`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `system_settings` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`key` varchar(100) NOT NULL,
|
|
`value` text NOT NULL,
|
|
`description` text,
|
|
`updated_at` datetime NOT NULL,
|
|
`updated_by_id` int DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_system_settings_key` (`key`),
|
|
KEY `updated_by_id` (`updated_by_id`),
|
|
KEY `ix_system_settings_id` (`id`),
|
|
CONSTRAINT `system_settings_ibfk_1` FOREIGN KEY (`updated_by_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `system_settings`
|
|
--
|
|
|
|
LOCK TABLES `system_settings` WRITE;
|
|
/*!40000 ALTER TABLE `system_settings` DISABLE KEYS */;
|
|
INSERT INTO `system_settings` VALUES (1,'company_name','Luxury Hotel & Resort','The official name of the hotel/company','2025-12-05 22:51:51',1),(2,'company_tagline','Experience Unparalleled Elegance and Comfort','Company tagline or slogan','2025-12-05 22:51:51',1),(3,'company_logo_url','https://ui-avatars.com/api/?name=Luxury+Hotel&background=d4af37&color=fff&size=400&bold=true&font-size=0.5','URL to the company logo image','2025-12-05 22:51:51',1),(4,'company_favicon_url','https://ui-avatars.com/api/?name=LH&background=d4af37&color=fff&size=64&bold=true','URL to the company favicon image','2025-12-05 22:51:51',1),(5,'company_phone','+1 (555) 123-4567','Primary company phone number','2025-12-05 22:51:51',1),(6,'company_email','info@luxuryhotel.com','Primary company email address','2025-12-05 22:51:51',1),(7,'company_address','123 Luxury Avenue, Premium City, PC 12345, United States','Company physical address','2025-12-05 22:51:51',1),(8,'tax_rate','10.0','Default tax rate percentage (e.g., 10.0 for 10%)','2025-12-05 22:51:51',1),(9,'chat_working_hours_start','9','Chat support working hours start (24-hour format, e.g., 9 for 9 AM)','2025-12-05 22:51:51',1),(10,'chat_working_hours_end','18','Chat support working hours end (24-hour format, e.g., 18 for 6 PM)','2025-12-05 22:51:51',1),(11,'platform_currency','EUR','Default platform currency code (ISO 4217 format, e.g., USD, EUR, GBP)','2025-12-05 22:53:40',1),(12,'stripe_secret_key','','Stripe secret API key (configure in production)','2025-12-05 22:51:51',1),(13,'stripe_publishable_key','','Stripe publishable API key (configure in production)','2025-12-05 22:51:51',1),(14,'stripe_webhook_secret','','Stripe webhook secret for verifying webhook events (configure in production)','2025-12-05 22:51:51',1),(15,'paypal_client_id','','PayPal client ID (configure in production)','2025-12-05 22:51:51',1),(16,'paypal_client_secret','','PayPal client secret (configure in production)','2025-12-05 22:51:51',1),(17,'paypal_mode','sandbox','PayPal mode: \"sandbox\" for testing, \"live\" for production','2025-12-05 22:51:51',1),(18,'borica_terminal_id','','Borica terminal ID (configure if using Borica payment gateway)','2025-12-05 22:51:51',1),(19,'borica_merchant_id','','Borica merchant ID (configure if using Borica payment gateway)','2025-12-05 22:51:51',1),(20,'borica_private_key_path','','Path to Borica private key file (configure if using Borica)','2025-12-05 22:51:51',1),(21,'borica_certificate_path','','Path to Borica certificate file (configure if using Borica)','2025-12-05 22:51:51',1),(22,'borica_gateway_url','','Borica gateway URL (configure if using Borica payment gateway)','2025-12-05 22:51:51',1),(23,'borica_mode','test','Borica mode: \"test\" for testing, \"production\" for live transactions','2025-12-05 22:51:51',1),(24,'smtp_host','','SMTP server hostname (e.g., smtp.gmail.com, smtp.sendgrid.net)','2025-12-05 22:51:51',1),(25,'smtp_port','587','SMTP server port (587 for STARTTLS, 465 for SSL)','2025-12-05 22:51:51',1),(26,'smtp_user','','SMTP authentication username/email','2025-12-05 22:51:51',1),(27,'smtp_password','','SMTP authentication password (stored securely)','2025-12-05 22:51:51',1),(28,'smtp_from_email','noreply@luxuryhotel.com','Default \"From\" email address for outgoing emails','2025-12-05 22:51:51',1),(29,'smtp_from_name','Luxury Hotel & Resort','Default \"From\" name for outgoing emails','2025-12-05 22:51:51',1),(30,'smtp_use_tls','true','Use TLS/SSL for SMTP connection (true for port 465, false for port 587 with STARTTLS)','2025-12-05 22:51:51',1),(31,'recaptcha_site_key','','Google reCAPTCHA site key (configure if using reCAPTCHA)','2025-12-05 22:51:51',1),(32,'recaptcha_secret_key','','Google reCAPTCHA secret key (configure if using reCAPTCHA)','2025-12-05 22:51:51',1),(33,'recaptcha_enabled','false','Enable/disable reCAPTCHA verification (true/false)','2025-12-05 22:51:51',1),(34,'booking_confirmation_email_enabled','true','Enable automatic booking confirmation emails (true/false)','2025-12-05 22:51:51',1),(35,'booking_cancellation_email_enabled','true','Enable automatic booking cancellation emails (true/false)','2025-12-05 22:51:51',1),(36,'newsletter_enabled','true','Enable newsletter subscription feature (true/false)','2025-12-05 22:51:51',1),(37,'maintenance_mode','false','Enable maintenance mode (true/false)','2025-12-05 22:51:51',1),(38,'maintenance_message','We are currently performing scheduled maintenance. Please check back soon.','Message to display when maintenance mode is enabled','2025-12-05 22:51:51',1),(39,'default_checkin_time','15:00','Default check-in time (24-hour format, e.g., 15:00 for 3 PM)','2025-12-05 22:51:51',1),(40,'default_checkout_time','11:00','Default check-out time (24-hour format, e.g., 11:00 for 11 AM)','2025-12-05 22:51:51',1),(41,'cancellation_hours','24','Number of hours before check-in that cancellation is allowed without penalty','2025-12-05 22:51:51',1),(42,'max_guests_per_room','4','Maximum number of guests allowed per room','2025-12-05 22:51:51',1),(43,'min_booking_advance_days','0','Minimum number of days in advance required for booking (0 = same day allowed)','2025-12-05 22:51:51',1),(44,'max_booking_advance_days','365','Maximum number of days in advance bookings can be made','2025-12-05 22:51:51',1),(45,'loyalty_program_enabled','false','Enable or disable the loyalty program','2025-12-05 22:52:44',1),(46,'theme_primary_color','#33d17a',NULL,'2025-12-09 23:41:00',1),(47,'theme_primary_light','#deddda',NULL,'2025-12-09 23:41:00',1),(48,'theme_primary_dark','#8ff0a4',NULL,'2025-12-09 23:41:00',1),(49,'theme_primary_accent','#9141ac',NULL,'2025-12-09 23:41:00',1),(50,'theme_layout_mode','light',NULL,'2025-12-09 23:41:00',1);
|
|
/*!40000 ALTER TABLE `system_settings` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `task_comments`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `task_comments`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `task_comments` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`task_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`comment` text NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `task_id` (`task_id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_task_comments_id` (`id`),
|
|
CONSTRAINT `task_comments_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`),
|
|
CONSTRAINT `task_comments_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `task_comments`
|
|
--
|
|
|
|
LOCK TABLES `task_comments` WRITE;
|
|
/*!40000 ALTER TABLE `task_comments` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `task_comments` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `tasks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `tasks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `tasks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`title` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`task_type` varchar(100) NOT NULL,
|
|
`status` enum('pending','assigned','in_progress','completed','cancelled','overdue') NOT NULL,
|
|
`priority` enum('low','medium','high','urgent') NOT NULL,
|
|
`workflow_instance_id` int DEFAULT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`room_id` int DEFAULT NULL,
|
|
`assigned_to` int DEFAULT NULL,
|
|
`created_by` int NOT NULL,
|
|
`due_date` datetime DEFAULT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`estimated_duration_minutes` int DEFAULT NULL,
|
|
`actual_duration_minutes` int DEFAULT NULL,
|
|
`notes` text,
|
|
`meta_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `workflow_instance_id` (`workflow_instance_id`),
|
|
KEY `booking_id` (`booking_id`),
|
|
KEY `room_id` (`room_id`),
|
|
KEY `assigned_to` (`assigned_to`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_tasks_id` (`id`),
|
|
CONSTRAINT `tasks_ibfk_1` FOREIGN KEY (`workflow_instance_id`) REFERENCES `workflow_instances` (`id`),
|
|
CONSTRAINT `tasks_ibfk_2` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `tasks_ibfk_3` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `tasks_ibfk_4` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `tasks_ibfk_5` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `tasks`
|
|
--
|
|
|
|
LOCK TABLES `tasks` WRITE;
|
|
/*!40000 ALTER TABLE `tasks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `tasks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `team_channel_members`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `team_channel_members`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `team_channel_members` (
|
|
`channel_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`joined_at` datetime NOT NULL,
|
|
`is_muted` tinyint(1) NOT NULL,
|
|
`last_read_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`channel_id`,`user_id`),
|
|
KEY `user_id` (`user_id`),
|
|
CONSTRAINT `team_channel_members_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `team_channels` (`id`),
|
|
CONSTRAINT `team_channel_members_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `team_channel_members`
|
|
--
|
|
|
|
LOCK TABLES `team_channel_members` WRITE;
|
|
/*!40000 ALTER TABLE `team_channel_members` DISABLE KEYS */;
|
|
INSERT INTO `team_channel_members` VALUES (1,5,'2025-12-06 23:06:08',0,'2025-12-06 23:26:48'),(2,5,'2025-12-06 23:06:09',0,'2025-12-06 23:26:47'),(3,5,'2025-12-06 23:06:12',0,'2025-12-07 12:58:46'),(4,5,'2025-12-06 23:06:13',0,NULL),(5,1,'2025-12-06 23:12:18',0,'2025-12-07 18:07:55'),(5,5,'2025-12-06 23:12:18',0,'2025-12-07 12:58:52');
|
|
/*!40000 ALTER TABLE `team_channel_members` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `team_channels`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `team_channels`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `team_channels` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(100) DEFAULT NULL,
|
|
`description` text,
|
|
`channel_type` enum('direct','group','department','announcement') NOT NULL,
|
|
`department` varchar(50) DEFAULT NULL,
|
|
`created_by` int NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`is_private` tinyint(1) NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`last_message_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_team_channels_id` (`id`),
|
|
CONSTRAINT `team_channels_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `team_channels`
|
|
--
|
|
|
|
LOCK TABLES `team_channels` WRITE;
|
|
/*!40000 ALTER TABLE `team_channels` DISABLE KEYS */;
|
|
INSERT INTO `team_channels` VALUES (1,'team',NULL,'group',NULL,5,1,0,'2025-12-06 23:06:08','2025-12-06 23:06:08',NULL),(2,'team',NULL,'group',NULL,5,1,0,'2025-12-06 23:06:09','2025-12-06 23:06:09',NULL),(3,'team',NULL,'group',NULL,5,1,0,'2025-12-06 23:06:12','2025-12-06 23:06:12',NULL),(4,'team',NULL,'group',NULL,5,1,0,'2025-12-06 23:06:13','2025-12-06 23:06:13',NULL),(5,NULL,NULL,'direct',NULL,1,1,1,'2025-12-06 23:12:18','2025-12-06 23:23:55','2025-12-06 23:23:55');
|
|
/*!40000 ALTER TABLE `team_channels` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `team_message_read_receipts`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `team_message_read_receipts`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `team_message_read_receipts` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`message_id` int NOT NULL,
|
|
`user_id` int NOT NULL,
|
|
`read_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_team_message_read_receipts_user_id` (`user_id`),
|
|
KEY `ix_team_message_read_receipts_message_id` (`message_id`),
|
|
KEY `ix_team_message_read_receipts_id` (`id`),
|
|
CONSTRAINT `team_message_read_receipts_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `team_messages` (`id`),
|
|
CONSTRAINT `team_message_read_receipts_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `team_message_read_receipts`
|
|
--
|
|
|
|
LOCK TABLES `team_message_read_receipts` WRITE;
|
|
/*!40000 ALTER TABLE `team_message_read_receipts` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `team_message_read_receipts` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `team_messages`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `team_messages`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `team_messages` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`channel_id` int NOT NULL,
|
|
`sender_id` int NOT NULL,
|
|
`content` text NOT NULL,
|
|
`priority` enum('normal','high','urgent') NOT NULL,
|
|
`reply_to_id` int DEFAULT NULL,
|
|
`is_edited` tinyint(1) NOT NULL,
|
|
`edited_at` datetime DEFAULT NULL,
|
|
`is_deleted` tinyint(1) NOT NULL,
|
|
`deleted_at` datetime DEFAULT NULL,
|
|
`reference_type` varchar(50) DEFAULT NULL,
|
|
`reference_id` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `reply_to_id` (`reply_to_id`),
|
|
KEY `ix_team_messages_id` (`id`),
|
|
KEY `ix_team_messages_sender_id` (`sender_id`),
|
|
KEY `ix_team_messages_channel_id` (`channel_id`),
|
|
CONSTRAINT `team_messages_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `team_channels` (`id`),
|
|
CONSTRAINT `team_messages_ibfk_2` FOREIGN KEY (`sender_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `team_messages_ibfk_3` FOREIGN KEY (`reply_to_id`) REFERENCES `team_messages` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `team_messages`
|
|
--
|
|
|
|
LOCK TABLES `team_messages` WRITE;
|
|
/*!40000 ALTER TABLE `team_messages` DISABLE KEYS */;
|
|
INSERT INTO `team_messages` VALUES (1,5,1,'👋 Hi!','normal',NULL,0,NULL,1,'2025-12-06 23:17:00',NULL,NULL,'2025-12-06 23:12:18'),(2,5,1,'👋 Hi!','normal',NULL,0,NULL,1,'2025-12-06 23:17:03',NULL,NULL,'2025-12-06 23:12:19'),(3,5,1,'👋 Hi!','normal',NULL,0,NULL,1,'2025-12-06 23:17:06',NULL,NULL,'2025-12-06 23:12:20'),(4,5,1,'👋 Hi!','normal',NULL,0,NULL,0,NULL,NULL,NULL,'2025-12-06 23:12:21'),(5,5,1,'hi','normal',NULL,0,NULL,0,NULL,NULL,NULL,'2025-12-06 23:16:53'),(6,5,5,'hi','normal',NULL,0,NULL,0,NULL,NULL,NULL,'2025-12-06 23:23:55');
|
|
/*!40000 ALTER TABLE `team_messages` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `user_loyalty`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `user_loyalty`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `user_loyalty` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`tier_id` int NOT NULL,
|
|
`total_points` int NOT NULL,
|
|
`lifetime_points` int NOT NULL,
|
|
`available_points` int NOT NULL,
|
|
`expired_points` int NOT NULL,
|
|
`referral_code` varchar(50) DEFAULT NULL,
|
|
`referral_count` int NOT NULL,
|
|
`birthday` date DEFAULT NULL,
|
|
`anniversary_date` date DEFAULT NULL,
|
|
`last_points_earned_date` datetime DEFAULT NULL,
|
|
`tier_started_date` datetime DEFAULT NULL,
|
|
`next_tier_points_needed` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_user_loyalty_user_id` (`user_id`),
|
|
UNIQUE KEY `ix_user_loyalty_referral_code` (`referral_code`),
|
|
KEY `ix_user_loyalty_id` (`id`),
|
|
KEY `ix_user_loyalty_tier_id` (`tier_id`),
|
|
CONSTRAINT `user_loyalty_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|
CONSTRAINT `user_loyalty_ibfk_2` FOREIGN KEY (`tier_id`) REFERENCES `loyalty_tiers` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `user_loyalty`
|
|
--
|
|
|
|
LOCK TABLES `user_loyalty` WRITE;
|
|
/*!40000 ALTER TABLE `user_loyalty` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `user_loyalty` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `user_presence`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `user_presence`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `user_presence` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`status` varchar(20) NOT NULL,
|
|
`custom_status` varchar(100) DEFAULT NULL,
|
|
`last_seen_at` datetime NOT NULL,
|
|
`last_active_at` datetime NOT NULL,
|
|
`device_type` varchar(50) DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_user_presence_user_id` (`user_id`),
|
|
KEY `ix_user_presence_id` (`id`),
|
|
CONSTRAINT `user_presence_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `user_presence`
|
|
--
|
|
|
|
LOCK TABLES `user_presence` WRITE;
|
|
/*!40000 ALTER TABLE `user_presence` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `user_presence` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `user_sessions`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `user_sessions`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `user_sessions` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`user_id` int NOT NULL,
|
|
`session_token` varchar(255) NOT NULL,
|
|
`refresh_token` varchar(255) DEFAULT NULL,
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`user_agent` varchar(500) DEFAULT NULL,
|
|
`device_info` text,
|
|
`is_active` tinyint(1) NOT NULL DEFAULT '1',
|
|
`last_activity` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`expires_at` datetime NOT NULL,
|
|
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_user_sessions_session_token` (`session_token`),
|
|
UNIQUE KEY `ix_user_sessions_refresh_token` (`refresh_token`),
|
|
KEY `ix_user_sessions_id` (`id`),
|
|
KEY `ix_user_sessions_user_id` (`user_id`),
|
|
KEY `ix_user_sessions_is_active` (`is_active`),
|
|
KEY `ix_user_sessions_last_activity` (`last_activity`),
|
|
KEY `ix_user_sessions_expires_at` (`expires_at`),
|
|
CONSTRAINT `user_sessions_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `user_sessions`
|
|
--
|
|
|
|
LOCK TABLES `user_sessions` WRITE;
|
|
/*!40000 ALTER TABLE `user_sessions` DISABLE KEYS */;
|
|
INSERT INTO `user_sessions` VALUES (1,2,'162MVH5y_cRbfp-sqnuX5czThmXHn4KObHo9PiGP_LjysoC0pBTxw17if9HVXO1CafFKvYw8gmwW2M0j1ErfXQ','n2AsW4S-SEB2e5fUge9Udc8ImyuenyHH2JnP58z0mZc-dTgEUxx_QEGwrsGDp6ZjzuTYfdICFQ39oUMV1gHp_Q','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-05 23:13:00','2025-12-05 23:43:00','2025-12-05 23:13:00'),(2,1,'hNuXN-F4dFXvcKkClKkC0f6i7OCngyTi4csCklsvPJ-im6dfINMScr9Iu12eMMuz57SxACi05Qd0cYi7TVuTMg','qazhplAbeaBvW0Uy1Fm9RGjpQc5IO23MXk3b5F8jP94HPgxWxM8yXy6_26ZRkc32M-9T_k5TGAvrITC2e743yw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-05 23:18:34','2025-12-05 23:48:34','2025-12-05 23:18:34'),(3,1,'T1lBFvnH4hJ8Q4w_a28zlNAt6vnWF08-OShcOm64hPzc3VJLzUe-GctMja66ysEybtpcXlYpKVwWsCDMdyP4sg','NGGLoWEsI7k13SFArtSMGvTRqxy3fTIphAMnacJgRnCecc89lPKlALAnGDLl1Hm0lf9FfFJh4vYhQYB17yXAgA','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-05 23:43:59','2025-12-06 00:13:59','2025-12-05 23:43:59'),(4,1,'AR2-VEJfvGKEUx6jFnhF9NIZ_Zuv0A4Nob1brWyxCJkHargwztAomBw9sIrhWzVwu1C-QFRBcsEgOw_UmQEHnQ','bxutJs1TJOkl7hLy98c4sMr4NrmlqHNSD_wBlDfLMeeQnogpBLBocuRT94gxQWbKwkSHn43nVFbwwiigZXHDKA','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 00:11:46','2025-12-06 00:41:46','2025-12-06 00:11:46'),(5,1,'RLHbK4GYsDZAcpEJ3rtOaYfdubEInmLKrhz3Oa_dMHVCIu2WoZXVtmu5yTs8PGXE_JZSzSUGeJdFgLwZ_ynezA','UBh3L976cnLgNd2ZqwAwFD3oKqlm7nmSDvPUiHFV_ZGH2uIR4mzI0N0bRYE4PkxfZZZ6vD63eTYye_Z6O0jf-w','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 01:05:20','2025-12-06 01:35:20','2025-12-06 01:05:20'),(6,1,'UJjXm8NzYfBZXiSeSFBJxQ_xRnV9r_D-FAhyLeIxhjomiRVQ53KDiLUe7Tz4crqrcM0FtcH36fEMfAaK8eK-DA','e20sejMUzIZVd33QV19abLuZ0rxrLLkIgA1HiHuxV7ojgO5IYaUaD9rhYd31LeVH9WCLkYfuW4uj6r-E0r7LdA','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 01:23:58','2025-12-06 01:53:58','2025-12-06 01:23:58'),(7,1,'CGIsuwTzI1uR4IML_CgZlXwe7tB9Vnl6nseKwxrlSqgs3dj_OiDzx2A2O2nQWi28I1oNEgNCEMDHTJ4ulH0Oeg','rKHG3hh1qfhMLzfPsDFDl36Ye7VHX5YkqocOl4GSonq12xTtqV70lANZqGW2m8D6TEMptQAnnlbAxFvniHH16g','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 10:44:48','2025-12-06 11:14:48','2025-12-06 10:44:48'),(8,2,'bS25DOKgAHVambc_KO9jzVayv9a2Gy2TfrSFgYT1gJJ6zvwCill39DSpVsyqOpbIF8v2ucagsyohIlP4VeNdFA','C93G0wsrAmUmoL-1Hvi7a6L1hbcUXwaj4ulz2VOdh6mzR0h9dxXI9l-AlExiOyqVVFB40oA4f2qFKeFK0hdqVw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 22:18:38','2025-12-06 22:48:38','2025-12-06 22:18:38'),(9,1,'WHGXvCGuqDSslkv-rQvKMy0RCRC6w542H34_gv18AQZ5sbu-Mi92c1AayW-Q_uKUQtpu9HLpqcwE5ljwN6noPg','fygzleHKLZJX5Z4slzNWmmwv-S7rvT-bFkXV9EQnPMupKJ0ZUbku0G3WOwNaCMOOyKuo2QJ_-T0WmvE37L7f8A','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',0,'2025-12-06 22:22:36','2025-12-06 22:52:36','2025-12-06 22:22:36'),(10,1,'EUvoTZfYMzIPjGMY6m2qDom5u1RFIQBbxNaBrtX0FzhoufXM1e6czQWt5dyzLsoV7Ya0dCgIFDl_KMGv1EaI2A','jnbK4aflePgfU-xFmBfq8mH7nCRIWfmGfaensgTrVC2aNChJeg72PQ-mDdzHhlAxExHfXRQgISeRuBQ1sS2oTg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 22:35:54','2025-12-06 23:05:54','2025-12-06 22:35:54'),(11,1,'CfflsZ2IjIA0g1YxBOEwjo-CzkczWLvuHvQ_3ePgdG_d94dLIGkdnmNjeCVK05cUOxtk0rLGIdKq1yd6h6kx-g','CJ0mRF6xbhd2JE-wuhvaGzmLycNf4OE1hu0ynzs8KOMPFSMbBUZDQLdC8vUE0LTeoSACs04IlIkF4bulsWl7aw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 22:45:20','2025-12-06 23:15:20','2025-12-06 22:45:20'),(12,1,'60QUjYYf7HZ4czWyCeRgTK4Ywa5CVZcYb4gG1jqS2vwD_eXpnbzq8STYu6fefmIP5r_7Er_IJrMQOWyyEa0qIg','fP4nb5md8EpfkzsrX74drXooXyyCg-goOD3FVRjl1hw0x3pc3-WHlxCxwW7AQiifAuNKBSuQ1yEqaUP2Bbj8Wg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 22:49:49','2025-12-06 23:19:49','2025-12-06 22:49:49'),(13,1,'QcNrFoZbCN2C034JlrbQATQF90L7zbNdEoIY29TybCxEdsy9RSM2_CC2fhwT8gQW2OM7gXNLb9wsxFB9bBSLKA','4tGlUuUSzsutP1AUBFAvlnHZ93UKTE5D-S8MHjz19evHmEYF9gKrQc7RTIhasky59_UD0Ia-ozrKxiiOa9IX6w','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 23:00:48','2025-12-06 23:30:48','2025-12-06 23:00:48'),(14,5,'ynPIJmNyqeP3zQ8s7vmdqm8IlLPdqYQt4Q78LUxfEjg4MTkWgn3Jdrtzni5CUVs5Mx0L88BwhKKe9wxt35C8wg','bBejgmFNlkCv8bciKBfA4QSFKtECWREQoeACgoO4-4_pyv67UOEkNcCPPSV7FJfQAks2jjcWnmcvmQXMyHISUw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 23:05:23','2025-12-06 23:35:23','2025-12-06 23:05:23'),(15,1,'2QaZJ4myCyOzZYfjA3LUQhLfoKOobo2pPXi24Op3OCdNG88RmJPRMRNGU8c1xact8gnXhuXZJZGjlndZcMqQIA','CSDj_IdN7zTGMU_iCg2bAbKuKKH8013qnu6wKIVA-p_xPftlAQAdpcZJoDTWAxyBD0S9OYTsMYpS_70oRjdO0w','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 23:06:33','2025-12-06 23:36:33','2025-12-06 23:06:33'),(16,5,'bj5b1TLzuQeGpSQddSnx5tWfA7kd41AfWt6QMfeI_UO-IqTvds6yILo2ctwRkudj2Th2Z0TCTYjlMZBi2A-QYw','h5k8-jYM7OOcZxge5r0lrENsTPB92V0AiWxIIuROzIT6eNTwlYz8Wdqcm9XibL618rsuwD75LRRcGwboPouBkg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 23:23:31','2025-12-06 23:53:31','2025-12-06 23:23:31'),(17,1,'mJtlYSYUGRHVhOO7OrPLm2Yzf2ErafMFLUloJVt9zI32YurG9E8x_IuLX1ZTrtonyim8qO1uAS8iE-tkK6p1lg','mI4oo3YnJHOrgT83BqZvQQaxBRVMnsacPWsC-qXYMH2mCW0serQ-BUWTYuM0FxCr0QnCy-mBDkDHP_1pGIOG9A','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-06 23:27:00','2025-12-06 23:57:00','2025-12-06 23:27:00'),(18,5,'u4-y49OMN0oIT0xsQPO8xs01WSL0_NJb6jp3Ss_Jyhdcz1QeKaW425Y1PUaygpvTyNbCiqLumez3z3mUwCwMUQ','SVL99IR7Dj2C0Q51Yk5ljKXOqtGJUcIyT-Ikwy6QznbeX3XUPYozkVub77LKM1MH5wsZx7BP-HM2kEAGiwZs_g','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-07 12:56:03','2025-12-07 13:26:03','2025-12-07 12:56:03'),(19,1,'kWMhXa8X13gKxoqbqDdB-fi3DZCtHUjJu_LmsZKLTCBImCdUCmq5JlCRbxA-dcFjEATe7p7SWslP8fPmjiANuQ','AeOsj1UR7BrAV8ngsWcObA0ywVUdHBBonxDSSmZamZ7BUqVwmIF7thyDz-kAveU8zXfo4MbWOuJAFShSdefHag','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-07 13:33:54','2025-12-07 14:03:54','2025-12-07 13:33:54'),(20,1,'sxuIquziSgeVQsCnimy4WDwPO-vkYCw9SudHqmuczQdgXgkbqS-porchIzdstFz5zYWdW4JzC9ujJzNpJ7kAwg','CVP5r4VcQGYcP0lZisaTNGwmjoxBIL-yxvK0BPCylLQJgrf3gcvk-hOpOaXd-SnB8_t3NyScc2mw-Dz7hr99Vg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-07 13:41:44','2025-12-07 14:11:44','2025-12-07 13:41:44'),(21,1,'JOhoApIftiOlDAR6R2P0KzhmAxHdQYZfauSa9cEGZs9QgarM0_xsbM_4Vd2C746ofyDQXDYND7zUOxUxYtrNxA','Rbv7WY3bMPEJSBbl1YFAV1MuufihZ-uBjoFAi7NPfsW960_3CPlV1lVIGVf1Qrw3FPmTwePBq6hYVg003bXZwg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-07 14:55:25','2025-12-07 15:25:25','2025-12-07 14:55:25'),(22,1,'xOqxOsgsIAK1d-Tbm5xSdp06Rjr2xBVrP1QBjoLycKNMJ9yULzmb4hAQToss94_MzWNSjgiB_9L5_bDgNsUX-g','WRM_mIsTz-h5XUoK2NgRB1f21foUEVQtaagc5gIaF0W725Sj3aNt2Vk3c5Q_pRGD4kb8pU2LOCgR6KzRNbjCkA','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-07 14:58:12','2025-12-07 15:28:12','2025-12-07 14:58:12'),(23,1,'O6-_G1NrHINcSPip84mf_MdABpcDqqaZPzZBU31bOtUPRKirg_7yyCqjvZMnr8g0xKHMCdN24L4NiOOf2B_6Pg','awPqoKq9eENh8Fi43D2BJumomsLuFRvaAsNVibFVBrnb-3Q5f3MptRiJEGcJ7YxsER_Jj3Sron9fbWOfU5EMYg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-07 17:02:21','2025-12-07 17:32:21','2025-12-07 17:02:21'),(24,1,'Ub11o4bq2-oRNrwqD8_nDnI6iiA2sJKDJyngXfCWWlHZ77OGxo_53TmAN_rb3f-SXfOb-TMOba0fmhn1gvwv9A','-67QdjRh5Rdx8JsBJ2JlJpjcLL_UyawxWx_EO-oCwTlirh8LoDmpZwg4hzb_qlXEwEXuTZZ37b45p0kplMKt4g','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',0,'2025-12-07 18:04:57','2025-12-07 18:34:57','2025-12-07 18:04:57'),(25,1,'v_6und2Ygl6BAKn1-Gy5paFy2B-aT3Kt59R_CJeFT_aDnqKJ3dfeIxnTyZOWeFQt1FAkw4bYVev4t5mQONDRpw','xt57Cw_cfQtNTXLPYNeDBYkpOMWvwSJ5brVngpT4R4P-HzCfzZkRU_r0EY6Vee5hCRvfhtZ-bM2Rs4Mo6HgrxQ','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-08 20:33:22','2025-12-08 21:03:22','2025-12-08 20:33:22'),(26,1,'KVWH8a8Wxew9R7qjKEgdcnI-SuRbB3HlXk7fYuaUXpuyLtelI3bUKCy4T4oyk4oZYFXw7BwIHu8pTDnYdby7Sw','Xm3rGl82inEZLcTopp9LSwzYDyXe9kfHcgxfucI8iFR_sM2FdsIT61k2XL8lUO7GtZG-ChNAkbMBtfClMo0W0w','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-08 21:21:22','2025-12-08 21:51:22','2025-12-08 21:21:22'),(27,1,'S4aVj_Y0EFGMIi9izewGSSGR7OzJnk6CIWmKURuB-k_dZ-YkwkA7obvO0wSuQIvgdsPqyw3gEBKoS_Lqrkdwsg','HvnEcjEg69CIjEykPqJ1BsmJIezZkWNspP6gPcTUiaYuOx8xq0Cp3TFA5_sfwu_rwDw_EczUInbd0RZ7AXUlJQ','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-08 22:03:47','2025-12-08 22:33:47','2025-12-08 22:03:47'),(28,1,'YhSsgQU0HcShjAWmddRz86HzsR0EQ4kVbcHygxGYUQW_aTqsEWAmilPdENFkGq2Rpyv9pQulJ2iLj1kPhQd7SA','vBd9p9Kf9MqHdcikIqn9aJTkg9egk0vpyfsYb8R1QV-JLB8yLWfaZzvrLp94j763HAh4wLXlVPkDi6BxO3Gskw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 13:52:36','2025-12-09 14:22:36','2025-12-09 13:52:36'),(29,1,'ZjvGkWRaYVzb16Ro0ujUc98frYGxH5dqx_OEak2inricLlsE8gcB5ThYi7WK-dJ4OMEe0uGyZD0MInXRjwzCdg','W3_jMUB6ylg3Rglkl6VnioQb9doN11Du01gufCt2s-7GWHrDYfyLPiIKT-T0tOP1kvMIz_nUQr7M9NQkW0N6vg','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 13:53:53','2025-12-09 14:23:53','2025-12-09 13:53:53'),(30,1,'7rPLhyp5blZxEKhhv6yDnJLuWKWEC6iwr-2dZ3tDK0CD445J3PiDlRLJKWWKrM7s2VXJCCUxup_DH8i27eR9BQ','r_FWEbVCm4cU_vC_fzanlMyIv9Y5TVAA0zFuT_mpDkTWQEBl1M4FoXamJavlLrP_-dnHXT-hRM5Q4XQ6OhqN5A','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 14:22:27','2025-12-09 14:52:27','2025-12-09 14:22:27'),(31,2,'ie3fKrhDZiUhT-gW-_mWUxqmuDJl4GfX4fRdjA1A4eOMkyKIwT1dbwielecJrHJL8vGH1qatcOlHS-XQ1WaelQ','ALbH5yBsz80Yn-nk9H1OfXB8tZqPD0Hb5KUxosCaUTIaltZlBOHHRxEJDQOeLMplSWQZM7bY4PzkIYPPlNia_A','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 14:43:02','2025-12-09 15:13:02','2025-12-09 14:43:02'),(32,1,'DEClyEXJstxNEK3IbujuXPvBeOSt3LDKU3EhBe-1K8gFhJYkw3ISFeoqb3mKgbM2MUqa4POiUEfiw8lZdGs0Dw','kP-y2arv_rw_Y-KQmV1sGbgm0Yc0pRuJ_okeXtT95SlQq_eOHsNH9puzyenkl_jLoNQ9JmqvEvd8kzWd3E462Q','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 14:57:02','2025-12-09 15:27:02','2025-12-09 14:57:02'),(33,1,'Z5wOg1owgSKQkdBpCJ9Z1kSCgsGty8rF36UlM8WB1MoPwv3qllgdqpUnTxyVrTCrSlEHXAQ7BhmROxilnALLtA','IKW_Rw2KLf6awFMFNY5HN_TXsBw9DfWNTQUp4Uumqbp9IhjjYGjNmjmgBALbTX2n-NCll7yUiJ1nr-OHlBOrcw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 18:30:52','2025-12-09 19:00:52','2025-12-09 18:30:52'),(34,1,'MpT9vbALyMW4BOGBXBC22iAm292BvyUWLnkEK3ogR_RMaZ37lN_3GbKupZiPyLK5seVaVqwC-B-KUbobdiFk3A','Gnj-g_Embv-foJ95o-mGQ0I8fLIBsYsKrzfOYbNO7W-xzF6TZk1NslABdoQvhHngclo0qzbvSv3Y1zyMJPvgWA','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 18:53:36','2025-12-09 19:23:36','2025-12-09 18:53:36'),(35,1,'JWyL7xJY-zs1TdPrZm5nJMKvuThBHasW5Dca4N3MI7l447ff-9o6H3ck59xk_NeONnwuOJst7HW-dw_6g0yE1g','VDbMFRyrC4bx--HoTdb91cQUprYoGFxa4inVaBYKpLoTWSKtzR-nYysGlfhGS2irEfNxn-QLJfWO4R2ops5Zdw','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0\'}',1,'2025-12-09 19:35:53','2025-12-09 20:05:53','2025-12-09 19:35:53'),(36,1,'AlXTlzrZD73YVedfXzaosWAbD67ia7vkNjl_OKxsB0rFneh1fcqTtz01TcpxMBN2DhyCh3mvufOJK-5nffMwug','oBsNMDGwUHYDjvORx6Mq5ORRgufSiDWyAXI4DRrrafCSA7w5hIauHDzDC8kc-VSleL9dLwHohUN9_cTF1J661Q','127.0.0.1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0','{\'user_agent\': \'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0\'}',1,'2025-12-09 23:40:26','2025-12-10 00:10:26','2025-12-09 23:40:26');
|
|
/*!40000 ALTER TABLE `user_sessions` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `users`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `users`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `users` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`role_id` int NOT NULL,
|
|
`email` varchar(100) NOT NULL,
|
|
`password` varchar(255) NOT NULL,
|
|
`full_name` varchar(100) NOT NULL,
|
|
`phone` varchar(20) DEFAULT NULL,
|
|
`address` text,
|
|
`avatar` varchar(255) DEFAULT NULL,
|
|
`currency` varchar(3) NOT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`mfa_enabled` tinyint(1) NOT NULL,
|
|
`mfa_secret` varchar(255) DEFAULT NULL,
|
|
`mfa_backup_codes` text,
|
|
`failed_login_attempts` int NOT NULL,
|
|
`locked_until` datetime DEFAULT NULL,
|
|
`is_vip` tinyint(1) NOT NULL,
|
|
`lifetime_value` decimal(10,2) DEFAULT NULL,
|
|
`satisfaction_score` decimal(3,2) DEFAULT NULL,
|
|
`last_visit_date` datetime DEFAULT NULL,
|
|
`total_visits` int NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
`email_verified` tinyint(1) NOT NULL DEFAULT '0',
|
|
`password_changed_at` datetime DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ix_users_email` (`email`),
|
|
KEY `role_id` (`role_id`),
|
|
KEY `ix_users_id` (`id`),
|
|
KEY `ix_users_email_verified` (`email_verified`),
|
|
KEY `ix_users_password_changed_at` (`password_changed_at`),
|
|
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `users`
|
|
--
|
|
|
|
LOCK TABLES `users` WRITE;
|
|
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
|
|
INSERT INTO `users` VALUES (1,1,'admin@hotel.com','$2b$12$i6j9eDdW.MBCN9.Ew0vJwuknR8bvJnZfucpXGJGNn31o9KvDMOdyW','Admin User',NULL,NULL,NULL,'VND',1,0,NULL,NULL,0,NULL,0,0.00,NULL,NULL,0,'2025-12-05 22:05:57','2025-12-06 23:00:57',0,NULL),(2,3,'customer@gnxsoft.com','$2b$12$KRAVf9UzDtYXaE/xuk5eZOpYVIAeKmXFRQXGiA54taPMv7SR6YZ1e','Iliyan Angelov','5353535353',NULL,'/uploads/avatars/avatar-2-88c9e41f-2d5d-48ca-b750-52481e8ebcfb.webp','VND',1,0,NULL,NULL,0,NULL,0,0.00,NULL,NULL,0,'2025-12-05 23:05:01','2025-12-09 23:57:13',0,NULL),(5,2,'staff@gnxsoft.com','$2b$12$kECPHSugasjpQZUu5nhX2ecsmI6GyBpeAjkaIQUds2fsPSLNgDWAG','Lena Angelova','75557575',NULL,NULL,'VND',1,0,NULL,NULL,0,NULL,0,0.00,NULL,NULL,0,'2025-12-06 23:05:01','2025-12-06 23:05:01',0,'2025-12-06 23:05:01');
|
|
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `webhook_deliveries`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `webhook_deliveries`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `webhook_deliveries` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`webhook_id` int NOT NULL,
|
|
`event_type` varchar(100) NOT NULL,
|
|
`event_id` varchar(255) NOT NULL,
|
|
`status` enum('pending','success','failed','retrying') NOT NULL,
|
|
`payload` json NOT NULL,
|
|
`response_status` int DEFAULT NULL,
|
|
`response_body` text,
|
|
`error_message` text,
|
|
`attempt_count` int NOT NULL,
|
|
`next_retry_at` datetime DEFAULT NULL,
|
|
`delivered_at` datetime DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `ix_webhook_deliveries_event_type` (`event_type`),
|
|
KEY `ix_webhook_deliveries_webhook_id` (`webhook_id`),
|
|
KEY `ix_webhook_deliveries_id` (`id`),
|
|
KEY `ix_webhook_deliveries_event_id` (`event_id`),
|
|
KEY `ix_webhook_deliveries_status` (`status`),
|
|
KEY `ix_webhook_deliveries_created_at` (`created_at`),
|
|
CONSTRAINT `webhook_deliveries_ibfk_1` FOREIGN KEY (`webhook_id`) REFERENCES `webhooks` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `webhook_deliveries`
|
|
--
|
|
|
|
LOCK TABLES `webhook_deliveries` WRITE;
|
|
/*!40000 ALTER TABLE `webhook_deliveries` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `webhook_deliveries` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `webhooks`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `webhooks`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `webhooks` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(255) NOT NULL,
|
|
`url` varchar(500) NOT NULL,
|
|
`secret` varchar(255) NOT NULL,
|
|
`events` json NOT NULL,
|
|
`status` enum('active','inactive','paused') NOT NULL,
|
|
`retry_count` int NOT NULL,
|
|
`timeout_seconds` int NOT NULL,
|
|
`description` text,
|
|
`created_by` int DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_webhooks_id` (`id`),
|
|
KEY `ix_webhooks_status` (`status`),
|
|
CONSTRAINT `webhooks_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `webhooks`
|
|
--
|
|
|
|
LOCK TABLES `webhooks` WRITE;
|
|
/*!40000 ALTER TABLE `webhooks` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `webhooks` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `workflow_instances`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `workflow_instances`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `workflow_instances` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`workflow_id` int NOT NULL,
|
|
`booking_id` int DEFAULT NULL,
|
|
`room_id` int DEFAULT NULL,
|
|
`user_id` int DEFAULT NULL,
|
|
`status` varchar(50) NOT NULL,
|
|
`started_at` datetime NOT NULL,
|
|
`completed_at` datetime DEFAULT NULL,
|
|
`due_date` datetime DEFAULT NULL,
|
|
`meta_data` json DEFAULT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `workflow_id` (`workflow_id`),
|
|
KEY `booking_id` (`booking_id`),
|
|
KEY `room_id` (`room_id`),
|
|
KEY `user_id` (`user_id`),
|
|
KEY `ix_workflow_instances_id` (`id`),
|
|
CONSTRAINT `workflow_instances_ibfk_1` FOREIGN KEY (`workflow_id`) REFERENCES `workflows` (`id`),
|
|
CONSTRAINT `workflow_instances_ibfk_2` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`),
|
|
CONSTRAINT `workflow_instances_ibfk_3` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`),
|
|
CONSTRAINT `workflow_instances_ibfk_4` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `workflow_instances`
|
|
--
|
|
|
|
LOCK TABLES `workflow_instances` WRITE;
|
|
/*!40000 ALTER TABLE `workflow_instances` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `workflow_instances` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Table structure for table `workflows`
|
|
--
|
|
|
|
DROP TABLE IF EXISTS `workflows`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!50503 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `workflows` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`workflow_type` enum('pre_arrival','room_preparation','maintenance','guest_communication','follow_up','custom') NOT NULL,
|
|
`status` enum('active','inactive','archived') NOT NULL,
|
|
`trigger` enum('booking_created','booking_confirmed','check_in','check_out','maintenance_request','guest_message','manual','scheduled') NOT NULL,
|
|
`trigger_config` json DEFAULT NULL,
|
|
`steps` json NOT NULL,
|
|
`sla_hours` int DEFAULT NULL,
|
|
`is_active` tinyint(1) NOT NULL,
|
|
`created_by` int NOT NULL,
|
|
`created_at` datetime NOT NULL,
|
|
`updated_at` datetime NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `created_by` (`created_by`),
|
|
KEY `ix_workflows_id` (`id`),
|
|
CONSTRAINT `workflows_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
|
|
--
|
|
-- Dumping data for table `workflows`
|
|
--
|
|
|
|
LOCK TABLES `workflows` WRITE;
|
|
/*!40000 ALTER TABLE `workflows` DISABLE KEYS */;
|
|
/*!40000 ALTER TABLE `workflows` ENABLE KEYS */;
|
|
UNLOCK TABLES;
|
|
|
|
--
|
|
-- Dumping routines for database 'luxury_hotel_db'
|
|
--
|
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
|
|
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
|
|
|
-- Dump completed on 2025-12-10 2:00:28
|