-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jun 04, 2026 at 09:49 PM
-- Server version: 10.4.32-MariaDB
-- PHP Version: 8.2.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!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 */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `kevronapartments`
--

-- --------------------------------------------------------

--
-- Table structure for table `abandoned_bookings`
--

CREATE TABLE `abandoned_bookings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `session_id` varchar(255) DEFAULT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `check_in_date` date DEFAULT NULL,
  `check_out_date` date DEFAULT NULL,
  `guest_name` varchar(255) DEFAULT NULL,
  `guest_email` varchar(255) DEFAULT NULL,
  `guest_phone` varchar(255) DEFAULT NULL,
  `last_completed_step` int(11) NOT NULL DEFAULT 1,
  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`payload`)),
  `recovered` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `about_media`
--

CREATE TABLE `about_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED DEFAULT NULL,
  `file_path` varchar(255) DEFAULT NULL,
  `alt_text` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `about_sections`
--

CREATE TABLE `about_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `body` text DEFAULT NULL,
  `cta_label` varchar(255) DEFAULT NULL,
  `cta_url` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `about_sections`
--

INSERT INTO `about_sections` (`id`, `section_key`, `title`, `subtitle`, `body`, `cta_label`, `cta_url`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'hero', 'About Kevron Suites and Apartments', 'Discover Kevron Suites and Apartments, a premium serviced-apartment brand offering luxury 1, 2, 3 and 4 bedroom accommodation in Adeniyi Jones, Ikeja, Lagos — designed for comfort, convenience, smart living and memorable guest experiences.', 'Welcome to Kevron Suites and Apartments, where premium hospitality meets modern, flexible urban living. Nestled in the heart of Ikeja, we offer refined serviced accommodation designed specifically for international travelers, corporate executives, relocating families, and staycation guests.', 'Explore Apartments', '/apartments', 1, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 'brand_story', 'The Kevron Story & Vision', 'A new hospitality standard in mainland Lagos, designed around space, privacy, and smart convenience.', 'Kevron Suites and Apartments was created to provide guests with a premium serviced-apartment experience in Ikeja, Lagos. Starting from Adeniyi Jones, the brand brings together luxury apartment living, modern comfort, smart access, guest support and convenient airport access for travellers who want more space, privacy and flexibility than a standard hotel room.\n\nAs a newly launched hospitality brand, our premier branch at Regina Coker Street and Ogunlowo Street, Adeniyi Jones, serves as our flagship foundation. By offering fully equipped en-suite apartments with premium features like dual backup generator networks, automated smart keyless locks, slate-bed snooker tables, and PlayStation 5 consoles, we bridge the gap between boutique luxury hotels and private smart-home comfort.', 'View Location Guide', '/location-neighbourhood-guide-ikeja', 1, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 'guest_experience', 'Our Guest Experience Philosophy', 'A professionally managed serviced residence designed to make you feel right at home.', 'We want guests to feel at home while enjoying the structure and support of a professionally managed serviced apartment. Whether the stay is for business, relocation, family travel, a weekend break or a corporate assignment, Kevron Suites and Apartments is designed to provide space, comfort and convenience.\n\nOur guest services team is dedicated to providing proactive, responsive communication, helping arrange secured airport transfers and executive car rentals, and ensuring your rooms are meticulously maintained throughout your stay.', 'View Services', '/guest-services', 1, 3, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 'future_expansion', 'Scalable Design & Future Expansion', 'The foundation of a premium multi-location brand built for long-term growth.', 'Kevron Suites and Apartments is being developed as a scalable serviced-apartment brand. The Adeniyi Jones, Ikeja location is the first branch, with the website and booking system structured to support additional locations, apartment types, amenities, pricing rules, galleries, virtual tours and guest services as the business expands.', 'WhatsApp Enquiry', 'https://wa.me/2348082131985', 1, 4, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 'final_cta', 'Experience Kevron Suites and Apartments in Ikeja', 'Book your stay designed around comfort, convenience, smart living and premium guest support.', 'Explore our luxury 1, 2, 3 and 4 bedroom serviced apartments in Adeniyi Jones, Ikeja and choose a premium, security-conscious lodging partner for your next Lagos visit.', 'Book Your Stay Now', '/booking', 1, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `accent_themes`
--

CREATE TABLE `accent_themes` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `primary_colour` varchar(255) NOT NULL,
  `secondary_colour` varchar(255) NOT NULL,
  `luxury_colour` varchar(255) NOT NULL,
  `surface_hover_colour_light` varchar(255) NOT NULL,
  `surface_hover_colour_dark` varchar(255) NOT NULL,
  `focus_colour` varchar(255) NOT NULL,
  `scrollbar_colour` varchar(255) NOT NULL,
  `gradient_start` varchar(255) NOT NULL,
  `gradient_end` varchar(255) NOT NULL,
  `is_default` tinyint(1) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `accent_themes`
--

INSERT INTO `accent_themes` (`id`, `name`, `slug`, `primary_colour`, `secondary_colour`, `luxury_colour`, `surface_hover_colour_light`, `surface_hover_colour_dark`, `focus_colour`, `scrollbar_colour`, `gradient_start`, `gradient_end`, `is_default`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Royal Blue', 'royal', '#2B3192', '#1FADEA', '#D6A84F', '#EEF5FF', '#172060', '#1FADEA', '#2B3192', '#2B3192', '#1FADEA', 1, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(2, 'Sky Cyan', 'cyan', '#1FADEA', '#2B3192', '#D6A84F', '#EBF8FF', '#12245C', '#2B3192', '#1FADEA', '#1FADEA', '#2B3192', 0, 1, 2, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(3, 'Champagne Gold', 'gold', '#D6A84F', '#2B3192', '#1FADEA', '#FFFBEB', '#3D2E14', '#2B3192', '#D6A84F', '#D6A84F', '#2B3192', 0, 1, 3, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 'Midnight Navy', 'navy', '#080D2B', '#1FADEA', '#D6A84F', '#EEF5FF', '#0C1032', '#1FADEA', '#080D2B', '#080D2B', '#1FADEA', 0, 1, 4, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(5, 'Emerald Stay', 'emerald', '#16A34A', '#2B3192', '#D6A84F', '#F0FDF4', '#0C2B14', '#2B3192', '#16A34A', '#16A34A', '#2B3192', 0, 1, 5, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(6, 'Warm Amber', 'amber', '#F59E0B', '#2B3192', '#D6A84F', '#FFFBEB', '#3D2305', '#2B3192', '#F59E0B', '#F59E0B', '#2B3192', 0, 1, 6, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_audits`
--

CREATE TABLE `accessibility_audits` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `auditor_name` varchar(255) NOT NULL,
  `audit_date` date NOT NULL,
  `scope` varchar(255) DEFAULT NULL,
  `score` decimal(5,2) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_audit_findings`
--

CREATE TABLE `accessibility_audit_findings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `accessibility_audit_id` bigint(20) UNSIGNED NOT NULL,
  `wcag_criterion` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `page_url` varchar(255) DEFAULT NULL,
  `severity` varchar(255) NOT NULL DEFAULT 'medium',
  `recommendation` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_feedback`
--

CREATE TABLE `accessibility_feedback` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `full_name` varchar(255) DEFAULT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `affected_page_or_feature` varchar(255) DEFAULT NULL,
  `issue_description` text NOT NULL,
  `assistive_technology_used` varchar(255) DEFAULT NULL,
  `device_browser` varchar(255) DEFAULT NULL,
  `urgency` varchar(255) NOT NULL DEFAULT 'medium',
  `upload_path` varchar(255) DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'reported',
  `assigned_to` varchar(255) DEFAULT NULL,
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_issues`
--

CREATE TABLE `accessibility_issues` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `page_or_component` varchar(255) NOT NULL,
  `wcag_criterion` varchar(255) DEFAULT NULL,
  `severity` varchar(255) NOT NULL DEFAULT 'medium',
  `user_impact` text DEFAULT NULL,
  `evidence` text DEFAULT NULL,
  `reported_by` varchar(255) DEFAULT NULL,
  `assigned_to` varchar(255) DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'reported',
  `due_date` date DEFAULT NULL,
  `fix_notes` text DEFAULT NULL,
  `retest_result` text DEFAULT NULL,
  `closed_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_remediation_tasks`
--

CREATE TABLE `accessibility_remediation_tasks` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `accessibility_issue_id` bigint(20) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `assigned_to` varchar(255) DEFAULT NULL,
  `due_date` date DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `closed_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_statements`
--

CREATE TABLE `accessibility_statements` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `target_standard` varchar(255) NOT NULL DEFAULT 'WCAG 2.2',
  `target_level` varchar(255) NOT NULL DEFAULT 'AA',
  `current_status` varchar(255) NOT NULL DEFAULT 'draft',
  `effective_date` date DEFAULT NULL,
  `last_updated_at` timestamp NULL DEFAULT NULL,
  `last_reviewed_at` timestamp NULL DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `accessibility_statements`
--

INSERT INTO `accessibility_statements` (`id`, `title`, `slug`, `summary`, `target_standard`, `target_level`, `current_status`, `effective_date`, `last_updated_at`, `last_reviewed_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Accessibility Statement', 'accessibility-statement', 'Kevron Suites and Apartments is committed to providing a website and guest experience that is accessible, usable and welcoming for all guests, including people with disabilities and users of assistive technologies.', 'WCAG 2.2', 'AA', 'partially_tested', '2026-06-01', '2026-06-04 11:23:14', '2026-06-04 11:23:14', '1.0', 'published', 'Digital Accessibility Adviser', '2026-06-04 11:23:14', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_statement_sections`
--

CREATE TABLE `accessibility_statement_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `accessibility_statement_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `accessibility_statement_sections`
--

INSERT INTO `accessibility_statement_sections` (`id`, `accessibility_statement_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, 'commitment', '1. Our Commitment and Inclusivity Goal', '<p>Kevron Suites and Apartments (\"we\", \"us\", or \"our\") believes that everyone deserves a seamless, comfortable, and dignified digital and physical stay experience. We are progressively working towards making our serviced-apartment booking platform, guest dashboard, and physical facilities easy to navigate and accessible for all users, including those with visual, auditory, motor, or cognitive impairments.</p><p>We aim to align our digital services with the internationally recognized <strong>Web Content Accessibility Guidelines (WCAG) 2.2 Level AA</strong> standard, and continue to proactively audit and adapt our systems to lower operational barriers.</p>', 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, 'standard_target', '2. Accessibility Standard Targets', '<p>While full conformance is an ongoing journey of remediation and testing, our specific targets include:\n                <ul>\n                    <li><strong>Conformance Goal:</strong> WCAG 2.2 Level AA targets across all primary booking, account management, and informational flows.</li>\n                    <li><strong>Continuous Improvement:</strong> Regularly auditing code, semantic structure, and media elements to resolve identified accessibility issues.</li>\n                    <li><strong>Assessment Auditing:</strong> Incorporating automated diagnostic scans alongside manual keyboard and screen-reader test evaluations.</li>\n                </ul></p>', 2, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 1, 'website_features', '3. Implemented Digital Accessibility Features', '<p>Our website incorporates several digital accessibility practices:\n                <ul>\n                    <li><strong>Semantic HTML Structure:</strong> Logical sequence of sections utilizing descriptive tags like <code>&lt;header&gt;</code>, <code>&lt;main&gt;</code>, <code>&lt;section&gt;</code>, and <code>&lt;footer&gt;</code>.</li>\n                    <li><strong>Keyboard Accessibility:</strong> Focus elements and active widgets can be fully operated via tab and standard keyboard keys.</li>\n                    <li><strong>Skip-to-Content:</strong> A keyboard-accessible skip link is active to bypass repetitive navigation header blocks.</li>\n                    <li><strong>Responsive Layouts:</strong> Dynamic layout scaling supports up to 200% browser magnification without horizontal scroll traps or overlapping text.</li>\n                    <li><strong>Prefers-Reduced-Motion:</strong> Immediate suppression of high-GPU GSAP scroll triggers and autoplay videos when device parameters restrict motion.</li>\n                </ul></p>', 3, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 1, 'motion_animation_3d', '4. Motion, 3D Virtual Tours, and Parallax Fallbacks', '<p>To ensure animations do not create barriers:\n                <ul>\n                    <li><strong>Animation Control:</strong> You can completely disable dynamic transitions or GSAP scrolling effects via our accessibility options.</li>\n                    <li><strong>3D Fallbacks:</strong> Essential apartment booking, nightly prices, and floor layout descriptions do not require 3D virtual tour functionality. High-contrast static floor plans and fully descriptive image alternatives are served for all serviced apartment categories.</li>\n                    <li><strong>No Auto-Play Media:</strong> All videos and media elements are strictly click-to-play, preventing unexpected sensory or audio triggers.</li>\n                </ul></p>', 4, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 1, 'known_limitations', '5. Known Accessibility Limitations and Roadmap', '<p>We recognize that digital platforms are continuously evolving, and some legacy or third-party features may present temporary barriers:\n                <ul>\n                    <li><strong>Virtual Tour Keyboards:</strong> Our interactive 360° virtual tours are currently undergoing key navigation remediation. Static floor plans are provided.</li>\n                    <li><strong>Third-Party Integrations:</strong> External payment gateways, Google Map embeds, and WhatsApp chat icons may not fully conform to Level AA requirements. Alternative checkout support is available.</li>\n                    <li><strong>PDF Tags:</strong> Certain legacy invoices and reservation receipt downloads may lack complete screen-reader tag hierarchies. We are actively auditing these document assets.</li>\n                </ul>\n                If you encounter any barrier, please utilize our feedback process below for alternative accommodations.</p>', 5, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_statement_versions`
--

CREATE TABLE `accessibility_statement_versions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `accessibility_statement_id` bigint(20) UNSIGNED NOT NULL,
  `version` varchar(255) NOT NULL,
  `changed_by` varchar(255) DEFAULT NULL,
  `change_notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_statuses`
--

CREATE TABLE `accessibility_statuses` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` varchar(255) DEFAULT NULL,
  `color` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `accessibility_statuses`
--

INSERT INTO `accessibility_statuses` (`id`, `name`, `description`, `color`, `created_at`, `updated_at`) VALUES
(1, 'draft', 'Draft statement under review', 'gray', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'published', 'Approved and published to the website', 'success', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 'archived', 'Archived historical statements', 'danger', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_support_requests`
--

CREATE TABLE `accessibility_support_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `requested_support_type` varchar(255) NOT NULL,
  `details` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'submitted',
  `assigned_to` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `accessibility_widget_settings`
--

CREATE TABLE `accessibility_widget_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `selected_contrast` varchar(255) NOT NULL DEFAULT 'normal',
  `selected_font_size` int(11) NOT NULL DEFAULT 100,
  `prefers_reduced_motion` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `add_on_services`
--

CREATE TABLE `add_on_services` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `price` decimal(12,2) NOT NULL,
  `is_per_night` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `add_on_services`
--

INSERT INTO `add_on_services` (`id`, `name`, `slug`, `description`, `price`, `is_per_night`, `created_at`, `updated_at`) VALUES
(1, 'Airport Pickup — MM1 / MM2 (Local)', 'airport-pickup-local', 'Standard pickup from Murtala Muhammed Local Airport (MM1/MM2) with a premium sedan.', 15000.00, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'Airport Pickup — International Terminal', 'airport-pickup-intl', 'Premium pickup from Murtala Muhammed International Airport with an executive SUV.', 25000.00, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'Executive Car Rental with Driver', 'car-rental-driver', 'Dedicated luxury SUV with a professional security-trained driver for local transport within Lagos (per day).', 50000.00, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 'Executive Laundry & Pressing Package', 'executive-laundry', 'Unlimited wash, dry, and professional pressing service for standard clothing during your stay.', 10000.00, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `airports`
--

CREATE TABLE `airports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `code` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `airports`
--

INSERT INTO `airports` (`id`, `name`, `code`, `description`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'MM1 Local Terminal', 'MM1', 'Domestic Airport Terminal 1, Ikeja, Lagos.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'MM2 Local Terminal', 'MM2', 'Domestic Airport Terminal 2, Ikeja, Lagos.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'Murtala Muhammed International Airport', 'MMIA', 'Primary International Airport Terminal, Ikeja, Lagos.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `airport_pickup_requests`
--

CREATE TABLE `airport_pickup_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `pickup_airport` varchar(255) NOT NULL,
  `flight_number` varchar(255) DEFAULT NULL,
  `arrival_time` datetime NOT NULL,
  `guests_count` int(11) NOT NULL,
  `luggage_count` int(11) NOT NULL,
  `special_instructions` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `amenities`
--

CREATE TABLE `amenities` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `category_id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon_name` varchar(255) NOT NULL,
  `short_description` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `availability_type` varchar(255) NOT NULL DEFAULT 'included',
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `amenities`
--

INSERT INTO `amenities` (`id`, `category_id`, `name`, `slug`, `icon_name`, `short_description`, `description`, `status`, `availability_type`, `is_featured`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 6, 'Air conditioning', 'air-conditioning', 'wind', 'Individual split inverter AC systems in all en-suite bedrooms and spacious living rooms.', 'Beat the Lagos heat with ultra-quiet, energy-efficient split unit inverter air conditioners customizable to your personal climate preference in every section of the suite.', 'active', 'included', 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(2, 6, 'Private Balconies', 'private-balcony', 'square', 'En-suite private balconies offering fresh air and views of Adeniyi Jones residential perimeter.', 'Relax on your spacious private balcony, designed for serene morning coffee sessions or peaceful evening winding-down moments looking over the neighborhood.', 'active', 'included', 0, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(3, 6, 'Lounge Sofa Seating', 'lounge-sofa-seating', 'armchair', NULL, NULL, 'active', 'included', 0, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(4, 7, '24-hour power supply', '24-hour-power-supply', 'zap', 'Uninterrupted power supply with active dual backup auto-generator systems.', 'Enjoy seamless, continuous utility operations. Backed by direct grid connection, an industrial silent dual auto-changeover generator fleet, and an instant inverter backup setup, your power stays stable.', 'active', 'included', 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(5, 7, 'High-Speed Wi-Fi', 'high-speed-wi-fi', 'wifi', NULL, NULL, 'active', 'included', 0, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(6, 3, 'Modern kitchen', 'fully-equipped-kitchen', 'soup', 'Gourmet kitchens with marble countertops, gas cookers, microwave, and deep fridge.', 'Prepare custom meals in our beautiful open-plan kitchens complete with top-tier heat extractors, modern built-in ovens, premium cookware, complete dining cutlery, and a large double-door refrigerator.', 'active', 'included', 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(7, 3, 'Washing Machine & Dryer', 'washing-machine-dryer', 'washing-machine', NULL, NULL, 'active', 'included', 0, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(8, 4, 'PlayStation 5 Console', 'playstation-5-console', 'gamepad-2', 'In-suite PS5 console zones loaded with the latest multiplayer and sports titles.', 'Unwind in the evening or entertain guests with our modern PlayStation 5 console setup, complete with 4K UHD smart screens, dual controllers, and premium games like FC26, NBA, and racing favorites.', 'active', 'included', 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(9, 4, 'Professional Snooker Table', 'professional-snooker-table', 'circle-dot', 'High-quality slate-bed snooker table in our executive lounge.', 'Enjoy friendly matches or structured recreation on our premium 8ft slate-bed snooker table with tournament-grade felt, professional cues, and premium accessory sets.', 'active', 'included', 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(10, 4, 'Ultra HD Smart TVs', 'ultra-hd-smart-tvs', 'tv', 'High-definition flat screens with active DSTV premium, Netflix, and Youtube.', 'Watch your favorite live sports, breaking news, or movies on our massive 4K Smart TVs installed in the main living lounges and en-suite master bedrooms, pre-loaded with streaming options.', 'active', 'included', 0, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(11, 8, 'Smart locks', 'keyless-smart-locks', 'key-round', 'Digital high-security deadbolt locks with temporary visitor access codes.', 'Features state-of-the-art secure digital deadbolt locks. Administer one-time temporary access codes for housekeeping or permitted visitors, offering complete entry logs for your peace of mind.', 'active', 'included', 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(12, 8, '24/7 CCTV Coverage', '24-7-cctv-coverage', 'eye', 'Comprehensive external perimeter and corridor camera surveillance.', 'Our highly secure environment is actively monitored with continuous high-definition camera arrays surveying the external gates, fences, car parks, stairways, and corridors.', 'active', 'included', 1, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(13, 8, 'Video Intercom Doorbell', 'video-intercom-doorbell', 'phone-call', 'Smart intercom doorbells to see and speak to visitors from inside the lounge.', 'Screen incoming callers safely from the comfort of your living space. The integrated smart video screen lets you communicate clearly with visitors before opening your door.', 'active', 'included', 0, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(14, 6, 'Luxury bedrooms', 'luxury-bedrooms', 'bed', 'King-sized en-suite bedrooms with orthopedic mattresses and premium Egyptian cotton linens.', 'Experience restorative sleep with our premium master bedrooms featuring blackout drapes, silent-running split AC systems, fine oak wardrobe closets, ambient warm LED backlights, and double-padded pillows for ultimate relaxation.', 'active', 'included', 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(15, 6, 'Seat-out area', 'seat-out-area', 'armchair', 'Relaxing outdoor seat-out terrace and cozy lounge spaces for open-air rest.', 'Enjoy our nicely designed open-air seat-out terrace featuring high-quality weather-resistant lounge sets, perfect for relaxing conversations or catching the cool Lagos breeze.', 'active', 'included', 0, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(16, 7, 'Wi-Fi network', 'wi-fi-network', 'wifi', 'Corporate-grade unlimited Wi-Fi cover across all apartments and common lounges.', 'Stay fully connected with our high-speed wireless network available throughout the entire property, designed to support multiple devices concurrently without drops.', 'active', 'included', 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(17, 7, 'High-speed internet', 'high-speed-internet', 'gauge', 'Fiber-optic broadband backing suitable for remote work, streaming, and business.', 'Power your remote work, Zoom conferences, and Ultra HD streaming with corporate-grade high-speed fiber broadband. Includes backup network providers to guarantee stable connectivity.', 'active', 'included', 1, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(18, 3, 'Washing machine', 'washing-machine', 'utility', 'In-unit fully automatic front-loading washing machines.', 'Maintain fresh apparel with your own private, easy-to-use automatic front-loading washing machine, supplied in every apartment.', 'active', 'included', 0, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(19, 3, 'Dryer', 'dryer', 'flame', 'In-unit electric heat tumble dryers for rapid, crisp fabric drying.', 'Dry your clothes in minutes using the premium electric heat tumble dryers included in your suite, keeping your clothes ready without reliance on weather.', 'active', 'included', 0, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(20, 3, 'Energy-efficient appliances', 'energy-efficient-appliances-kitchen', 'leaf', 'Premium A+++ grade kitchen and laundry appliances that respect utility usage.', 'All cooking hobs, micro-ovens, fridge compartments, and washing tools utilize modern eco-smart components to deliver high performance while minimizing utility waste.', 'active', 'included', 0, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(21, 4, 'Leisure area', 'leisure-area', 'party-popper', 'Sophisticated relaxation lounges and staycation social spots.', 'Perfect for group staycations, family reunions, and light executive gatherings. Our common leisure zones are beautifully furnished with deep leather couches, mood light grids, and card games.', 'active', 'included', 0, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(22, 8, 'Keyless entry', 'keyless-entry', 'key', 'Secure numeric and card keyless entry for contactless guest access.', 'Step inside your luxury suite without carrying traditional physical keys. Use personalized PIN codes, secure RFID cards, or your smartphone for hassle-free contactless access.', 'active', 'included', 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(23, 8, 'Visitor management', 'visitor-management', 'users-round', 'Controlled visitor access protocols with front-desk screening.', 'To support a controlled and quiet residential atmosphere, all visitors are registered at the secure perimeter checkpoint and screened before being cleared to access residential floors.', 'active', 'included', 0, 5, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(24, 9, 'Airport pickup on request', 'airport-pickup', 'plane-takeoff', 'Airport pickup and drop-off in clean, executive vehicles (available on demand).', 'Arrive stress-free in Lagos. Request our professional airport transit service. Covered by premium sedans or executive SUVs with security-vetted drivers direct to Adeniyi Jones.', 'active', 'on_request', 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(25, 9, 'Rented car on request', 'rented-car', 'car', 'Daily chauffeur-driven luxury cars and SUVs for local city transit.', 'Navigate Lagos with maximum comfort and security. Hire our premium executive cars or robust SUVs on a daily rate, complete with professional local drivers who know the city routes.', 'active', 'on_request', 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(26, 10, 'Close to airports', 'close-to-airports', 'plane', 'Only 8 minutes to local terminals and 15 minutes to international terminal.', 'Located in a highly strategic part of Adeniyi Jones, Ikeja. Get to the Local Terminal (MM1/MM2) in approximately 8 minutes and Murtala Muhammed International Airport in approximately 15 minutes (subject to traffic).', 'active', 'included', 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(27, 10, 'Ikeja City Mall / Shoprite', 'ikeja-city-mall', 'shopping-bag', 'Approximately 8 minutes to the premium retail and cinema hub.', 'Shop for essentials, catch new cinematic releases, or enjoy elite local and international fashion brands at the famous Ikeja City Mall, located just a short drive from the property.', 'active', 'included', 0, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(28, 10, 'Eateries', 'close-to-eateries', 'utensils', 'Surrounded by top continental and traditional restaurants in Adeniyi Jones.', 'Treat yourself to local fine dining or international cuisines. The Adeniyi Jones avenue is lined with diverse upscale cafes, continental grills, bakeries, and high-quality traditional spots.', 'active', 'included', 0, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(29, 10, 'Event centres', 'close-to-event-centres', 'sparkles', 'Easy access to key business hubs, halls, and executive meeting centers.', 'Located close to top conference rooms, meeting event spaces, and social halls in Ikeja, making it highly convenient for corporate coordinators or wedding guests.', 'active', 'included', 0, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(30, 10, 'Police station', 'close-to-police-station', 'shield-alert', 'Located approximately 3 minutes to the Memabod Police Station.', 'Sleep with peace of mind. The apartments are located in a highly secure street and benefit from close proximity (approx. 3 mins) to the local Police Station.', 'active', 'included', 0, 5, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(31, 11, 'LED lighting', 'led-lighting', 'lightbulb', '100% low-consumption warm LED bulbs to limit carbon emissions.', 'Every single spotlight, drop chandelier, and reading lamp across our suites uses modern ultra-low-consumption LED components to save energy while maintaining warm, cozy indoor styling.', 'active', 'included', 0, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(32, 11, 'Energy-efficient appliances', 'energy-efficient-appliances', 'leaf', 'Smart inverters and green devices installed to reduce utility load.', 'Our commitment to eco-friendly living includes installing modern A+++ inverter cooling units, solar water heaters, and sensory lighting in common corridors to minimize utility footprint.', 'active', 'included', 0, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(33, 12, 'Concierge', 'concierge-support', 'user-check', 'Dedicated front desk and guest relations officer on-site.', 'Our highly hospitable guest services team is on-site to assist with restaurant reservations, coordinate luggage handling, answer neighborhood questions, and support a comfortable stay.', 'active', 'included', 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(34, 12, 'WhatsApp support', 'whatsapp-support', 'message-square', 'Instant-response digital concierge channel available 24/7.', 'Get rapid solutions directly on your phone. Text our dedicated 24-hour guest desk on WhatsApp for housekeeping call-outs, utility refills, or airport booking adjustments.', 'active', 'included', 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(35, 12, 'Housekeeping request', 'housekeeping-request', 'brush', 'Daily professional cleaning and fresh linen changes on request.', 'Enjoy hotel-standard cleaning. Our meticulous housekeeping staff performs daily en-suite sweepings, bed styling, trash disposal, and linen refills upon your request.', 'active', 'included', 0, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `amenity_categories`
--

CREATE TABLE `amenity_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `amenity_categories`
--

INSERT INTO `amenity_categories` (`id`, `name`, `slug`, `icon`, `created_at`, `updated_at`) VALUES
(3, 'Kitchen and Laundry', 'kitchen-laundry', 'chef-hat', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(4, 'Entertainment', 'entertainment', 'gamepad-2', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 'Comfort', 'comfort', 'sofa', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(7, 'Power and Internet', 'power-internet', 'zap', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(8, 'Security', 'security', 'shield-check', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(9, 'Transport', 'transport', 'car', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(10, 'Location', 'location', 'map-pin', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(11, 'Sustainability', 'sustainability', 'leaf', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(12, 'Guest Support', 'guest-support', 'phone-call', '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `amenity_comparison_fields`
--

CREATE TABLE `amenity_comparison_fields` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `field_key` varchar(255) NOT NULL,
  `label` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL DEFAULT 'boolean',
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `amenity_comparison_fields`
--

INSERT INTO `amenity_comparison_fields` (`id`, `field_key`, `label`, `type`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 'bedrooms', 'Bedrooms', 'string', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'capacity', 'Max Guests', 'string', 2, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'power_24h', '24h Power Supply', 'boolean', 3, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 'wifi_fiber', 'Wi-Fi Network', 'boolean', 4, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 'kitchen_cook', 'Modern Kitchen', 'boolean', 5, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 'laundry_wash', 'Washing Machine & Dryer', 'boolean', 6, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 'ac_climate', 'Air Conditioning', 'boolean', 7, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(8, 'balcony_terrace', 'Balcony/Terrace', 'boolean', 8, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(9, 'play_snooker', 'PS5 & Snooker access', 'boolean', 9, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(10, 'smart_cctv', 'Smart Lock & CCTV Security', 'boolean', 10, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(11, 'airport_shuttle', 'Airport Pickup Service', 'string', 11, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(12, 'car_chauffeur', 'Chauffeur Car Rental', 'string', 12, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `amenity_media`
--

CREATE TABLE `amenity_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `amenity_id` bigint(20) UNSIGNED NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `apartment_types`
--

CREATE TABLE `apartment_types` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `best_for` varchar(255) DEFAULT NULL,
  `base_price_nightly` decimal(12,2) NOT NULL,
  `capacity_adults` int(11) NOT NULL,
  `capacity_children` int(11) NOT NULL,
  `bedrooms_count` int(11) NOT NULL,
  `bathrooms_count` int(11) NOT NULL,
  `amenities` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`amenities`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `apartment_types`
--

INSERT INTO `apartment_types` (`id`, `name`, `slug`, `description`, `best_for`, `base_price_nightly`, `capacity_adults`, `capacity_children`, `bedrooms_count`, `bathrooms_count`, `amenities`, `created_at`, `updated_at`) VALUES
(1, '1 Bedroom Master Suite', '1-bedroom-master-suite-ikeja', 'Perfect for solo executives or couples seeking premium luxury. Features a king-sized master bedroom, contemporary en-suite quarters, high-speed Wi-Fi, air conditioning, fully equipped modern kitchen, washing machine, and secure smart keyless entry.', 'Solo Executives & Couples', 150000.00, 2, 1, 1, 1, '[\"24-Hour Power Supply\",\"High-Speed Wi-Fi\",\"Keyless Smart Locks\",\"Air Conditioning\",\"Fully Equipped Kitchen\",\"Washing Machine & Dryer\",\"Ultra HD Smart TVs\"]', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, '2 Bedroom Luxury Apartment', '2-bedroom-luxury-apartment-ikeja', 'Ideal for business teams, staycations, or small families. Offers two elegant en-suite bedrooms, a spacious living area with luxurious seating, private balconies, keyless entry smart locks, 24-hour power, high-speed Wi-Fi, fully fitted modern kitchen, washing machine, and dedicated workspace.', 'Business Teams & Small Families', 200000.00, 4, 2, 2, 2, '[\"24-Hour Power Supply\",\"High-Speed Wi-Fi\",\"Keyless Smart Locks\",\"Air Conditioning\",\"Fully Equipped Kitchen\",\"Washing Machine & Dryer\",\"Ultra HD Smart TVs\",\"Private Balcony\"]', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, '3 Bedroom Luxury Apartment', '3-bedroom-luxury-apartment-ikeja', 'Uncompromising hospitality for larger families or corporate groups. Features three expansive en-suite bedrooms, massive open-concept living and dining area, fully equipped gourmet kitchen, washing machine/dryer, private balconies, smart locks, and access to entertainment amenities including Snooker and PlayStation 5.', 'Corporate Groups & Large Families', 250000.00, 6, 3, 3, 3, '[\"24-Hour Power Supply\",\"High-Speed Wi-Fi\",\"Keyless Smart Locks\",\"Air Conditioning\",\"Fully Equipped Kitchen\",\"Washing Machine & Dryer\",\"Ultra HD Smart TVs\",\"Private Balcony\",\"PlayStation 5 Console\",\"Professional Snooker Table\"]', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, '4 Bedroom Luxury Apartment', '4-bedroom-luxury-apartment-ikeja', 'The ultimate luxury serviced residence in Ikeja. Spans four spectacular en-suite master bedrooms, highly artistic living rooms, fully loaded gourmet kitchen, private outdoor seat-out terrace, keyless entry, smart locks, CCTV, Snooker, PlayStation 5, airport transfer coordination, and dedicated concierge.', 'Ultimate Luxury & Large Groups', 300000.00, 8, 4, 4, 4, '[\"24-Hour Power Supply\",\"High-Speed Wi-Fi\",\"Keyless Smart Locks\",\"Air Conditioning\",\"Fully Equipped Kitchen\",\"Washing Machine & Dryer\",\"Ultra HD Smart TVs\",\"Private Balcony\",\"PlayStation 5 Console\",\"Professional Snooker Table\",\"Video Intercom Doorbell\",\"24\\/7 CCTV Coverage\"]', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `apartment_type_amenity`
--

CREATE TABLE `apartment_type_amenity` (
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `amenity_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `apartment_type_amenity`
--

INSERT INTO `apartment_type_amenity` (`apartment_type_id`, `amenity_id`) VALUES
(1, 1),
(1, 4),
(1, 6),
(1, 10),
(1, 11),
(1, 12),
(1, 13),
(1, 14),
(1, 16),
(1, 17),
(1, 18),
(1, 19),
(1, 20),
(1, 22),
(1, 23),
(1, 24),
(1, 25),
(1, 26),
(1, 27),
(1, 28),
(1, 29),
(1, 30),
(1, 31),
(1, 32),
(1, 33),
(1, 34),
(1, 35),
(2, 1),
(2, 2),
(2, 4),
(2, 6),
(2, 10),
(2, 11),
(2, 12),
(2, 13),
(2, 14),
(2, 15),
(2, 16),
(2, 17),
(2, 18),
(2, 19),
(2, 20),
(2, 22),
(2, 23),
(2, 24),
(2, 25),
(2, 26),
(2, 27),
(2, 28),
(2, 29),
(2, 30),
(2, 31),
(2, 32),
(2, 33),
(2, 34),
(2, 35),
(3, 1),
(3, 2),
(3, 4),
(3, 6),
(3, 8),
(3, 9),
(3, 10),
(3, 11),
(3, 12),
(3, 13),
(3, 14),
(3, 15),
(3, 16),
(3, 17),
(3, 18),
(3, 19),
(3, 20),
(3, 21),
(3, 22),
(3, 23),
(3, 24),
(3, 25),
(3, 26),
(3, 27),
(3, 28),
(3, 29),
(3, 30),
(3, 31),
(3, 32),
(3, 33),
(3, 34),
(3, 35),
(4, 1),
(4, 2),
(4, 4),
(4, 6),
(4, 8),
(4, 9),
(4, 10),
(4, 11),
(4, 12),
(4, 13),
(4, 14),
(4, 15),
(4, 16),
(4, 17),
(4, 18),
(4, 19),
(4, 20),
(4, 21),
(4, 22),
(4, 23),
(4, 24),
(4, 25),
(4, 26),
(4, 27),
(4, 28),
(4, 29),
(4, 30),
(4, 31),
(4, 32),
(4, 33),
(4, 34),
(4, 35);

-- --------------------------------------------------------

--
-- Table structure for table `apartment_type_media`
--

CREATE TABLE `apartment_type_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED NOT NULL,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `apartment_type_media`
--

INSERT INTO `apartment_type_media` (`id`, `apartment_type_id`, `media_asset_id`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 1, 2, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 1, 3, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 1, 4, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 1, 5, 5, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 2, 6, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(7, 2, 7, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(8, 2, 8, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(9, 2, 9, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(10, 2, 10, 5, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(11, 3, 11, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(12, 3, 12, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(13, 3, 13, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(14, 3, 14, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(15, 3, 15, 5, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(16, 4, 16, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(17, 4, 17, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(18, 4, 18, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(19, 4, 19, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(20, 4, 20, 5, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(21, 4, 21, 6, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `arrival_time_submissions`
--

CREATE TABLE `arrival_time_submissions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `arrival_time` varchar(255) NOT NULL,
  `travel_mode` varchar(255) DEFAULT NULL,
  `landmark` varchar(255) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `assembly_points`
--

CREATE TABLE `assembly_points` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `direction_from_property` text DEFAULT NULL,
  `accessibility_note` text DEFAULT NULL,
  `backup_assembly_point_id` bigint(20) UNSIGNED DEFAULT NULL,
  `verified_at` timestamp NULL DEFAULT NULL,
  `verified_by` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `assembly_points`
--

INSERT INTO `assembly_points` (`id`, `location_id`, `name`, `description`, `direction_from_property`, `accessibility_note`, `backup_assembly_point_id`, `verified_at`, `verified_by`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, 'Main Parking Safe Assembly Point', 'The designated safe muster station is situated in the main open-air parking lot, away from high-voltage cables and building overhangs.', 'Exit the main glass reception lobby, proceed straight through the block pathway to the secure front perimeter gate.', 'Fully step-free flat paved terrain with wide emergency vehicle turning access.', NULL, '2026-06-04 11:23:14', 'HSE Compliance Lead', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `assistive_technology_tests`
--

CREATE TABLE `assistive_technology_tests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `technology_name` varchar(255) NOT NULL,
  `tester_name` varchar(255) NOT NULL,
  `test_date` date NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'passed',
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `audit_logs`
--

CREATE TABLE `audit_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `action` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `availability_blocks`
--

CREATE TABLE `availability_blocks` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `unit_id` bigint(20) UNSIGNED NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `reason` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `bank_accounts`
--

CREATE TABLE `bank_accounts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `bank_name` varchar(255) NOT NULL,
  `account_name` varchar(255) NOT NULL,
  `account_number` varchar(255) NOT NULL,
  `currency` varchar(255) NOT NULL DEFAULT 'NGN',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `public_display` tinyint(1) NOT NULL DEFAULT 1,
  `approved_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bank_accounts`
--

INSERT INTO `bank_accounts` (`id`, `bank_name`, `account_name`, `account_number`, `currency`, `is_active`, `public_display`, `approved_by`, `created_at`, `updated_at`) VALUES
(1, 'Zenith Bank', 'Kevron Suites and Apartments', '1311514523', 'NGN', 1, 1, 'Finance Director', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Zenith Bank', 'Kevron Suites and Apartments', '5061771108', 'GBP', 1, 1, 'Finance Director', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 'Zenith Bank', 'Kevron Suites and Apartments', '5075906521', 'USD', 1, 1, 'Finance Director', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `bank_transfer_uploads`
--

CREATE TABLE `bank_transfer_uploads` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `uploaded_by` varchar(255) NOT NULL,
  `file_path` varchar(255) NOT NULL,
  `file_size` int(11) NOT NULL,
  `mime_type` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `verified_at` datetime DEFAULT NULL,
  `verified_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `blog_authors`
--

CREATE TABLE `blog_authors` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `role` varchar(255) DEFAULT NULL,
  `bio` text DEFAULT NULL,
  `avatar_path` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_authors`
--

INSERT INTO `blog_authors` (`id`, `name`, `slug`, `role`, `bio`, `avatar_path`, `created_at`, `updated_at`) VALUES
(1, 'Kevron Suites and Apartments Editorial Team', 'kevron-editorial-team', 'Editorial & Guest Services', 'The official editorial team of Kevron Suites and Apartments. We compile travel guides, airport transit resources, business lodging strategies, and neighborhood security reviews to ensure your stay in Adeniyi Jones, Ikeja is safe and comfortable.', 'pictures/dining.jpg', '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `blog_categories`
--

CREATE TABLE `blog_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_categories`
--

INSERT INTO `blog_categories` (`id`, `name`, `slug`, `created_at`, `updated_at`) VALUES
(1, 'Lagos Travel Guide', 'lagos-travel-guide', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'Corporate Stays', 'corporate-stays', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'Ikeja Travel Guide', 'ikeja-travel-guide', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 'Airport Stay Guide', 'airport-stay-guide', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 'Business Travel', 'business-travel', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(6, 'Family Stay', 'family-stay', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(7, 'Luxury Staycation', 'luxury-staycation', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(8, 'Corporate Accommodation', 'corporate-accommodation', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(9, 'Local Attractions', 'local-attractions', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(10, 'Safety and Comfort', 'safety-comfort', '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `blog_events`
--

CREATE TABLE `blog_events` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `event_type` varchar(255) NOT NULL,
  `blog_post_id` bigint(20) UNSIGNED DEFAULT NULL,
  `query` varchar(255) DEFAULT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `blog_posts`
--

CREATE TABLE `blog_posts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `category_id` bigint(20) UNSIGNED NOT NULL,
  `author_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `content` longtext NOT NULL,
  `thumbnail` varchar(255) DEFAULT NULL,
  `seo_title` varchar(255) DEFAULT NULL,
  `seo_description` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `is_recommended` tinyint(1) NOT NULL DEFAULT 0,
  `reading_time_minutes` int(11) NOT NULL DEFAULT 5,
  `published_at` timestamp NULL DEFAULT NULL,
  `updated_content_at` timestamp NULL DEFAULT NULL,
  `canonical_url` varchar(255) DEFAULT NULL,
  `robots` varchar(255) NOT NULL DEFAULT 'index, follow',
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `blog_author_id` bigint(20) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_posts`
--

INSERT INTO `blog_posts` (`id`, `category_id`, `author_id`, `title`, `slug`, `summary`, `content`, `thumbnail`, `seo_title`, `seo_description`, `created_at`, `updated_at`, `status`, `is_featured`, `is_recommended`, `reading_time_minutes`, `published_at`, `updated_content_at`, `canonical_url`, `robots`, `sort_order`, `blog_author_id`) VALUES
(1, 1, 1, 'Top Luxury Attractions in Ikeja, Lagos', 'top-luxury-attractions-ikeja-lagos', 'Discover the best dining, shopping, and entertainment spots near Adeniyi Jones, Ikeja.', 'Lagos, particularly Ikeja, is a vibrant hub of activities. When staying at Kevron Suites and Apartments, you are in close proximity to premier locations. The Ikeja City Mall (Shoprite) is just about 8 minutes away, offering access to high-end shopping, cinema, and eateries. For food lovers, Adeniyi Jones features numerous executive restaurants and continental cafes. The environment is highly accessible, making it easy to enjoy both local hospitality and modern living.', 'dining.jpg', 'Executive Attractions in Ikeja | Kevron Apartments Guide', 'Explore nearby luxury restaurants, shopping malls, and travel guides near Adeniyi Jones, Ikeja when staying at Kevron Apartments.', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 'draft', 0, 0, 5, NULL, NULL, NULL, 'index, follow', 0, NULL),
(2, 3, 1, 'Best Places to Stay in Ikeja, Lagos: A Guide for Short-Stay Guests', 'best-places-to-stay-in-ikeja-lagos-short-stay-guide', 'Explore the premier locations, accessibility hubs, and luxury serviced suites tailored for temporary visitors in Ikeja.', 'Ikeja, the bustling capital of Lagos State, is a prime destination for both corporate executives and travelers. When choosing where to stay, short-stay guests must consider key factors: proximity to central business districts, airport accessibility, stable power, and neighborhood security. \n\nAdeniyi Jones is widely recognized as one of the most prestigious and strategic residential-commercial corridors in Ikeja. Staying here grants you easy access to business complexes while offering a quieter environment than nearby Allen Avenue or Toyin Street. \n\nAt Kevron Suites and Apartments (located on Regina Coker Street and Ogunlowo Street), short-stay guests enjoy a quiet enclave within a secured perimeter. Our 1, 2, 3 and 4 bedroom apartments are designed to offer a seamless transition from a flight to a premium workspace, with fully equipped kitchens, dual backup power generators, and keyless smart door locks. It stands out as an elite option compared to generic hotel rooms.', 'master-bedroom.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 1, 0, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/best-places-to-stay-in-ikeja-lagos-short-stay-guide', 'index, follow', 0, 1),
(3, 4, 1, 'Where to Stay Near MM1 and MM2 Lagos Airport', 'where-to-stay-near-mm1-and-mm2-lagos-airport', 'A detailed guide comparing airport hotels and executive serviced suites located just minutes from Murtala Muhammed Airport.', 'For business travelers and transit passengers, landing in Lagos demands lodging that minimizes commute times. Murtala Muhammed Local Airport Terminals (MM1 and MM2) are the primary hubs for domestic flights, while the International Terminal handles transcontinental journeys. \n\nCommuting from distant parts of Lagos can be highly unpredictable due to traffic. Therefore, staying within the immediate airport periphery of Ikeja is essential. While airport road hotels are popular, smart travelers are increasingly turning to luxury serviced apartments. \n\nKevron Suites and Apartments is located approximately 8 minutes from MM1/MM2 and approximately 15 minutes from the International Terminal. This makes it an outstanding choice for travelers who want to avoid airport road congestion while enjoying home-like comforts. With our managed airport pickup and executive car rentals, you can arrive, unlock your suite keylessly, and rest without logistics worries.', 'bedroom.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 1, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/where-to-stay-near-mm1-and-mm2-lagos-airport', 'index, follow', 0, 1),
(4, 4, 1, 'Why Adeniyi Jones, Ikeja Is Convenient for Lagos Airport Travellers', 'why-adeniyi-jones-ikeja-convenient-airport-travellers', 'Understand the geographical advantages, traffic flow patterns, and security perimeter that make Adeniyi Jones a prime airport travel base.', 'Adeniyi Jones Avenue is celebrated as one of Ikeja\'s best-planned residential-commercial arteries. For international and domestic flyers, it offers an outstanding base.\n\nGeographically, Adeniyi Jones is situated to offer multiple exit routes. Unlike core airport hotel zones which can face bottleneck traffic during rush hours, drivers from Adeniyi Jones can utilize alternative inner neighborhood roads to bypass major intersections. The commute to the airport is approximately 8 to 15 minutes depending on traffic.\n\nFurthermore, staying on Regina Coker Street or Ogunlowo Street in Adeniyi Jones provides a peaceful environment away from direct airport runway noise, while keeping you 3 minutes away from Memabod Police Station. This blend of transit convenience, quiet neighborhood lifestyle, and smart-living luxury makes Kevron Suites a top-tier transit base.', 'living-room.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 0, 4, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/why-adeniyi-jones-ikeja-convenient-airport-travellers', 'index, follow', 0, 1),
(5, 5, 1, 'Why Serviced Apartments Are Ideal for Business Travellers in Lagos', 'why-serviced-apartments-are-ideal-for-business-travellers', 'Discover why executive travelers choose fully serviced apartments over standard hotel rooms to maximize productivity and space.', 'Modern business travel requires more than just a bed; it demands a functional base that supports productivity, focus, and relaxation. Standard hotel rooms often feel cramped and lack basic self-catering or laundry amenities.\n\nFully serviced apartments bridge this gap perfectly. They offer separate living and dining areas, high-speed corporate-grade Wi-Fi, fully fitted kitchens, and dedicated study workspaces. For remote workers or executives running meetings, this space is invaluable.\n\nAt Kevron Apartments, we cater specifically to the business traveler. With keyless passcode locks, continuous power, high-speed Wi-Fi, and built-in washing machines, you can manage your work schedule without interruptions. Additionally, executive add-on packages such as car rentals with drivers and in-house laundry ensure you stay sharp for your corporate engagements.', 'kitchen.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 1, 0, 7, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/why-serviced-apartments-are-ideal-for-business-travellers', 'index, follow', 0, 1),
(6, 6, 1, 'Best Family-Friendly Serviced Apartments in Ikeja', 'best-family-friendly-serviced-apartments-ikeja', 'A comprehensive review of spacious, safe, and entertaining multi-bedroom serviced residences for families visiting Lagos.', 'Traveling with family—especially with kids—requires careful accommodation planning. Traditional hotels quickly become expensive when booking multiple rooms, and they offer little common area space for children to play safely.\n\nMulti-bedroom serviced apartments are the ideal solution. A 2, 3, or 4 Bedroom Luxury Apartment allows parents and children to have their own private en-suite spaces while sharing a large living room, dining zone, and fully equipped kitchen.\n\nKevron Suites and Apartments is exceptionally family-friendly. Our 3 and 4 bedroom residences include professional slate snooker tables and PlayStation 5 consoles, keeping children and teenagers fully entertained. Located within a highly secure residential perimeter on Regina Coker Street, with smart video doorbells and 24/7 CCTV coverage, parents can rest assured that their family is secure.', 'bedroom-2.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 1, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/best-family-friendly-serviced-apartments-ikeja', 'index, follow', 0, 1),
(7, 7, 1, 'Luxury Staycation Ideas in Lagos for Couples and Families', 'luxury-staycation-ideas-in-lagos-couples-families', 'Plan the ultimate stress-free staycation right in the heart of Ikeja, complete with premium in-suite leisure and dining.', 'You do not need to fly out of Lagos to enjoy a premium vacation. A luxury staycation is the perfect way for couples or families to relax, recharge, and enjoy quality time together without travel stress.\n\nTo create the perfect staycation, seek out lodging that offers high-end leisure amenities. Key elements include spacious lounge seating, smart entertainment systems, and self-catering kitchens for cooking romantic dinners or family feasts.\n\nKevron Suites and Apartments provides a top-tier staycation experience in Ikeja. Couples can unwind in our 1 Bedroom Master Suite, while families can book our larger apartments to enjoy friendly snooker tournaments and PlayStation 5 matches. With high-speed Wi-Fi, fully climate-controlled rooms, and stable electricity, your local staycation will feel like a five-star getaway.', 'bedroom-3.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 0, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/luxury-staycation-ideas-in-lagos-couples-families', 'index, follow', 0, 1),
(8, 8, 1, 'How Companies Can Book Serviced Apartments for Staff in Ikeja', 'how-companies-book-serviced-apartments-staff-ikeja', 'A step-by-step corporate booking guide for HR, admin, and procurement managers looking for staff accommodation solutions.', 'Managing corporate travel logistics for visiting staff, expatriates, or project consultants can be challenging. HR and procurement managers often face high hotel bills and complex expense reporting.\n\nA structured corporate housing program using serviced apartments simplifies this process. Serviced apartments reduce per-night costs—especially for extended stays—while providing employees with a comfortable, productive workspace.\n\nAt Kevron Suites, we offer dedicated corporate accounts. Procurement teams can set up billing profiles, secure preferred rates, and manage bookings through a simplified verification pipeline. With 24-hour electricity, smart lock passcodes sent directly to guests, and a secure residential perimeter in Adeniyi Jones, companies can confidently book accommodation for their valuable team members.', 'living-room-2.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 1, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/how-companies-book-serviced-apartments-staff-ikeja', 'index, follow', 0, 1),
(9, 8, 1, 'Corporate Accommodation in Lagos: What Companies Should Consider', 'corporate-accommodation-lagos-what-companies-consider', 'Key metrics including internet speed, physical security, location transit, and billing transparency for business lodging.', 'When selecting a corporate lodging partner in Lagos, procurement teams must evaluate several critical factors:\n\nFirst, security is paramount. The accommodation must be in a secure residential neighborhood with gated controls, CCTV, and proximity to security support. Second, utility reliability is non-negotiable; constant power and high-speed Wi-Fi are essential for business continuity.\n\nKevron Suites and Apartments is built specifically to meet these corporate requirements in Adeniyi Jones, Ikeja. We maintain a secure residential perimeter on Regina Coker Street, utilize advanced keyless smart door locks, and provide high-speed corporate-grade Wi-Fi. Our billing processes are transparent, with detailed invoices, making expense audits easy for corporate account managers.', 'living-room-3.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 0, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/corporate-accommodation-lagos-what-companies-consider', 'index, follow', 0, 1),
(10, 9, 1, 'Things to Do Near Adeniyi Jones and Ikeja City Mall', 'things-to-do-near-adeniyi-jones-ikeja-city-mall', 'Discover the best luxury dining, high-end shopping, cinema entertainment, and local hotspots near Adeniyi Jones.', 'Adeniyi Jones, Ikeja is not just a convenient residential base; it is also close to some of Lagos\' best shopping, dining, and leisure destinations.\n\nA short 8-minute drive from Kevron Apartments brings you to the Ikeja City Mall (Shoprite), the premier shopping destination in mainland Lagos. The mall features numerous international retail stores, supermarkets, restaurants, and a multi-screen cinema.\n\nFor food lovers, Adeniyi Jones Avenue offers a wide variety of dining options, from executive continental restaurants to local cafes. If you want a more active outing, professional snooker clubs and wellness spas are nearby. Staying at Kevron Suites means you have premium entertainment options both inside your apartment and just down the road.', 'dining.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 0, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/things-to-do-near-adeniyi-jones-ikeja-city-mall', 'index, follow', 0, 1),
(11, 10, 1, 'How to Choose a Secure Serviced Apartment in Lagos', 'how-to-choose-secure-serviced-apartment-lagos', 'Essential security checks including smart door locks, perimeter safety, CCTV coverage, and neighbor proximity for travelers.', 'For travelers visiting Lagos, safety and security are top priorities. When choosing a serviced apartment, you must look beyond beautiful photos and check the physical security measures in place.\n\nA secure serviced apartment should feature: a gated, access-controlled compound; 24/7 CCTV coverage of external areas; secure keyless door locks; and proximity to police support.\n\nAt Kevron Suites and Apartments, we prioritize your safety. Located in a quiet, gated residential area on Regina Coker Street in Adeniyi Jones, our compound features a secure perimeter, 24/7 CCTV surveillance of common areas, smart video doorbells, and advanced keyless door locks. Additionally, we are located just 3 minutes from the Memabod Police Station, giving guests peace of mind during their stay.', 'bedroom-4.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 1, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/how-to-choose-secure-serviced-apartment-lagos', 'index, follow', 0, 1),
(12, 3, 1, 'Weekly and Monthly Serviced Apartments in Ikeja: What to Know', 'weekly-monthly-serviced-apartments-ikeja-what-to-know', 'A guide to long-stay bookings, utility management, housekeeping schedules, and discounts for extended stays.', 'For guests staying in Lagos for several weeks or months—such as expatriates, project consultants, or families relocating—standard hotel rooms are rarely practical. \n\nRelocating families and long-stay guests need a home-like environment. Key requirements include regular, reliable housekeeping, self-catering kitchen facilities, stable power, and a quiet, peaceful neighborhood.\n\nKevron Apartments offers flexible long-stay options. We provide discounted weekly and monthly rates for our 1, 2, 3, and 4 bedroom apartments. Housekeeping services are scheduled around your preferences, and our fully fitted kitchens help you manage dining costs. Located in a quiet residential area, our apartments are the perfect long-stay home in Ikeja.', 'bedroom-5.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 0, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/weekly-monthly-serviced-apartments-ikeja-what-to-know', 'index, follow', 0, 1),
(13, 4, 1, 'Airport Pickup and Car Rental for Serviced Apartment Guests in Lagos', 'airport-pickup-car-rental-serviced-apartment-guests-lagos', 'Learn how to coordinate secure airport pickups and rent luxury vehicles with professional drivers for a hassle-free visit.', 'Arriving in a busy metropolis like Lagos requires smooth, well-planned ground transit. Navigating public airport transport or booking regular ride-hailing services after a long flight can be stressful and exhausting.\n\nTo ensure a seamless, stress-free arrival, book a pre-arranged airport pickup. Coordinating this service directly with your accommodation provider ensures your driver is waiting for you as you exit the terminal.\n\nKevron Suites provides professional airport transit services. We offer pickup options from MM1/MM2 domestic terminals and the International Airport (MMIA) using clean, modern sedans or executive SUVs. For travel within the city, we also offer luxury car rentals with professional, security-trained drivers, allowing you to travel safely and comfortably.', 'bedroom-6.jpg', NULL, NULL, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'published', 0, 0, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'https://kevronapartments.com/blog/airport-pickup-car-rental-serviced-apartment-guests-lagos', 'index, follow', 0, 1);

-- --------------------------------------------------------

--
-- Table structure for table `blog_post_faqs`
--

CREATE TABLE `blog_post_faqs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `blog_post_id` bigint(20) UNSIGNED NOT NULL,
  `question` text NOT NULL,
  `answer` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_post_faqs`
--

INSERT INTO `blog_post_faqs` (`id`, `blog_post_id`, `question`, `answer`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 2, 'Why is Adeniyi Jones preferred for short stays in Ikeja?', 'Adeniyi Jones is clean, commercial-residential, highly accessible, and positioned between the airport and major commercial districts in Ikeja.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 2, 'What apartment configurations does Kevron offer for short-stay guests?', 'Kevron Suites offers luxury 1 Bedroom Master Suites, 2 Bedroom, 3 Bedroom, and 4 Bedroom Luxury Apartments.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 2, 'Is 24-hour electricity guaranteed during a short stay?', 'Yes, Kevron features continuous 24-hour power backed by a dual-generator auto-switch system.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 3, 'How far is Kevron Apartments from MM1 and MM2?', 'Kevron is approximately 8 minutes away from MM1/MM2 domestic terminals under standard traffic conditions.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 3, 'Do you provide airport pickup transfers?', 'Yes, airport pickups from local or international terminals can be coordinated on request with standard sedans or executive SUVs.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(6, 3, 'Can I book a room for just a few hours of transit?', 'We offer overnight rates. For short day-use transit, please coordinate with our reservation team in advance subject to availability.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(7, 4, 'What is the travel time to the International Airport terminal?', 'It is approximately 15 minutes to the Murtala Muhammed International Terminal (MMIA), subject to traffic.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(8, 4, 'Are there good restaurants and grocery stores on Adeniyi Jones?', 'Yes, Adeniyi Jones host various executive eateries, continental bistros, and well-stocked supermarkets for your convenience.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(9, 4, 'Is airport pickup secure at night?', 'Yes, our transit vehicles are chauffeured by security-vetted professional drivers who coordinate closely with our concierge team.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(10, 5, 'Is the Wi-Fi unlimited and fast?', 'Yes, every apartment is equipped with high-speed corporate-grade broadband Wi-Fi, ideal for video calls and remote work.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(11, 5, 'Can I cook my own meals in the apartment?', 'Yes, all our suites feature a fully equipped gourmet kitchen with gas cookers, microwave, fridge, and heat extractor.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(12, 5, 'Do you provide workspaces for corporate travelers?', 'Yes, our apartments include comfortable desk setups and spacious dining/living areas suitable for laptops and administrative work.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(13, 6, 'Are all bedrooms en-suite?', 'Yes, all bedrooms in our 2, 3, and 4 Bedroom Luxury Apartments are fully en-suite with modern fittings.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(14, 6, 'Do the apartments have entertainment for kids?', 'Yes, our 3 and 4 Bedroom Apartments come standard with a PlayStation 5 console and a professional snooker table.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(15, 6, 'Is there a security deposit for family bookings?', 'A refundable security deposit of ₦100,000 is required upon check-in, which is fully returned within 24 hours of checkout after inspection.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(16, 7, 'Do you offer romantic staycation packages for couples?', 'Yes, we can arrange custom staycation add-ons like fruit baskets or specialized pickup services. Please coordinate with our desk.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(17, 7, 'Is smoking allowed in staycation suites?', 'No, all our suites are strictly non-smoking to ensure a clean, fresh environment for everyone. A penalty of ₦100,000 applies.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(18, 7, 'Can we invite friends over during a staycation?', 'Day visitors are permitted to register at reception and must depart by 10:00 PM. Parties and large gatherings are prohibited.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(19, 8, 'Can companies pay via bank transfer?', 'Yes, we accept corporate bank transfers and provide official VAT invoices and receipts.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(20, 8, 'Do you offer special rates for corporate long-term bookings?', 'Yes, we have preferential corporate rate rules for extended bookings exceeding 30 days.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(21, 8, 'How do guests check in under corporate bookings?', 'Expatriates or staff can complete our digital check-in in advance and receive their keyless entry codes via secure email or WhatsApp.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(22, 9, 'What security credentials does Kevron possess?', 'We feature a secure residential perimeter, keyless door locks, 24/7 CCTV surveillance, and are 3 minutes from Memabod Police Station.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(23, 9, 'Is there backup internet in case of primary Wi-Fi outage?', 'Yes, we maintain redundant high-speed broadband lines to guarantee uninterrupted connectivity.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(24, 9, 'Are business meetings permitted in the apartments?', 'Small, quiet business discussions of up to 4 people are allowed in the living spaces, but commercial parties are strictly prohibited.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(25, 10, 'How far is Ikeja City Mall from Kevron Apartments?', 'It is approximately an 8-minute drive under standard traffic conditions.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(26, 10, 'Are there reliable supermarkets on Adeniyi Jones for grocery shopping?', 'Yes, several large, well-stocked supermarkets are located within a 2-minute drive for all your self-catering needs.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(27, 10, 'Can the concierge arrange transportation to local malls?', 'Yes, we offer executive car rental packages with professional drivers to take you anywhere in Lagos.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(28, 11, 'Are the entrance keys physical or digital?', 'We use keyless smart locks. Guests receive a unique digital passcode upon check-in, which expires automatically at checkout.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(29, 11, 'Is there security staff on-site?', 'Yes, we have 24/7 on-site security personnel managing our gated entrance and perimeter.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(30, 11, 'Do you have CCTV inside the apartments?', 'Absolutely not. CCTV cameras are strictly limited to external perimeters, gates, and common corridors to protect guest privacy.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(31, 12, 'Do you offer discounts for monthly stays?', 'Yes, we provide special rate discounts for extended bookings exceeding 30 days.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(32, 12, 'How often is housekeeping conducted for long-stay guests?', ' Housekeeping is typically scheduled 2 to 3 times a week, but we can adjust this schedule to fit your preferences.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(33, 12, 'Are laundry utilities included in long stays?', 'All our apartments include a private washing machine and heat dryer. We also offer professional laundry services on request.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(34, 13, 'How does the driver identify me at the airport?', 'Your driver will wait at the arrivals exit holding a paging board with your name, and will coordinate with you via phone/WhatsApp.', 0, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(35, 13, 'Can we book a car rental for a full day?', 'Yes, our executive car rentals include a professional driver and are billed per day for travel within Lagos.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(36, 13, 'What happens if my flight is delayed?', 'We track flight arrival times using your flight number, and will adjust your pickup time automatically if there is a delay.', 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `blog_post_redirects`
--

CREATE TABLE `blog_post_redirects` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `old_slug` varchar(255) NOT NULL,
  `new_slug` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `blog_post_revisions`
--

CREATE TABLE `blog_post_revisions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `blog_post_id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `content` longtext NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `blog_post_tag`
--

CREATE TABLE `blog_post_tag` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `blog_post_id` bigint(20) UNSIGNED NOT NULL,
  `blog_tag_id` bigint(20) UNSIGNED NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_post_tag`
--

INSERT INTO `blog_post_tag` (`id`, `blog_post_id`, `blog_tag_id`, `created_at`, `updated_at`) VALUES
(1, 2, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 2, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 2, 12, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 2, 9, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 3, 3, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(6, 3, 4, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(7, 3, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(8, 3, 11, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(9, 4, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(10, 4, 3, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(11, 4, 11, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(12, 5, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(13, 5, 7, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(14, 5, 12, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(15, 6, 8, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(16, 6, 12, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(17, 6, 10, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(18, 7, 10, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(19, 7, 8, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(20, 7, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(21, 8, 7, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(22, 8, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(23, 8, 9, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(24, 9, 7, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(25, 9, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(26, 9, 12, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(27, 10, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(28, 10, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(29, 10, 10, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(30, 11, 12, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(31, 11, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(32, 11, 9, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(33, 12, 9, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(34, 12, 12, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(35, 12, 8, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(36, 13, 11, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(37, 13, 3, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(38, 13, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `blog_related_posts`
--

CREATE TABLE `blog_related_posts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `blog_post_id` bigint(20) UNSIGNED NOT NULL,
  `related_post_id` bigint(20) UNSIGNED NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_related_posts`
--

INSERT INTO `blog_related_posts` (`id`, `blog_post_id`, `related_post_id`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 2, 3, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 2, 4, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 3, 4, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 3, 5, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 4, 5, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(6, 4, 6, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(7, 5, 6, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(8, 5, 7, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(9, 6, 7, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(10, 6, 8, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(11, 7, 8, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(12, 7, 9, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(13, 8, 9, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(14, 8, 10, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(15, 9, 10, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(16, 9, 11, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(17, 10, 11, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(18, 10, 12, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(19, 11, 12, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(20, 11, 13, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(21, 12, 13, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(22, 12, 2, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(23, 13, 2, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(24, 13, 3, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `blog_search_logs`
--

CREATE TABLE `blog_search_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `query` varchar(255) NOT NULL,
  `results_count` int(11) NOT NULL DEFAULT 0,
  `ip_address` varchar(45) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `blog_tags`
--

CREATE TABLE `blog_tags` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `blog_tags`
--

INSERT INTO `blog_tags` (`id`, `name`, `slug`, `created_at`, `updated_at`) VALUES
(1, 'Ikeja', 'ikeja', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 'Adeniyi Jones', 'adeniyi-jones', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 'Lagos Airport', 'lagos-airport', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 'MM1', 'mm1', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 'MM2', 'mm2', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(6, 'Business Travel', 'business-travel', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(7, 'Corporate Stays', 'corporate-stays', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(8, 'Family Stay', 'family-stay', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(9, 'Long Stay', 'long-stay', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(10, 'Staycation', 'staycation', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(11, 'Airport Pickup', 'airport-pickup', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(12, 'Serviced Apartments', 'serviced-apartments', '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `bookings`
--

CREATE TABLE `bookings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `guest_id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `unit_id` bigint(20) UNSIGNED DEFAULT NULL,
  `check_in_date` date NOT NULL,
  `check_out_date` date NOT NULL,
  `guests_count` int(11) NOT NULL,
  `base_price` decimal(12,2) NOT NULL,
  `add_ons_price` decimal(12,2) NOT NULL DEFAULT 0.00,
  `service_charge` decimal(12,2) NOT NULL DEFAULT 0.00,
  `tax_amount` decimal(12,2) NOT NULL DEFAULT 0.00,
  `total_price` decimal(12,2) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `payment_status` varchar(255) NOT NULL DEFAULT 'unpaid',
  `special_requests` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bookings`
--

INSERT INTO `bookings` (`id`, `booking_reference`, `guest_id`, `apartment_type_id`, `unit_id`, `check_in_date`, `check_out_date`, `guests_count`, `base_price`, `add_ons_price`, `service_charge`, `tax_amount`, `total_price`, `status`, `payment_status`, `special_requests`, `created_at`, `updated_at`) VALUES
(1, 'KEV-2026-PAST', 1, 1, NULL, '2026-05-15', '2026-05-20', 2, 1000000.00, 50000.00, 50000.00, 50000.00, 1150000.00, 'completed', 'paid', 'Quiet room preferred.', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'KEV-2026-ACTV', 1, 1, NULL, '2026-06-02', '2026-06-07', 4, 1000000.00, 0.00, 50000.00, 50000.00, 1100000.00, 'checked_in', 'paid', 'Need extra coffee pods and soft pillows.', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'KEV-2026-UPCM', 1, 2, NULL, '2026-06-19', '2026-06-24', 1, 750000.00, 20000.00, 30000.00, 30000.00, 830000.00, 'confirmed', 'paid', 'Airport pickup request has been filled.', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `booking_add_ons`
--

CREATE TABLE `booking_add_ons` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `add_on_service_id` bigint(20) UNSIGNED NOT NULL,
  `quantity` int(11) NOT NULL DEFAULT 1,
  `price` decimal(12,2) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_cancellation_requests`
--

CREATE TABLE `booking_cancellation_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `request_reference` varchar(255) NOT NULL,
  `reason` text NOT NULL,
  `refund_amount` decimal(12,2) NOT NULL DEFAULT 0.00,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `admin_notes` text DEFAULT NULL,
  `processed_at` datetime DEFAULT NULL,
  `processed_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_enquiries`
--

CREATE TABLE `booking_enquiries` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `check_in` date NOT NULL,
  `check_out` date NOT NULL,
  `guests_count` int(11) NOT NULL,
  `apartment_type` varchar(255) DEFAULT NULL,
  `purpose_of_stay` varchar(255) DEFAULT NULL,
  `airport_pickup_required` varchar(255) NOT NULL DEFAULT 'not_sure',
  `message` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `admin_notes` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_guests`
--

CREATE TABLE `booking_guests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_modification_requests`
--

CREATE TABLE `booking_modification_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `request_reference` varchar(255) NOT NULL,
  `proposed_check_in` date DEFAULT NULL,
  `proposed_check_out` date DEFAULT NULL,
  `proposed_apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `reason` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `admin_notes` text DEFAULT NULL,
  `processed_at` datetime DEFAULT NULL,
  `processed_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_notifications`
--

CREATE TABLE `booking_notifications` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `recipient_email` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `channel` varchar(255) NOT NULL DEFAULT 'email',
  `status` varchar(255) NOT NULL DEFAULT 'queued',
  `sent_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_policies`
--

CREATE TABLE `booking_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `booking_policies`
--

INSERT INTO `booking_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Booking Policy', 'booking-policy', 'Learn how bookings are requested, confirmed, paid for, modified and managed at Kevron Suites and Apartments, Adeniyi Jones, Ikeja.', '2026-06-01', '2026-06-04 12:23:12', '1.0', 'published', 'Legal & Compliance Adviser', '2026-06-04 12:23:12', '2026-06-04 11:23:12', '2026-06-04 11:23:12');

-- --------------------------------------------------------

--
-- Table structure for table `booking_policy_acceptances`
--

CREATE TABLE `booking_policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `booking_policy_version_id` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `booking_policy_sections`
--

CREATE TABLE `booking_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `booking_policy_sections`
--

INSERT INTO `booking_policy_sections` (`id`, `booking_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'booking_channels', '1. Booking Channels', '<p>Guests can submit stay enquiries or request direct reservations through our official website booking page, general enquiry forms, email, phone, or verified WhatsApp business handles. Confirmed corporate client coordinators and long-term residents may also submit bookings through admin-assisted interfaces or dedicated corporate/long-stay portal pipelines.</p>', 1, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(2, 1, 'booking_request_vs_confirmed', '2. Booking Request vs Confirmed Booking', '<p>A booking request does not automatically guarantee availability. A booking is confirmed only when Kevron Suites and Apartments confirms availability and the applicable payment, deposit or approval requirement has been completed. Unconfirmed requests are classified as pending and do not block inventory.</p>', 2, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(3, 1, 'availability_policy', '3. Availability Policy', '<p>Room availability depends on the selected dates, en-suite categories, active inventory levels, cleaning blocks, or scheduled maintenance holds. In the rare event of real-time inventory synchronisation discrepancies, direct support desk hosts will contact the guest immediately to arrange alternative dates or room upgrades.</p>', 3, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(4, 1, 'apartment_options_rates', '4. Apartment Options and Rate Basis', '<p>Our base nightly rates are dynamically configured as follows:\n                <ul>\n                    <li>1 Bedroom Master Suite — [1BR_RATE]/night</li>\n                    <li>2 Bedroom Luxury Apartment — [2BR_RATE]/night</li>\n                    <li>3 Bedroom Luxury Apartment — [3BR_RATE]/night</li>\n                    <li>4 Bedroom Luxury Apartment — [4BR_RATE]/night</li>\n                </ul>\n                The final quoted rate may vary based on length of stay, weekend markups, festive/seasonal rules, or promo code redemptions. Rates confirmed at checkout are protected against subsequent pricing updates.</p>', 4, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(5, 1, 'information_required', '5. Booking Information Required', '<p>To complete a direct booking request, guests must provide their full legal name, verified email address, contact phone/WhatsApp number, check-in and check-out dates, expected number of guests, and purpose of stay. Corporate bookings require the company name, coordinator details, and coordinator billing billing preferences.</p>', 5, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(6, 1, 'guest_verification', '6. Guest Details and Verification', '<p>For smart secure living compliance, guests must present a valid government-issued photo identification card (Passport, Driver License, or National ID) during onboarding. Corporate and group coordinators must upload a complete guest list roster before check-in. Personal documents are handled with strict privacy controls.</p>', 6, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(7, 1, 'payment_deposit_requirements', '7. Payment and Deposit Requirements', '<p>Payments can be made via our secure online gateways (e.g., Flutterwave), bank transfers, or corporate invoices. Bank transfers are subject to proof-of-payment upload and host verification. Unpaid or unverified booking requests are flagged as pending and may automatically expire if payment conditions are not met within the designated timeframe.</p>', 7, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 1, 'booking_confirmation', '8. Booking Confirmation', '<p>Upon successful confirmation, guests will receive a unique booking reference along with stay details, check-in instructions, and payment receipts. Confirmation documents are transmitted via email, SMS, or the guest dashboard portal. Please retain this reference for any subsequent modification requests.</p>', 8, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 1, 'booking_modification', '9. Booking Modification Policy', '<p>Guests may request stay date modifications, room category upgrades, or guest count changes through the guest dashboard. Modifications are subject to room availability, price adjustments, and administrative approval. Extent of changes must comply with room occupancy limits and cannot be guaranteed automatically.</p>', 9, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 1, 'cancellation_policy_reference', '10. Cancellation and Refund Policy Reference', '<p>Cancellations must be formally requested through the dashboard. Refund eligibility (such as full base stay refunds for cancellations 5+ days before check-in, or 50% for 2-5 days) is governed strictly by the accepted Cancellation and Refund Policy and Terms and Conditions.</p>', 10, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 1, 'no_show', '11. No-Show Policy', '<p>A no-show occurs if a guest fails to check in by the scheduled arrival date without prior written cancellation or modification notice. No-show reservations are subject to release and room redistribution after a designated hold period, in accordance with our cancellation rules.</p>', 11, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 1, 'check_in_out_linkage', '12. Check-In and Check-Out Integration', '<p>Our standard check-in time is <strong>2:00 PM</strong>, and check-out is <strong>11:00 AM</strong>. Requests for early check-in or late check-out must be coordinated with the reception desk and are subject to availability. Guests are encouraged to submit digital check-in forms and arrival times to expedite reception onboarding.</p>', 12, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 1, 'occupancy_limits', '13. Occupancy and Guest Count', '<p>Strict maximum occupancy limits apply to each suite category (e.g. 2 adults for 1 Bedroom, 4 adults for 2 Bedroom, 6 adults for 3 Bedroom, 8 adults for 4 Bedroom). Exceeding these limits without prior approval is a violation of house rules and smart security protocols. All visitors must be registered.</p>', 13, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(14, 1, 'addon_services', '14. Add-On Services During Booking', '<p>Guests can request airport pickups, executive car rentals, extra cleanings, and other en-suite services during checkout or from their guest dashboard. Add-ons are subject to service availability and third-party vendor coordination.</p>', 14, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(15, 1, 'long_stay_booking', '15. Long-Stay Booking Policy', '<p>Stays exceeding 30 days qualify for custom extended stay quotations and flexible staged payment plans (subject to approval). A dynamic security deposit will apply. Extended stay guests must coordinate housekeeping access and en-suite checkouts bi-weekly.</p>', 15, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(16, 1, 'corporate_booking', '16. Corporate Booking Policy', '<p>Corporate stays and B2B bookings are subject to corporate billing profiles approvals. Registered coordinators may request direct company billing. All corporate guests remain bound by en-suite house rules and smart living policies.</p>', 16, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(17, 1, 'third_party_channels', '17. Third-Party Booking Channels', '<p>Reservations requested through third-party platforms or OTAs are governed by the specific platform\'s rate, cancellation, and payment rules. Direct host assistance or booking modifications for these stays may be limited and must be initiated through the original platform.</p>', 17, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(18, 1, 'policy_acceptance', '18. Booking Policy Acceptance', '<p>Accepting our Booking Policy, Cancellation and Refund Policy, and general House Rules is a mandatory condition before booking confirmation. The system securely logs policy versions, acceptance timestamps, IP addresses, and user agents for audit trail purposes.</p>', 18, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `booking_status_histories`
--

CREATE TABLE `booking_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` varchar(255) NOT NULL,
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `brand_content_blocks`
--

CREATE TABLE `brand_content_blocks` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `block_key` varchar(255) NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `content` text DEFAULT NULL,
  `media_url` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `version` int(11) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `brand_profiles`
--

CREATE TABLE `brand_profiles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `brand_name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `brand_story` text NOT NULL,
  `mission_statement` text NOT NULL,
  `hospitality_promise` text NOT NULL,
  `positioning_statement` text NOT NULL,
  `primary_location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `brand_profiles`
--

INSERT INTO `brand_profiles` (`id`, `brand_name`, `slug`, `brand_story`, `mission_statement`, `hospitality_promise`, `positioning_statement`, `primary_location_id`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Kevron Suites and Apartments', 'kevron-suites-apartments', 'Kevron Suites and Apartments was created to provide guests with a premium serviced-apartment experience in Ikeja, Lagos. Starting from Adeniyi Jones, the brand brings together luxury apartment living, modern comfort, smart access, guest support and convenient airport access for travellers who want more space, privacy and flexibility than a standard hotel room.', 'Our hospitality promise is to provide guests with a clean, comfortable, security-conscious and well-managed serviced-apartment experience, supported by practical amenities, responsive guest communication and thoughtful spaces for short stays, long stays, family visits, business travel and corporate accommodation.', 'We promise to deliver consistent premium lodging, smart living, and round-the-clock proactive guest services, ensuring every visitor enjoys a seamless, security-conscious home-away-from-home experience.', 'Kevron Suites and Apartments is a premium serviced-apartment brand starting from Adeniyi Jones, Ikeja, Lagos, offering 1, 2, 3 and 4 bedroom luxury serviced apartments with smart living, guest support, airport access and a future multi-location expansion structure.', 1, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `brand_values`
--

CREATE TABLE `brand_values` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `icon` varchar(255) NOT NULL,
  `image_path` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `brand_values`
--

INSERT INTO `brand_values` (`id`, `title`, `description`, `icon`, `image_path`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Comfort', 'Creating peaceful, beautiful sanctuaries where guests can relax and work without compromise.', 'heart', NULL, 1, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 'Trust', 'Upholding strict transparency in bookings, rates, secure data storage, and honest representations.', 'check-badge', NULL, 1, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 'Service', 'Delivering people-first, responsive, and respectful hospitality support at all times.', 'user-group', NULL, 1, 3, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 'Quality', 'Maintaining high cleanliness, rapid maintenance responses, and premium furnishing standards.', 'shield-check', NULL, 1, 4, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 'Convenience', 'Simplifying arrivals, keyless access operations, and airport transits to save valuable time.', 'hand-thumb-up', NULL, 1, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(6, 'Smart Living', 'Embedding digital convenience, fast Wi-Fi, and smart automation to empower modern lifestyles.', 'cpu-chip', NULL, 1, 6, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(7, 'Growth', 'Iterating and expanding our premium serviced apartments brand thoughtfully based on guest reviews.', 'arrow-trending-up', NULL, 1, 7, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `buildings`
--

CREATE TABLE `buildings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `code` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `buildings`
--

INSERT INTO `buildings` (`id`, `location_id`, `name`, `code`, `created_at`, `updated_at`) VALUES
(1, 1, 'Regina Coker Block (Block A)', 'KSA-RGC', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 1, 'Ogunlowo Block (Block B)', 'KSA-OGL', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `cache`
--

CREATE TABLE `cache` (
  `key` varchar(255) NOT NULL,
  `value` mediumtext NOT NULL,
  `expiration` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cache_locks`
--

CREATE TABLE `cache_locks` (
  `key` varchar(255) NOT NULL,
  `owner` varchar(255) NOT NULL,
  `expiration` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cancellation_refund_policies`
--

CREATE TABLE `cancellation_refund_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cancellation_refund_policies`
--

INSERT INTO `cancellation_refund_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Cancellation and Refund Policy', 'cancellation-refund-policy', 'Understand how booking cancellations, refund requests, no-shows, early departures, security deposits, and add-on services refunds are managed at Kevron Suites and Apartments, Adeniyi Jones, Ikeja.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Legal & Compliance Adviser', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `cancellation_refund_policy_acceptances`
--

CREATE TABLE `cancellation_refund_policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `policy_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cancellation_refund_policy_sections`
--

CREATE TABLE `cancellation_refund_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `cancellation_refund_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cancellation_refund_policy_sections`
--

INSERT INTO `cancellation_refund_policy_sections` (`id`, `cancellation_refund_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'scope_of_policy', '1. Scope and Application', '<p>This policy applies globally to all reservations requested, confirmed or processed at Kevron Suites and Apartments, Adeniyi Jones, Ikeja. It governs stays booked directly through our website booking system, verified WhatsApp channels, corporate accounts, or administrative booking hosts.</p>', 1, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'cancellation_before_confirmation', '2. Cancellations Prior to Booking Confirmation', '<p>Booking requests and stay enquiries may be withdrawn or cancelled at any time before formal reservation confirmation. If payment was made before confirmation, the guest is entitled to a clean, swift refund of the base amount, subject to transaction verification and payment gateway rules.</p>', 2, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'cancellation_after_confirmation', '3. Cancellations After Confirmation', '<p>Once a booking has been confirmed, cancellations are subject to administrative review. Free cancellation notice periods will be displayed once confirmed by management. Guests should contact Kevron Suites and Apartments as early as possible if they need to cancel or modify a booking.</p>', 3, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 1, 'refund_eligibility_categories', '4. Refund Eligibility & Rules', '<p>Refund eligibility is calculated based on notice periods, booking types, and rate classes:\n                <ul>\n                    <li><strong>Full Base Refund:</strong> Cancellations made 5+ days prior to scheduled check-in qualify for a full base stay refund (excluding security deposits).</li>\n                    <li><strong>Partial Refund:</strong> Cancellations made between 2 and 5 days prior to check-in qualify for a 50% base stay refund.</li>\n                    <li><strong>Restricted / Non-Refundable:</strong> Cancellations made within 48 hours of check-in are non-refundable.</li>\n                </ul>\n                All claims are subject to administrative review to prevent transaction discrepancies.</p>', 4, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 1, 'no_show_policy', '5. No-Show Policy', '<p>A no-show is recorded if a guest fails to arrive at the property by 11:59 PM on their scheduled check-in date without prior written coordination. In accordance with no-show guidelines, unpaid pending reservations are released immediately, while paid bookings are held until checkout, subject to daily forfeiture charges.</p>', 5, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 1, 'early_departure', '6. Early Departures & Key Reductions', '<p>Leaving the property prior to the agreed checkout date does not automatically create a refund entitlement. Early departures are treated as voluntary cancellations of the remaining nights, with refund eligibility subject to room redistribution and management approval.</p>', 6, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 1, 'payment_route_timeline', '7. Payment Channels and Processing Timelines', '<p>Approved refunds are processed through the same channel used at checkout (e.g. secure online gateways, credit card reversals, or bank transfers). Standard corporate review and gateway validations may require between 7 to 14 business days to post successfully.</p>', 7, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 1, 'security_deposit_refund', '8. Security Deposit Refund Procedures', '<p>Unlike base stay pricing, security deposits (₦100,000.00 standard) are fully refundable. The property releases deposits within 24 to 48 hours following checkout inspection, provided no en-suite damage, missing inventories, or policy breaches are recorded.</p>', 8, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 1, 'addons_pickup_rental', '9. Add-On Services, Airport Pickups & Car Rentals', '<p>Add-on reservation fees (e.g. decoration, executive chef setups) are subject to notice windows:\n                <ul>\n                    <li>Airport pickups can be cancelled without charge up to 24 hours prior to the flight landing.</li>\n                    <li>Executive car rentals require 48 hours notice. Late cancellations may incur provider standby charges.</li>\n                </ul></p>', 9, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 1, 'corporate_long_stay', '10. Corporate and Extended Long Stays', '<p>Stays exceeding 30 days or corporate group reservations operate under custom cancellation agreements. Early departures or cancellation notice periods are managed according to the contractually approved staging schedules.</p>', 10, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 1, 'third_party_ota', '11. Third-Party Platform and OTA Reservations', '<p>Reservations booked through third-party platforms (such as Booking.com or Airbnb) must initiate cancellations directly through the originating channel. Kevron Suites and Apartments is bound by the platform terms and cannot bypass their billing channels.</p>', 11, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 1, 'exceptional_circumstances', '12. Extenuating Circumstances and Emergency Policies', '<p>Management reserves the right to issue rebooking credits or waive fees for extenuating circumstances such as medical emergencies, flight groundings, or regional force majeure events. Claims require valid supporting documentation.</p>', 12, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 1, 'property_initiated', '13. Property-Initiated Cancellations', '<p>In the highly unlikely event that Kevron Suites and Apartments must cancel a confirmed reservation due to operational outages or force majeure events, guests are entitled to a full refund or immediate upgrade to an alternative luxury suite at no additional charge.</p>', 13, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `cancellation_requests`
--

CREATE TABLE `cancellation_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `cancellation_reason` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `guest_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `car_rental_requests`
--

CREATE TABLE `car_rental_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `car_type` varchar(255) NOT NULL,
  `duration_days` int(11) NOT NULL,
  `start_date` date NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `channel_integrations`
--

CREATE TABLE `channel_integrations` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `channel_name` varchar(255) NOT NULL,
  `is_enabled` tinyint(1) NOT NULL DEFAULT 0,
  `external_listing_id` varchar(255) DEFAULT NULL,
  `rate_mapping` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`rate_mapping`)),
  `availability_mapping` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`availability_mapping`)),
  `last_sync_at` timestamp NULL DEFAULT NULL,
  `last_sync_status` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `channel_sync_logs`
--

CREATE TABLE `channel_sync_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `channel_integration_id` bigint(20) UNSIGNED NOT NULL,
  `sync_type` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL,
  `message` text DEFAULT NULL,
  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`payload`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `company_billing_profiles`
--

CREATE TABLE `company_billing_profiles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_client_id` bigint(20) UNSIGNED NOT NULL,
  `billing_contact_name` varchar(255) NOT NULL,
  `billing_contact_email` varchar(255) NOT NULL,
  `billing_address` text NOT NULL,
  `payment_preference` varchar(255) NOT NULL DEFAULT 'bank_transfer',
  `approved_limit` decimal(12,2) NOT NULL DEFAULT 0.00,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `comparison_fields`
--

CREATE TABLE `comparison_fields` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `field_key` varchar(255) NOT NULL,
  `label` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL DEFAULT 'boolean',
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `comparison_fields`
--

INSERT INTO `comparison_fields` (`id`, `field_key`, `label`, `type`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 'price', 'Price', 'string', 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'bedrooms', 'Bedroom count', 'string', 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'best_for', 'Best for', 'string', 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 'kitchen', 'Kitchen', 'boolean', 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 'wifi', 'Wi-Fi', 'boolean', 5, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 'power_24h', '24-hour power', 'boolean', 6, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(7, 'ac', 'Air conditioning', 'boolean', 7, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(8, 'washer_dryer', 'Washing machine/dryer', 'boolean', 8, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(9, 'balcony', 'Balcony/outdoor space', 'boolean', 9, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(10, 'ps5_snooker', 'PS5/snooker access', 'boolean', 10, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(11, 'smart_security', 'Smart security', 'boolean', 11, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(12, 'airport_pickup', 'Airport pickup', 'boolean', 12, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(13, 'car_rental', 'Car rental', 'boolean', 13, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `comparison_field_values`
--

CREATE TABLE `comparison_field_values` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `comparison_field_id` bigint(20) UNSIGNED NOT NULL,
  `value` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `comparison_field_values`
--

INSERT INTO `comparison_field_values` (`id`, `apartment_type_id`, `comparison_field_id`, `value`, `created_at`, `updated_at`) VALUES
(1, 1, 1, '₦150,000/night', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 1, 2, '1 Bedroom', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 1, 3, 'Solo stays / couples', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 1, 4, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 1, 5, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 1, 6, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(7, 1, 7, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(8, 1, 8, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(9, 1, 9, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(10, 1, 10, 'No', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(11, 1, 11, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(12, 1, 12, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(13, 1, 13, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(14, 2, 1, '₦200,000/night', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(15, 2, 2, '2 Bedrooms', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(16, 2, 3, 'Small families / small groups', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(17, 2, 4, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(18, 2, 5, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(19, 2, 6, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(20, 2, 7, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(21, 2, 8, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(22, 2, 9, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(23, 2, 10, 'No', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(24, 2, 11, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(25, 2, 12, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(26, 2, 13, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(27, 3, 1, '₦250,000/night', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(28, 3, 2, '3 Bedrooms', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(29, 3, 3, 'Families / executive stays', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(30, 3, 4, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(31, 3, 5, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(32, 3, 6, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(33, 3, 7, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(34, 3, 8, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(35, 3, 9, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(36, 3, 10, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(37, 3, 11, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(38, 3, 12, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(39, 3, 13, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(40, 4, 1, '₦300,000/night', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(41, 4, 2, '4 Bedrooms', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(42, 4, 3, 'Large groups / corporate teams', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(43, 4, 4, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(44, 4, 5, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(45, 4, 6, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(46, 4, 7, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(47, 4, 8, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(48, 4, 9, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(49, 4, 10, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(50, 4, 11, 'Yes', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(51, 4, 12, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(52, 4, 13, 'On request', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `consent_records`
--

CREATE TABLE `consent_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `policy_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `consent_type` varchar(255) NOT NULL,
  `consent_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `withdrawn_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `contact_enquiries`
--

CREATE TABLE `contact_enquiries` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `enquiry_type` varchar(255) NOT NULL,
  `apartment_interest` varchar(255) DEFAULT NULL,
  `preferred_contact_method` varchar(255) NOT NULL DEFAULT 'email',
  `message` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `admin_notes` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `contact_messages`
--

CREATE TABLE `contact_messages` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'unread',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `contact_settings`
--

CREATE TABLE `contact_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `contact_settings`
--

INSERT INTO `contact_settings` (`id`, `key`, `value`, `created_at`, `updated_at`) VALUES
(1, 'contact_phone', '+234 813 163 2926', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'contact_email', 'info@kevronapartments.com', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'contact_whatsapp', '2348082131985', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'contact_address', '7B Regina Coker Street, Adeniyi Jones, Ikeja / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria.', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `cookie_categories`
--

CREATE TABLE `cookie_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `consent_required` tinyint(1) NOT NULL DEFAULT 1,
  `always_active` tinyint(1) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cookie_categories`
--

INSERT INTO `cookie_categories` (`id`, `name`, `slug`, `description`, `consent_required`, `always_active`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Strictly Necessary Cookies', 'necessary', 'Essential for website security, core functionality, cross-site scripting (CSRF) defenses, page routing, and recording visitor cookie consent states. These cannot be disabled.', 0, 1, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Preference Cookies', 'preferences', 'Remember user selections including color themes, font scaling, accessibility adjustments, and recently viewed luxury apartments.', 1, 0, 1, 2, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 'Analytics Cookies', 'analytics', 'Help us gather anonymous visitor statistics, track conversion rates in the booking funnel, and optimize performance across network connections.', 1, 0, 1, 3, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 'Marketing Cookies', 'marketing', 'Power pixels and tracking scripts to compile campaign performance profiles, deliver relevant digital advertisements, and measure return on ad spend.', 1, 0, 1, 4, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 'Functional & Third-Party Cookies', 'functional', 'Load embedded resources including Google Maps, video virtual tours (Vimeo/YouTube), payment checkout modules, and live support chat windows.', 1, 0, 1, 5, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `cookie_consents`
--

CREATE TABLE `cookie_consents` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `anonymous_consent_id` varchar(255) DEFAULT NULL,
  `cookie_policy_version_id` varchar(255) NOT NULL,
  `consent_context` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `withdrawn_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cookie_consent_events`
--

CREATE TABLE `cookie_consent_events` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `cookie_consent_id` bigint(20) UNSIGNED NOT NULL,
  `event_type` varchar(255) NOT NULL,
  `event_details` text DEFAULT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cookie_consent_preferences`
--

CREATE TABLE `cookie_consent_preferences` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `cookie_consent_id` bigint(20) UNSIGNED NOT NULL,
  `cookie_category_id` bigint(20) UNSIGNED NOT NULL,
  `choice` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cookie_items`
--

CREATE TABLE `cookie_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `cookie_category_id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `provider` varchar(255) NOT NULL,
  `purpose` text DEFAULT NULL,
  `duration` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `first_or_third_party` varchar(255) NOT NULL DEFAULT 'first-party',
  `enabled_by_default` tinyint(1) NOT NULL DEFAULT 0,
  `consent_required` tinyint(1) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `last_reviewed_at` date DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cookie_items`
--

INSERT INTO `cookie_items` (`id`, `cookie_category_id`, `name`, `provider`, `purpose`, `duration`, `type`, `first_or_third_party`, `enabled_by_default`, `consent_required`, `is_active`, `last_reviewed_at`, `created_at`, `updated_at`) VALUES
(1, 1, 'laravel_session', 'Kevron Suites and Apartments (First-Party)', 'Maintains basic secure session state for room booking forms, active checkouts, and guest dashboard authentication.', '2 Hours', 'HTTP Cookie', 'first-party', 1, 0, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'XSRF-TOKEN', 'Kevron Suites and Apartments (First-Party)', 'Provides essential security validation to protect all guest form submissions from cross-site request forgery attacks.', '2 Hours', 'HTTP Cookie', 'first-party', 1, 0, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'kevron_cookie_consent', 'Kevron Suites and Apartments (First-Party)', 'Stores your granular cookie categories consent choice, preventing the banner from repeating on every page load.', '1 Year', 'HTTP Cookie', 'first-party', 1, 0, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 2, 'kevron_theme', 'Kevron Suites and Apartments (First-Party)', 'Saves preferred luxury theme accent colors and active dark mode settings.', 'Persistent', 'HTML Local Storage', 'first-party', 0, 1, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 2, 'kevron_accessibility', 'Kevron Suites and Apartments (First-Party)', 'Saves font size overrides and accessibility options configured by the guest.', 'Persistent', 'HTML Local Storage', 'first-party', 0, 1, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 3, '_ga', 'Google Analytics (Third-Party)', 'Collects anonymous statistics on page views, guest journeys, and navigation patterns to optimize room listings.', '2 Years', 'HTTP Cookie', 'third-party', 0, 1, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 3, '_gid', 'Google Analytics (Third-Party)', 'Groups unique user actions within a single calendar day to create high-level behavior dashboards.', '24 Hours', 'HTTP Cookie', 'third-party', 0, 1, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 4, '_fbp', 'Facebook / Meta (Third-Party)', 'Measures digital return on ad spend and displays relevant executive suite promotions on Meta channels.', '3 Months', 'HTTP Cookie', 'third-party', 0, 1, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 5, 'vuid', 'Vimeo (Third-Party)', 'Remembers visitor player settings and bandwidth configurations for embedded luxury video virtual tours.', '2 Years', 'HTTP Cookie', 'third-party', 0, 1, 1, '2026-06-04', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `cookie_policies`
--

CREATE TABLE `cookie_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cookie_policies`
--

INSERT INTO `cookie_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Cookie Policy', 'cookie-policy', 'Learn how Kevron Suites and Apartments uses cookies and similar technologies to support website functionality, booking forms, guest preferences, analytics, security, performance and user experience.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Legal & Compliance Adviser', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `cookie_policy_sections`
--

CREATE TABLE `cookie_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `cookie_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cookie_policy_sections`
--

INSERT INTO `cookie_policy_sections` (`id`, `cookie_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'introduction', '1. Introduction and Scope', '<p>Kevron Suites and Apartments (\"we\", \"us\", or \"our\") uses cookies and similar technologies (such as local storage, session storage, tracking pixels, tags, browser identifiers, and service worker caches) on our website to ensure secure browsing, optimize booking operations, maintain your guest dashboard session, remember your preferences, and analyze our traffic. This Cookie Policy explains what these technologies are, why we use them, and your absolute rights to manage their application.</p><p>This policy applies to our launch location at <strong>Kevron Suites and Apartments — Adeniyi Jones, Ikeja</strong> (located at 7B Regina Coker Street, Adeniyi Jones / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria), and all online services connected to our domain.</p>', 1, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'what_are_cookies', '2. What Are Cookies and Similar Technologies?', '<p>Cookies are small text files stored on your browser or device when you visit a website. We also use other storage mechanisms:\n                <ul>\n                    <li><strong>Cookies:</strong> File-based browser tokens (first-party placed directly by us, third-party placed by approved partners).</li>\n                    <li><strong>Local & Session Storage:</strong> Web storage APIs built into your browser that allow websites to store data persistently or during a single browser session.</li>\n                    <li><strong>Tracking Pixels & Tags:</strong> Small transparent images or scripts that register actions such as newsletter clicks or booking completions.</li>\n                    <li><strong>Service Worker Cache:</strong> Essential client-side assets cached to support progressive web app (PWA) offline speed.</li>\n                </ul></p>', 2, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'why_we_use_cookies', '3. Why We Use Cookies', '<p>We use cookies and associated technologies for several critical purposes:\n                <ul>\n                    <li><strong>Strictly Necessary:</strong> Supporting booking forms, csrf security, guest login sessions, and recording your cookie preference status.</li>\n                    <li><strong>Preferences:</strong> Saving theme (light/dark) states, brand accents, custom font size configurations, and filtered search choices.</li>\n                    <li><strong>Analytics & Performance:</strong> Tracking aggregate visitor journeys, conversion funnel clicks, and general website speed metrics.</li>\n                    <li><strong>Marketing & Remarketing:</strong> Serving tailored advertisements and measuring advertising efficiency across social pixels.</li>\n                    <li><strong>Functional Embeds:</strong> Powering interactive Google Maps, luxury virtual tours, payment gateway steps, and active support/chat widgets.</li>\n                </ul></p>', 3, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 1, 'strictly_necessary', '4. Strictly Necessary Cookies', '<p>These items are required to enable basic features such as secure guest portal authentication, cross-site request forgery (CSRF) safety, and session booking configurations. Because they are vital to operation, they are always active, do not require user opt-in consent, and cannot be individually disabled without breaking website core functions.</p>', 4, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 1, 'preference_cookies', '5. Preference Cookies', '<p>Preference cookies allow our website to remember your selections (such as preferred room layouts, light/dark mode choices, font size scaling, or recently viewed suites). They aim to personalize your luxury browsing experience. These will only load if you explicitly toggle them on in our Preference Centre.</p>', 5, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 1, 'analytics_cookies', '6. Analytics & Performance Cookies', '<p>Analytics cookies collect aggregated statistics about how guests navigate our digital channels, helping us identify speed bottlenecks and refine our booking funnel. In absolute compliance with modern privacy guidelines, analytical trackers are **blocked by default** and will only load after you grant explicit consent.</p>', 6, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 1, 'marketing_cookies', '7. Marketing & Advertising Cookies', '<p>Marketing cookies and social pixels trace visitor actions across websites. They are utilized to measure digital campaign returns and display tailored luxury hospitality advertisements on partner networks (such as Google or Meta). Marketing cookies are strictly **opt-in only** and remain inactive until accepted.</p>', 7, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 1, 'functional_embedded', '8. Functional and Third-Party Embedded Cookies', '<p>Our website incorporates rich widgets to enhance your experience, including Google Maps, video showcases, and payment gateways. These services may set cookies on your browser to track usage metrics or authenticate your profile. We lazily load or restrict these embeds until you consent to functional cookie settings or trigger them manually.</p>', 8, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 1, 'service_worker_pwa', '9. Service Worker & PWA Caching', '<p>To ensure high speed across Nigeria\'s networks, our website employs a Progressive Web App (PWA) service worker. This worker caches static resources (stylesheets, logos, script assets). <strong>Crucially:</strong> The service worker never caches guest dashboard pages, room booking invoices, personal credentials, or payment session logs. You can purge cached assets by clearing your browser cache.</p>', 9, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 1, 'consent_records', '10. Consent Log Auditing & Data Privacy', '<p>To satisfy our legal burden of proof under the Nigeria Data Protection Act (NDPA) 2023, the consent banner automatically records:\n                <ul>\n                    <li>An anonymous consent ID (unique identifier).</li>\n                    <li>The date and time of consent save.</li>\n                    <li>The status of each general category accepted/rejected.</li>\n                    <li>The specific active policy version identifier.</li>\n                </ul>\n                This information is securely stored inside our database and is never exposed publicly. It is maintained solely for data protection compliance auditing.</p>', 10, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 1, 'how_to_manage', '11. How to Manage and Withdraw Cookie Preferences', '<p>You possess absolute sovereignty over your cookie settings. You can review and change your options at any time:\n                <ul>\n                    <li><strong>Preference Centre:</strong> Click the \"Manage Cookie Preferences\" link present in the footer of any page to open the settings panel and adjust toggles.</li>\n                    <li><strong>Browser Settings:</strong> You can configure your browser to reject all third-party cookies, clear existing cookies, or warn you before a cookie is placed. Note that blocking necessary cookies will impair your ability to complete online bookings or log into your guest account.</li>\n                </ul></p>', 11, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 1, 'privacy_relationship', '12. Relationship with Privacy Policy', '<p>Some cookies process identifiers that are classified as personal data. This Cookie Policy operates in close alignment with our comprehensive <a href=\"/privacy-policy\" class=\"text-royal-blue underline hover:text-sky-cyan transition-colors\">Privacy Policy</a>, which describes how we collect, store, protect, and share your personal data at Kevron Suites and Apartments.</p>', 12, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 1, 'contact_information', '13. Contact for Cookie and Privacy Enquiries', '<p>If you have questions regarding our use of cookies or wish to file a inquiry, please contact our administrative desk:\n                <ul>\n                    <li><strong>Email:</strong> privacy@kevronapartments.com</li>\n                    <li><strong>Address:</strong> 7B Regina Coker Street, Adeniyi Jones / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria.</li>\n                    <li><strong>WhatsApp / Phone:</strong> +234 (0) 800-KEVRON-SUITES</li>\n                </ul></p>', 13, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `corporate_booking_status_histories`
--

CREATE TABLE `corporate_booking_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_enquiry_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` varchar(255) NOT NULL DEFAULT 'system',
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_clients`
--

CREATE TABLE `corporate_clients` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `company_name` varchar(255) NOT NULL,
  `registration_number` varchar(255) DEFAULT NULL,
  `address` text DEFAULT NULL,
  `credit_limit` decimal(12,2) NOT NULL DEFAULT 0.00,
  `billing_cycle` varchar(255) NOT NULL DEFAULT 'monthly',
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_contacts`
--

CREATE TABLE `corporate_contacts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_client_id` bigint(20) UNSIGNED NOT NULL,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `department` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_deposit_rules`
--

CREATE TABLE `corporate_deposit_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_enquiry_id` int(11) DEFAULT NULL,
  `company_name` varchar(255) NOT NULL,
  `deposit_waiver_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `custom_deposit_amount` decimal(12,2) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_enquiries`
--

CREATE TABLE `corporate_enquiries` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `company_name` varchar(255) NOT NULL,
  `contact_person` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `check_in` date NOT NULL,
  `check_out` date DEFAULT NULL,
  `guests_count` int(11) NOT NULL,
  `message` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_guest_lists`
--

CREATE TABLE `corporate_guest_lists` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `company_name` varchar(255) NOT NULL,
  `corporate_contact_person` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `arrival_date` date DEFAULT NULL,
  `departure_date` date DEFAULT NULL,
  `number_of_guests` int(11) NOT NULL DEFAULT 1,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_guest_list_items`
--

CREATE TABLE `corporate_guest_list_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_guest_list_id` bigint(20) UNSIGNED NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `apartment_unit` varchar(255) DEFAULT NULL,
  `verification_status` varchar(255) NOT NULL DEFAULT 'pending',
  `verified_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_quotes`
--

CREATE TABLE `corporate_quotes` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_enquiry_id` bigint(20) UNSIGNED DEFAULT NULL,
  `quote_number` varchar(255) NOT NULL,
  `total_amount` decimal(12,2) NOT NULL,
  `validity_date` date NOT NULL,
  `terms` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_rate_requests`
--

CREATE TABLE `corporate_rate_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `corporate_client_id` bigint(20) UNSIGNED DEFAULT NULL,
  `company_name` varchar(255) NOT NULL,
  `contact_person` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `target_rate` decimal(12,2) DEFAULT NULL,
  `estimated_monthly_nights` int(11) NOT NULL DEFAULT 0,
  `notes` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `corporate_stay_rules`
--

CREATE TABLE `corporate_stay_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `authorized_representative_required` tinyint(1) NOT NULL DEFAULT 1,
  `guest_list_mandatory` tinyint(1) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `corporate_stay_rules`
--

INSERT INTO `corporate_stay_rules` (`id`, `authorized_representative_required`, `guest_list_mandatory`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `damage_categories`
--

CREATE TABLE `damage_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `severity_level` varchar(255) NOT NULL DEFAULT 'minor',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `damage_categories`
--

INSERT INTO `damage_categories` (`id`, `name`, `slug`, `description`, `severity_level`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Smart Access & Smart Locks', 'smart-lock', 'Issues involving digital locks, keycards, or gates.', 'moderate', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Appliances & Kitchenware', 'kitchen', 'Damage to microwave, refrigerator, blender, or cooker.', 'minor', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 'Entertainment & Systems', 'entertainment', 'Damage to TV screens, sound systems, or Wi-Fi routers.', 'moderate', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 'Furniture & Fixtures', 'furniture', 'Heavy stains or broken structural elements of furniture.', 'major', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 'Structure & CCTV Common Areas', 'cctv-common-areas', 'Damage to outer surveillance cameras, gates, or walls.', 'critical', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 'Laundry & Dryer Equipment', 'laundry', 'Damage to washing machines, iron, or clothes rack.', 'minor', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 'Other Maintenance Incident', 'other', 'General miscellaneous issues.', 'minor', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `damage_deposit_policies`
--

CREATE TABLE `damage_deposit_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `damage_deposit_policies`
--

INSERT INTO `damage_deposit_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Damage and Security Deposit Policy', 'damage-deposit-policy', 'Understand security deposits, check-in and check-out unit condition checklists, physical damage assessments, excessive cleaning fees, evidence storage, and deduction dispute procedures at Kevron Suites and Apartments, Adeniyi Jones, Ikeja.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Legal & Operations Directorate', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `damage_deposit_policy_acceptances`
--

CREATE TABLE `damage_deposit_policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `damage_deposit_policy_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `damage_deposit_policy_sections`
--

CREATE TABLE `damage_deposit_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `damage_deposit_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_finance_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_operations_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `damage_deposit_policy_sections`
--

INSERT INTO `damage_deposit_policy_sections` (`id`, `damage_deposit_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_finance_review`, `requires_operations_review`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'deposit_purpose', '1. Purpose of the Security Deposit', '<p>The refundable security deposit serves as a protective measure to ensure the preservation of our luxury suites and the comfort of all guests. It is collected to safeguard against physical property damage, missing en-suite inventory, excessive post-departure cleaning requirements, lost smart access keys, or major house rule violations.</p>', 1, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'standard_rates', '2. Standard Security Deposit Amounts', '<p>Unless otherwise pre-authorized in writing by the corporate coordinators or long-stay contracts, the standard security deposit amounts collected at check-in are:\n                <ul>\n                    <li>₦100,000.00 flat rate per stay for standard bookings.</li>\n                    <li>Extended long-stays (30+ days) and corporate stays may be governed by custom rules allowing staged payments or custom amounts.</li>\n                </ul>\n                This deposit is handled separately from nightly room rates and tax invoices.</p>', 2, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'inspection_workflow', '3. Pre-Arrival & Post-Departure Inspections', '<p>To guarantee fairness, our operations team conducts two key inspections:\n                <ul>\n                    <li><strong>Pre-Arrival Check-In:</strong> A thorough inventory and condition audit to ensure all smart locks, appliances, televisions, and furniture are in good working order before you receive access.</li>\n                    <li><strong>Post-Departure Check-Out:</strong> An inspection conducted within 24 hours of your checkout. Any issues identified are logged with photographs/video evidence.</li>\n                </ul></p>', 3, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 1, 'cleaning_fees', '4. Excessive Cleaning Assessments', '<p>Standard cleaning is included in your booking fee. However, if a suite is left in a state requiring specialized sanitization, heavy stain removal, odor remediation (e.g. from prohibited indoor smoking), or hazardous waste disposal, an excessive cleaning fee starting at ₦20,000.00 will be deducted from your security deposit.</p>', 4, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 1, 'damage_evidence', '5. Secure Operations and Evidence Storage', '<p>All physical damage reports, inspection checklists, and contractor repair invoices are treated as sensitive data. Photographic and video evidence is securely stored in our restricted operations repository. Guests will be provided with an itemized deduction statement alongside the relevant evidence files if any charges are applied.</p>', 5, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 1, 'refund_timeline', '6. Refund Processing and Timelines', '<p>Upon a successful post-checkout inspection with no damages or breaches noted, your security deposit will be automatically processed for refund. Funds are returned to your card or original bank account within 24 to 48 hours. Depending on banking network transits, please allow 3 to 5 business days for the funds to reflect in your account.</p>', 6, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 1, 'dispute_procedure', '7. Contest and Dispute Procedures', '<p>If you disagree with a security deposit deduction, you have the right to contest it. You must file a dispute using the secure online dispute form on this page within 7 business days of receiving your deduction notice. All disputes are reviewed by our Legal & Operations Directorate, and a final decision will be communicated within 10 business days.</p>', 7, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `damage_evidence_media`
--

CREATE TABLE `damage_evidence_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `damage_report_id` bigint(20) UNSIGNED DEFAULT NULL,
  `file_path` varchar(255) NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_size` int(11) NOT NULL,
  `mime_type` varchar(255) NOT NULL,
  `uploaded_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `damage_reports`
--

CREATE TABLE `damage_reports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `unit_id` bigint(20) UNSIGNED DEFAULT NULL,
  `damage_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `estimated_cost` decimal(12,2) NOT NULL DEFAULT 0.00,
  `approved_cost` decimal(12,2) NOT NULL DEFAULT 0.00,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `reported_by` varchar(255) DEFAULT NULL,
  `reviewed_by` varchar(255) DEFAULT NULL,
  `reviewed_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `deposit_deductions`
--

CREATE TABLE `deposit_deductions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `security_deposit_transaction_id` bigint(20) UNSIGNED NOT NULL,
  `damage_report_id` bigint(20) UNSIGNED DEFAULT NULL,
  `deduction_type` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `amount` decimal(12,2) NOT NULL,
  `evidence_summary` text DEFAULT NULL,
  `approved_by` varchar(255) DEFAULT NULL,
  `approved_at` timestamp NULL DEFAULT NULL,
  `guest_notified_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `deposit_disputes`
--

CREATE TABLE `deposit_disputes` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `security_deposit_transaction_id` bigint(20) UNSIGNED NOT NULL,
  `deposit_deduction_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `dispute_reason` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'submitted',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `submitted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `reviewed_by` varchar(255) DEFAULT NULL,
  `reviewed_at` timestamp NULL DEFAULT NULL,
  `closed_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `deposit_rules`
--

CREATE TABLE `deposit_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `deposit_amount` decimal(12,2) NOT NULL DEFAULT 50000.00,
  `inspection_hours_post_checkout` int(11) NOT NULL DEFAULT 24,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `description` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `deposit_rules`
--

INSERT INTO `deposit_rules` (`id`, `apartment_type_id`, `deposit_amount`, `inspection_hours_post_checkout`, `is_active`, `description`, `created_at`, `updated_at`) VALUES
(1, NULL, 100000.00, 24, 1, 'Standard deposit rule', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `digital_checkins`
--

CREATE TABLE `digital_checkins` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `arrival_time` varchar(255) DEFAULT NULL,
  `guest_count` int(11) NOT NULL DEFAULT 1,
  `document_path` varchar(255) DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `special_notes` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `expected_arrival_time` datetime DEFAULT NULL,
  `id_verification_status` varchar(255) NOT NULL DEFAULT 'not_submitted',
  `smart_lock_pin` varchar(10) DEFAULT NULL,
  `house_rules_accepted_at` timestamp NULL DEFAULT NULL,
  `privacy_acknowledged_at` timestamp NULL DEFAULT NULL,
  `submitted_at` datetime DEFAULT NULL,
  `approved_by` varchar(255) DEFAULT NULL,
  `approved_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `direction_links`
--

CREATE TABLE `direction_links` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `url` text NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `direction_links`
--

INSERT INTO `direction_links` (`id`, `name`, `url`, `icon`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Google Maps Directions', 'https://maps.google.com/?q=7B+Regina+Coker+Street,+Adeniyi+Jones,+Ikeja,+Lagos', 'map-pin', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Apple Maps Directions', 'https://maps.apple.com/?address=7B+Regina+Coker+Street,+Adeniyi+Jones,+Ikeja,+Lagos,+Nigeria', 'navigation', 2, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `document_accessibility_records`
--

CREATE TABLE `document_accessibility_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `filename` varchar(255) NOT NULL,
  `doc_type` varchar(255) NOT NULL DEFAULT 'pdf',
  `is_tagged` tinyint(1) NOT NULL DEFAULT 0,
  `has_bookmarks` tinyint(1) NOT NULL DEFAULT 0,
  `status` varchar(255) NOT NULL DEFAULT 'review',
  `verified_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `email_attachments`
--

CREATE TABLE `email_attachments` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `email_log_id` bigint(20) UNSIGNED NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_path` varchar(255) NOT NULL,
  `mime_type` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `email_logs`
--

CREATE TABLE `email_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `recipient_email` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `body` longtext NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'queued',
  `error_message` text DEFAULT NULL,
  `sent_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `email_recipients`
--

CREATE TABLE `email_recipients` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `email_log_id` bigint(20) UNSIGNED NOT NULL,
  `email` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL DEFAULT 'to',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `email_templates`
--

CREATE TABLE `email_templates` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `body` longtext NOT NULL,
  `plain_text` text DEFAULT NULL,
  `variables` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`variables`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `email_templates`
--

INSERT INTO `email_templates` (`id`, `name`, `subject`, `body`, `plain_text`, `variables`, `created_at`, `updated_at`) VALUES
(1, 'guest_booking_received', 'Booking Request Received - Ref: {{booking_reference}}', '<p>Dear {{guest_name}},</p><p>We have received your reservation request for a luxury <strong>{{apartment_type}}</strong>. Your booking reference is <strong>{{booking_reference}}</strong>.</p><p>Check-in: {{check_in_date}}<br>Check-out: {{check_out_date}}</p><p>Please note that your reservation is currently pending and must be secured with a payment.</p>', NULL, '[\"guest_name\",\"booking_reference\",\"apartment_type\",\"check_in_date\",\"check_out_date\"]', '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(2, 'guest_payment_successful', 'Booking Confirmed! - Ref: {{booking_reference}}', '<p>Dear {{guest_name}},</p><p>Congratulations! Your online payment of <strong>₦{{amount}}</strong> has been verified. Your stay at <strong>{{apartment_type}}</strong> is fully confirmed.</p><p>Booking Reference: <strong>{{booking_reference}}</strong><br>Check-in: {{check_in_date}}<br>Check-out: {{check_out_date}}</p><p>We look forward to welcoming you.</p>', NULL, '[\"guest_name\",\"booking_reference\",\"amount\",\"apartment_type\",\"check_in_date\",\"check_out_date\"]', '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(3, 'admin_new_booking', '[Admin Alert] New booking request - Ref: {{booking_reference}}', '<p>Admin Alert: A new booking request <strong>{{booking_reference}}</strong> has been created by guest {{guest_name}}.</p>', NULL, '[\"booking_reference\",\"guest_name\"]', '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 'admin_payment_successful', '[Admin Alert] Payment Successful - Ref: {{booking_reference}}', '<p>Admin Alert: Payment of ₦{{amount}} has been verified for booking <strong>{{booking_reference}}</strong>.</p>', NULL, '[\"booking_reference\",\"amount\"]', '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `emergency_alerts`
--

CREATE TABLE `emergency_alerts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `severity` varchar(255) NOT NULL DEFAULT 'low',
  `starts_at` datetime DEFAULT NULL,
  `ends_at` datetime DEFAULT NULL,
  `channels` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`channels`)),
  `is_public` tinyint(1) NOT NULL DEFAULT 1,
  `published_by` varchar(255) DEFAULT NULL,
  `published_at` timestamp NULL DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `emergency_contacts`
--

CREATE TABLE `emergency_contacts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `contact_type` varchar(255) NOT NULL,
  `contact_name` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `whatsapp` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `operating_hours` varchar(255) NOT NULL DEFAULT '24/7',
  `instruction` text DEFAULT NULL,
  `is_public` tinyint(1) NOT NULL DEFAULT 1,
  `is_emergency` tinyint(1) NOT NULL DEFAULT 1,
  `verified_at` timestamp NULL DEFAULT NULL,
  `verified_by` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `emergency_contacts`
--

INSERT INTO `emergency_contacts` (`id`, `location_id`, `contact_type`, `contact_name`, `phone`, `whatsapp`, `email`, `operating_hours`, `instruction`, `is_public`, `is_emergency`, `verified_at`, `verified_by`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 1, 'police', 'Memabod Police Station (Ikeja)', '+2348030000001', NULL, NULL, '24/7', 'Local police precinct for security concerns and emergency responses near Adeniyi Jones.', 1, 1, '2026-06-04 11:23:14', 'Corporate Security Desk', 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, 'medical', 'Reddington Hospital (Ikeja)', '+2348030000002', NULL, NULL, '24/7', 'Nearest premium emergency medical facility, located within 10 minutes of the property.', 1, 1, '2026-06-04 11:23:14', 'Corporate Medical Desk', 1, 2, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 1, 'support', 'Kevron Front Desk Concierge', '+2348030000003', '+2348030000003', 'support@kevronapartments.com', '24/7', 'For property concerns, smart lock issues, appliance guidance, and immediate check-in assistance.', 1, 0, '2026-06-04 11:23:14', 'Operations Desk', 1, 3, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 1, 'access', 'Kevron Security Command Center', '+2348030000004', '+2348030000004', 'security@kevronapartments.com', '24/7', 'Direct coordinate desk for visitor control, lockouts, gate verification, and CCTV logs.', 1, 1, '2026-06-04 11:23:14', 'HSE Lead', 1, 4, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `emergency_drill_records`
--

CREATE TABLE `emergency_drill_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `drill_type` varchar(255) NOT NULL,
  `drill_date` date NOT NULL,
  `participants_count` int(11) NOT NULL DEFAULT 0,
  `performance_score` decimal(5,2) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `emergency_drill_records`
--

INSERT INTO `emergency_drill_records` (`id`, `location_id`, `drill_type`, `drill_date`, `participants_count`, `performance_score`, `notes`, `created_at`, `updated_at`) VALUES
(1, 1, 'Fire Evacuation Drill', '2026-05-05', 12, 95.50, 'All simulated occupants evacuated building within 2 minutes 45 seconds. Assembly muster procedures executed correctly.', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `enforcement_actions`
--

CREATE TABLE `enforcement_actions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `rule_breach_report_id` bigint(20) UNSIGNED NOT NULL,
  `action_type` varchar(255) NOT NULL,
  `action_description` text NOT NULL,
  `charge_amount` decimal(12,2) NOT NULL DEFAULT 0.00,
  `deposit_deduction_amount` decimal(12,2) NOT NULL DEFAULT 0.00,
  `approved_by` varchar(255) DEFAULT NULL,
  `actioned_by` varchar(255) DEFAULT NULL,
  `guest_notified_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `enquiry_types`
--

CREATE TABLE `enquiry_types` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `enquiry_types`
--

INSERT INTO `enquiry_types` (`id`, `name`, `slug`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Booking Enquiry', 'booking', 1, 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'Availability Enquiry', 'availability', 1, 2, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'Guest Support', 'guest_support', 1, 3, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'Airport Pickup', 'airport_pickup', 1, 4, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(5, 'Corporate Stay', 'corporate', 1, 5, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(6, 'Long Stay', 'long_stay', 1, 6, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(7, 'General Enquiry', 'general', 1, 7, '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `evacuation_maps`
--

CREATE TABLE `evacuation_maps` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `unit_id` bigint(20) UNSIGNED DEFAULT NULL,
  `floor_label` varchar(255) DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `map_file_path` varchar(255) NOT NULL,
  `assembly_point_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_public` tinyint(1) NOT NULL DEFAULT 1,
  `is_guest_dashboard_visible` tinyint(1) NOT NULL DEFAULT 1,
  `verified_at` timestamp NULL DEFAULT NULL,
  `verified_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `evacuation_maps`
--

INSERT INTO `evacuation_maps` (`id`, `location_id`, `unit_id`, `floor_label`, `title`, `map_file_path`, `assembly_point_id`, `is_public`, `is_guest_dashboard_visible`, `verified_at`, `verified_by`, `created_at`, `updated_at`) VALUES
(1, 1, NULL, 'Ground Floor', 'Block A Ground Floor Evacuation Plan', 'pictures/evacuation-map-block-a.png', 1, 1, 1, '2026-06-04 11:23:14', 'HSE Compliance Lead', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `excessive_cleaning_reports`
--

CREATE TABLE `excessive_cleaning_reports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `cleaning_type` varchar(255) NOT NULL,
  `estimated_cost` decimal(12,2) NOT NULL DEFAULT 0.00,
  `description` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `reported_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `expansion_plans`
--

CREATE TABLE `expansion_plans` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `expansion_plans`
--

INSERT INTO `expansion_plans` (`id`, `title`, `body`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Flagship Launch - Adeniyi Jones, Ikeja', 'Establishing our brand standard with premium 1, 2, 3 and 4 bedroom smart serviced suites, laying the foundation of high-speed Wi-Fi, snooker/PS5 leisure, and security-conscious access near Lagos airports.', 1, 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'Scalable Reservation & Multi-Property Infrastructure', 'Optimizing our digital booking platform, dynamic corporate billing profiles, sitemaps, and database schemas to scale effortlessly as additional physical sites are brought online.', 1, 2, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'Future Branch Expansion', 'Extending the Kevron Suites and Apartments hospitality standard to high-density executive and commercial transit hubs as the brand grows, strictly adhering to our core positioning.', 1, 3, '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `failed_jobs`
--

CREATE TABLE `failed_jobs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `uuid` varchar(255) NOT NULL,
  `connection` text NOT NULL,
  `queue` text NOT NULL,
  `payload` longtext NOT NULL,
  `exception` longtext NOT NULL,
  `failed_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `faqs`
--

CREATE TABLE `faqs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `category_id` bigint(20) UNSIGNED NOT NULL,
  `question` text NOT NULL,
  `answer` text NOT NULL,
  `active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `summary` text DEFAULT NULL,
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `is_popular` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `visibility` varchar(255) NOT NULL DEFAULT 'public',
  `last_reviewed_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `faqs`
--

INSERT INTO `faqs` (`id`, `category_id`, `question`, `answer`, `active`, `created_at`, `updated_at`, `slug`, `summary`, `is_featured`, `is_popular`, `sort_order`, `visibility`, `last_reviewed_at`) VALUES
(1, 1, 'What is the check-in and check-out time?', 'Check-in is at 2:00 PM, and check-out is at 11:00 AM. Early check-in or late check-out is subject to availability and may attract a nominal charge. Please coordinate with our concierge.', 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00', NULL, NULL, 0, 0, 0, 'public', NULL),
(2, 1, 'Do you require a security deposit?', 'Yes, a refundable security deposit of ₦100,000 is required upon check-in to cover any potential damages. This is fully refunded within 24 hours of checkout following a room inspection.', 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00', NULL, NULL, 0, 0, 0, 'public', NULL),
(3, 2, 'How close are you to the Lagos airports?', 'We are approximately 8 minutes to the Local Airport (MM1/MM2) and 15 minutes to the Murtala Muhammed International Airport (MMIA), subject to traffic conditions. We provide airport pickups on request.', 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00', NULL, NULL, 0, 0, 0, 'public', NULL),
(4, 3, 'What security measures are in place?', 'Your safety is our top priority. We feature secured gate controls, keyless entry smart locks, 24/7 CCTV surveillance of external areas, smart intercom doorbells, and are located approximately 3 minutes from the Memabod Police Station.', 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00', NULL, NULL, 0, 0, 0, 'public', NULL),
(5, 4, 'Which apartment is best for a solo traveller?', 'The 1 Bedroom Master Suite is highly recommended for solo business executives or couples seeking premium luxury at a starting nightly price of ₦150,000.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(6, 4, 'Which apartment is best for a small family?', 'The 2 Bedroom Luxury Apartment offers a spacious en-suite family layout, private balconies, fully fitted kitchen, and laundry combo at ₦200,000/night.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(7, 4, 'Which apartment is best for a larger group?', 'The 3 Bedroom and 4 Bedroom Luxury Apartments are best suited for groups, large families, and corporate teams. They include in-suite PS5 console zones and slate-bed snooker tables.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(8, 4, 'Do all apartments have Wi-Fi and 24-hour power?', 'Yes! Every serviced suite at Kevron Suites and Apartments includes uninterrupted 24-hour power backed by dual gen networks and unlimited corporate-grade high-speed Wi-Fi.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(9, 4, 'Is airport pickup available for all apartment types?', 'Absolutely. Airport transit pickup (covering MM1, MM2, and International terminals) can be requested on demand for any apartment type during your reservation process.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(10, 4, 'Can I request a recommendation before booking?', 'Yes. You can use our interactive Ask for Recommendation form on the Compare page to get an instant recommendation or contact our desk on WhatsApp.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(11, 5, 'What can I see in the virtual tour?', 'The virtual tour allows you to inspect en-suite master bedrooms, open-plan lounges, dining setups, fully fitted kitchens, private balconies, and entertainment spaces like the snooker area and PS5 zone.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(12, 5, 'Can I view a specific apartment type?', 'Yes. Simply use our interactive Apartment Selector cards or the clickable interactive floor plan vector to switch directly between different layouts and rooms.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(13, 5, 'What if the 3D tour does not load on my device?', 'We provide a high-fidelity Room Category Fallback Gallery immediately below the tour screen. You can browse high-resolution category photography for all rooms seamlessly.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(14, 5, 'Can I book directly from the virtual tour page?', 'Absolutely. Simply click \"Book Now\" or \"Book This Apartment\" inside any selector card or the media stage overlays to pre-fill that room layout straight into our Booking and Reservation desk.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(15, 5, 'Does the virtual tour work on mobile devices?', 'Yes, our media stage and video controls are completely mobile-responsive. We automatically load specialized compressed walkthrough videos for smooth cellular network loads.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(16, 5, 'Can I reduce animations and heavy rotational camera movements?', 'Yes. Toggle the \"Reduced Motion\" switch in the selector bar to disable active panoramic panning, background zooms, and video auto-plays for maximum readability and visual comfort.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(17, 6, 'What can I see in the photo gallery?', 'Our visual gallery provides high-resolution, database-verified photos of Kevron Suites and Apartments, including exterior facades, open-plan smart lounges, orthopaedic en-suite bedrooms, quartz kitchens, private balconies, and smart lock setups.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(18, 6, 'Are the gallery photos authentic and recent?', 'Yes. All visual media in this gallery displays real, verified, and unedited photography taken at our Adeniyi Jones, Ikeja location, giving you an accurate picture of what to expect.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(19, 6, 'Can I filter photos by a specific suite layout?', 'Yes, our media cards are tagged by suite type. You can click on specific tags or filter by room categories (like Bedrooms, Lounges, and Kitchens) to see custom visual arrangements.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(20, 6, 'Are walk-through video tours available?', 'Yes! Reroute filters to the \"Videos\" category or click video thumbnails inside the gallery grid to load cinema-style HD walk-through guides detailing en-suite comfort.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(21, 6, 'Can I launch a 360° virtual tour from here?', 'Absolutely. Go to the \"360° Tours\" category and click any card to transition directly into our fully interactive en-suite virtual-tour system.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(22, 6, 'Can I book a specific suite directly from the gallery card?', 'Yes. Ranging from grids to lightbox overlays, every media card has dynamic \"Book Now\" links that will pre-fill your chosen suite layout straight into our reservation desk.', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, NULL, 0, 0, 0, 'public', NULL),
(23, 7, 'Does Kevron Suites and Apartments have 24-hour power?', 'Yes! We feature continuous 24-hour power supply. This is fully backed by stable grid connections, a dual-load industrial auto-generator network, and high-capacity inverter setups to make sure you never experience power interruptions.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(24, 7, 'Is Wi-Fi available, and what are the internet speeds?', 'Absolutely! Unlimited corporate-grade high-speed Wi-Fi is included in all rooms and lounges. Our fiber broadband backbone is optimized for remote work, streaming, Zoom meetings, and multi-device connection.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(25, 7, 'Are modern kitchen and private laundry facilities available inside the units?', 'Yes. Every luxury apartment (1 to 4 bedrooms) comes with a fully fitted gourmet kitchen (refrigerator, microwave, gas cooker, extractor, plates, and pots) and private, automatic front-load washing machines and clothes dryers.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(26, 7, 'Is airport pickup transit available?', 'Yes. Airport pickup and drop-off can be arranged on request for a seamless arrival. Chauffeur transit can cover both the local terminals (MM1/MM2) and Murtala Muhammed International Airport (MMIA). You can request this during booking or via our concierge.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(27, 7, 'Is local car rental available?', 'Yes. Chauffeur-driven luxury sedans and premium SUVs are available for daily hire to explore Lagos or attend corporate engagements securely.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(28, 7, 'Are PlayStation 5 consoles and snooker tables available in all apartments?', 'Our professional 8ft slate-bed snooker tables and PlayStation 5 consoles are fully provided inside the 3 Bedroom and 4 Bedroom Luxury Apartments as dedicated in-suite entertainment setups. Guests in other apartments can enjoy smart entertainment platforms.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(29, 7, 'What security features protect guests?', 'Guest safety is our priority. Our facility features secure gated perimeters, contactless keyless entry codes, high-security smart door deadbolts, 24/7 active external CCTV surveillance, and indoor video doorbells to monitor arrivals.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(30, 7, 'Is the property suitable for extended long-term stays?', 'Kevron Suites and Apartments is highly suited for long stays. With fully equipped kitchens, private laundry machines, backup power, unlimited internet, concierge support, and premium security, it delivers a comfortable home-away-from-home experience.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(31, 8, 'How can I request airport pickup transit?', 'You can request airport pickup (covering MM1, MM2, or International terminals) during your reservation checkout or via our dynamic form on this page. Our concierge team will review arrival parameters and allocate an executive vehicle.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(32, 8, 'How does the digital check-in work?', 'Before arriving in Adeniyi Jones, submit your booking reference, guest details, and ID verification on this page. Pre-registering guest details allows us to compile your keyless door PINs in advance, letting you skip front desk checks.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(33, 8, 'Are returning loyalty stay discounts offered?', 'Yes. Returning executives benefit from custom corporate promo codes. Verify your previous reservation reference using our repeat stay form to request discounts on subsequent stays.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(34, 8, 'How quickly are maintenance and housekeeping requests resolved?', 'Concierge and housekeeping services are attended to promptly. Routine maintenance or technical connection issues are resolved by on-site engineers within an hour of submission.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(35, 9, 'Can I request pickup from MM1 or MM2?', 'Yes. We provide dedicated airport transit pickups from both MM1 and MM2 local terminals. Our vetted security drivers will park at terminal parking areas and meet you at the arrival exit corridors.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(36, 9, 'Can I request pickup from Murtala Muhammed International Airport?', 'Absolutely. We provide premium international airport transfer services. Our chauffeurs monitor arriving flights and will hold a personalized nameboard paging sign at the MMIA arrival gate exit terminal.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(37, 9, 'Do I need to provide my flight number?', 'Yes. Providing your exact flight number (e.g. EK 783, QR 1407) is highly recommended. It allows our dispatcher desk to track landing schedules in real-time and coordinate the driver around delays.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(38, 9, 'How is the pickup price calculated?', 'Pricing for airport pickups is competitive and depends on parameters such as terminal type (local vs international), passenger counts, luggage volume, landing hour, and vehicle model choices.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(39, 9, 'Is car rental available with a driver?', 'Yes. All car rental hire packages are fully chauffeur-driven by security-trained local drivers to ensure premium safety and navigation around Lagos routes.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(40, 9, 'Can I request a car for multiple days?', 'Yes. You can hire a vehicle for a single day, several days, or for the entire duration of your Lagos trip. Corporate discount rates apply for long-term car rental terms.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(41, 9, 'How do I know my request is confirmed?', 'After submitting your pickup or car rental request form, our logistics officers will review fleet availability and email a tailored pricing agreement. The service is confirmed once the terms are finalized.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(42, 9, 'Can I request pickup without a booking reference?', 'Yes, you can request transit pickups even before finalizing a reservation. However, linking requests to an active booking reference helps speed up room allocation checks.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(43, 10, 'Can companies book apartments for staff?', 'Yes, companies can book serviced apartments for staff, consultants, executives, and relocation guests. We support flexible single bookings or block group reservations tailored to company requirements.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(44, 10, 'Can we request negotiated corporate rates?', 'Yes. Repeat clients, companies booking regularly, and long-stay guests may request negotiated corporate rates. Rates depend on room nights, stay duration, and volume frequency.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(45, 10, 'Can we book for multiple guests?', 'Absolutely. We coordinate group stays and project teams easily. Our portal enables uploading a group guest roster file to assign individual rooms and prepare terminal transfers.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(46, 10, 'Is company invoice billing available?', 'Company invoice billing is available for approved corporate clients. Direct invoicing is subject to review and credit approval. Bank transfer and card payments are accepted by default.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(47, 10, 'Can airport pickup be arranged for staff?', 'Yes. We coordinate airport pickups from MM1, MM2, and Murtala Muhammed International Airport. Group pickups and professional car rental services with drivers can also be requested.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(48, 10, 'Are long-stay corporate rates available?', 'Yes. Highly competitive extended stay corporate packages are available for weekly or monthly durations, providing substantial savings for relocation guests and project teams.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(49, 10, 'Can we upload a guest list?', 'Yes. The group booking request form supports secure uploads of guest list files in CSV, Excel, or PDF formats. These files are stored in a private directory accessible only to authorized admins.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(50, 10, 'Is there dedicated corporate support?', 'Yes. Verified companies and high-volume corporate accounts are assigned a dedicated relations coordinator to handle reservation tweaks, priority billing, and arrival assistance.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(51, 11, 'Are weekly or monthly stays available?', 'Yes. Weekly, monthly, and extended stays are fully supported at Kevron Suites and Apartments, Adeniyi Jones, Ikeja. We provide substantial savings for guests staying longer than a week.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(52, 11, 'Are weekly/monthly rates displayed?', 'Approved weekly and monthly rates are displayed dynamically or are available on request, depending on apartment type, stay duration, season, and guest volume.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(53, 11, 'Is a deposit required for long stays?', 'Yes, a deposit and a refundable security deposit are standard requirements to secure extended stay bookings and cover any eventual unit maintenance.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(54, 11, 'Are cleaning and housekeeping included?', 'Regular cleaning, fresh linen and towel replacement, and maintenance check-ups are included in long-stay agreements, with flexible frequencies.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(55, 11, 'Can I extend my stay?', 'Stay extensions are supported but are subject to unit availability. We recommend informing your coordinator at least 7 to 10 days before checkout.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(56, 11, 'Can companies book long stays for staff?', 'Absolutely. We regularly manage extended relocations, engineering project teams, and consultants for registered companies, supporting consolidated billing.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(57, 11, 'Are visitors allowed?', 'Visitors are allowed subject to security clearance and house rules regarding noise, parking, and maximum overnight occupancy limits.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(58, 11, 'Is airport pickup available for long-stay guests?', 'Yes, professional airport transit and private chauffeur car rental services can be easily added to your extended stay request.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(59, 11, 'Can I request car rental during my stay?', 'Yes, executive sedan or SUV rentals with dedicated drivers can be coordinated through our transit concierge.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(60, 11, 'Is Wi-Fi and 24-hour power available?', 'Yes, unlimited broadband Wi-Fi and 24-hour power backed by heavy-duty dual generators are fully guaranteed in all suites.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(61, 12, 'Are offers and packages always available?', 'Offers and packages are subject to apartment availability and strict season guidelines. Certain promotions may have blackout periods or minimum stay limits.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(62, 12, 'Can I combine multiple stay offers?', 'No. Unless explicitly approved by Kevron management in writing, promotional rates and discount codes cannot be combined for a single reservation.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(63, 12, 'Are weekly/monthly long-stay discounts available?', 'Yes. Extended stay monthly plans can be configured dynamically. Please submit a request on our Long Stay page or contact our whatsapp stays desk.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(64, 12, 'How do I claim a repeat guest offer?', 'Simply select the Repeat Guest Loyalty package on the form and enter your previous booking reference (e.g., KEV-B-123456). Our coordinator will verify it and apply your discount.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(65, 12, 'Do seasonal offers have blackout dates?', 'Yes. High-demand holiday periods (like Christmas Eve, Christmas Day, or New Year Eve) may be flagged as blackout blocks, where standard corporate pricing rules apply.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(66, 12, 'How do promo codes work at Kevron Suites?', 'You can validate your active coupon code directly on our detail offers screen. Once validated, the discount is automatically applied to your direct booking invoice.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, NULL, 0, 0, 0, 'public', NULL),
(67, 13, 'Where is Kevron Suites and Apartments located?', 'We are located at 7B Regina Coker Street, Adeniyi Jones, Ikeja / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria. This premium location sits within a highly secure residential perimeter on the Lagos mainland.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(68, 13, 'How far is it from MM1 and MM2?', 'We are approximately 8 minutes away from the local airport terminals (MM1 and MM2), subject to traffic conditions.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(69, 13, 'How far is it from Murtala Muhammed International Airport?', 'We are approximately 15 minutes away from the Murtala Muhammed International Airport (MMIA), subject to traffic conditions.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(70, 13, 'Is the property close to Ikeja City Mall?', 'Yes. The premium Ikeja City Mall (containing Shoprite, major international brands, cinemas, and food courts) is located approximately 8 minutes away, subject to traffic.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(71, 13, 'Are there restaurants nearby?', 'Absolutely. Sitting along the upscale Adeniyi Jones boulevard, our apartments are close to numerous continental and local restaurants, eateries, bars, and cafes.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(72, 13, 'Is it suitable for business travellers?', 'Yes, our serviced suites are exceptionally configured for solo executives, consultants, corporate project teams, and relocation guests. We provide 24-hour stable power, high-speed Wi-Fi, laundry utilities, private balconies, and dedicated workspaces.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(73, 13, 'Is airport pickup available?', 'Yes. Premium chauffeur airport pickup from both local (MM1/MM2) and international (MMIA) terminals can be coordinated on request.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(74, 13, 'Can I rent a car during my stay?', 'Yes. Chauffeur-driven executive car rentals (complete with security-trained professional local drivers) are available on request to facilitate your movements across Lagos.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(75, 13, 'What security features are available?', 'Security-controlled access, keyless smart locks, 24/7 CCTV perimeter camera coverage, and intercom video doorbell systems support a controlled guest environment. We are also located approximately 3 minutes away from the Memabod Police Station.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(76, 3, 'Does the property have smart locks?', 'Yes, Kevron Suites and Apartments features advanced keyless smart locks on every apartment door. Guests receive unique digital access codes upon check-in, which expire automatically at checkout.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(77, 3, 'Is there CCTV coverage?', 'Yes, we maintain active CCTV coverage in relevant access gates, perimeters, common corridors, and parking areas to support a secure and controlled property environment.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(78, 3, 'Are private rooms monitored by CCTV?', 'Absolutely not. Guest privacy remains paramount. CCTV monitoring strictly covers relevant common, parking, gate, and access areas, and is never installed inside private apartment suites, bedrooms, or private quarters.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(79, 3, 'Is visitor management available?', 'Yes. To maintain a quiet, secure, and family-friendly environment, all non-resident visitors are logged at the entrance security gate and must be authorized by resident guests.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(80, 3, 'Is the property suitable for families?', 'Yes, our combination of controlled facility access, quiet hours, keyless apartment deadbolts, and secure smart video doorbells makes the property highly suitable and reassuring for families.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(81, 3, 'Is it suitable for executives and corporate travellers?', 'Undoubtedly. Corporate guests benefit from 24-hour backup stable power, unlimited broadband Wi-Fi, secure keyless entry, and transport pickup configurations that support high-productivity business travel.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(82, 3, 'Is there a nearby police station?', 'Yes, Memabod Police Station is located approximately 3 minutes away from the Adeniyi Jones facility branch, subject to traffic parameters.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(83, 3, 'How do guests report issues?', 'Guests can log check-in concerns, smart lock updates, or maintenance requests directly through their guest portal check-in tool, or contact our 24-hour support coordinators via the WhatsApp Concierge Desk.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(84, 14, 'Does Kevron Suites and Apartments use LED lighting?', 'Yes, Kevron Suites and Apartments utilizes energy-efficient LED lighting where installed across our Adeniyi Jones, Ikeja branch to support practical energy resource management.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(85, 14, 'Are the appliances energy-efficient?', 'Yes, we equip our serviced apartments with modern kitchen, laundry, and climate appliances selected for balanced, energy-conscious consumption where available.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(86, 14, 'How can guests support responsible utility use?', 'Guests can contribute to utility conservation by switching off split air conditioning units when leaving, turning off unused lights, and ensuring taps are fully closed after use.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(87, 14, 'Is solar power available?', 'Solar energy backup arrays are part of our future sustainability plan and may be introduced in upcoming facility expansions where operationally feasible.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(88, 14, 'Is waste management available?', 'Structured waste separation and recycling streams are under review as a future sustainability plan subject to local management adoption.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(89, 14, 'Can guests report leaks or faulty appliances?', 'Absolutely. We encourage guests to report any leaking taps, running toilets, or appliance concerns immediately through our dynamic online Guest Services maintenance ticketing hub or via the WhatsApp support desk.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(90, 14, 'Is sustainability part of future expansion?', 'Yes, as Kevron Suites and Apartments grows, additional responsible resource initiatives—including smart energy controls and water-saving fixtures—will be reviewed for implementation.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(91, 15, 'Are reviews on this page genuine?', 'Yes. All reviews published on our website are submitted by genuine guests who have checked out of Kevron Suites and Apartments. We do not seed or display fake guest feedback as approved public reviews.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(92, 15, 'Can I leave a review after checkout?', 'Absolutely. Checked-out guests are encouraged to share their feedback after their stay using our online submission form or by clicking the review link sent to their registered email.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(93, 15, 'Do I need a booking reference to review?', 'While providing a booking reference is highly recommended to confirm authenticity and obtain a \"Verified Stay\" badge, you can submit a review with basic booking details for administrative verification.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(94, 15, 'Can I submit category ratings?', 'Yes, our guest review form allows you to submit individual ratings across key categories including cleanliness, comfort, location, security, service, and value.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(95, 15, 'Are reviews published immediately?', 'No. All submitted reviews are reviewed before publication to prevent spam, offensive content, or private information from appearing publicly. Approved reviews are displayed using the guest’s public display name or initials.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(96, 15, 'Can I submit a video testimonial?', 'Yes. If you wish to submit a video testimonial, please let our team know. Approved video testimonials are featured in our media section and includes transcripts for accessibility.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(97, 15, 'Can Google reviews be displayed?', 'Yes, when official integration is active and configured, verified Google reviews from our Google Business Profile are displayed alongside our direct website guest feedback.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(98, 15, 'Can I request that my name is hidden?', 'Absolutely. You can request to publish your review under an initials format or custom display name to protect your private booking details.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, NULL, 0, 0, 0, 'public', NULL),
(99, 16, 'How do I book an apartment?', 'You can secure your booking directly through our secure online reservation portal by navigating to the <a href=\"/booking\" class=\"text-royal-blue hover:underline\">booking page</a>. Alternatively, you can contact our reservation desk via telephone or WhatsApp. Confirmation is immediate once payment is processed and verified by our management team.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'how-do-i-book-an-apartment', 'You can secure your booking directly through our secure online reservation portal by navigating to t...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(100, 16, 'Can I check availability before booking?', 'Yes, our online system provides real-time calendar updates for all suites. Simply select your check-in and check-out dates on our <a href=\"/apartments\" class=\"text-royal-blue hover:underline\">Apartments page</a> to view active availability. You can also message our front desk to query customized combinations or specific block bookings.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-check-availability-before-booking', 'Yes, our online system provides real-time calendar updates for all suites. Simply select your check-...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(101, 16, 'Can I book a specific apartment type?', 'Absolutely. We offer several beautifully configured units including our 1 Bedroom Master Suite, 2 Bedroom Luxury, 3 Bedroom Luxury, and 4 Bedroom Luxury apartments. Your reservation guarantees the selected apartment category, subject to policy and final management confirmation.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-book-a-specific-apartment-type', 'Absolutely. We offer several beautifully configured units including our 1 Bedroom Master Suite, 2 Be...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(102, 16, 'Can I book through WhatsApp?', 'Yes, we provide direct WhatsApp booking assistance for your convenience. You can initiate a chat with our guest relations team to discuss availability, request special layouts, and secure your booking invoice directly via instant messaging.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-book-through-whatsapp', 'Yes, we provide direct WhatsApp booking assistance for your convenience. You can initiate a chat wit...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(103, 16, 'Do I receive a booking confirmation?', 'Yes, once your booking request is successfully submitted and payment is received, an automated confirmation email containing your booking reference, summary invoice, and arrival instructions is generated. Please retain this email for checking-in on arrival.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'do-i-receive-a-booking-confirmation', 'Yes, once your booking request is successfully submitted and payment is received, an automated confi...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(104, 17, 'What payment methods are accepted?', 'We accept direct bank transfers, credit/debit cards (via our Flutterwave secure gateway), and corporate invoicing billing. All bank transfers require proof of payment upload and verified host confirmations.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:13', 'what-payment-methods-are-accepted', 'Accepted payment methods at Kevron.', 1, 1, 1, 'public', '2026-06-04 11:23:13'),
(105, 17, 'Can I pay a deposit?', 'Yes, a reservation deposit is required to secure block bookings or extended stays, subject to our booking policies. The balance payment must be fully settled prior to check-in. For standard daily rentals, full prepayment is required.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-pay-a-deposit', 'Yes, a reservation deposit is required to secure block bookings or extended stays, subject to our bo...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(106, 17, 'Can I upload proof of bank transfer?', 'Yes. If you make a direct bank transfer, you can upload your proof of payment through our portal or send it directly to our reservation WhatsApp channel. Once our finance department verifies the receipt, your reservation status will be updated to confirmed.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-upload-proof-of-bank-transfer', 'Yes. If you make a direct bank transfer, you can upload your proof of payment through our portal or...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(107, 17, 'Do I receive an invoice or receipt?', 'Yes, an official VAT invoice and receipt are issued electronically for every booking. If you require a specialized corporate billing invoice, please provide your company details during the booking process or contact our finance team.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'do-i-receive-an-invoice-or-receipt', 'Yes, an official VAT invoice and receipt are issued electronically for every booking. If you require...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(108, 17, 'Are there extra charges?', 'No hidden charges apply. Our base rates include utility costs, 24-hour backup power, high-speed Wi-Fi, and standard housekeeping. Optional add-ons such as airport pickup, car rentals, or laundry services are billed separately on request.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-there-extra-charges', 'No hidden charges apply. Our base rates include utility costs, 24-hour backup power, high-speed Wi-F...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(109, 18, 'What time is check-in and check-out?', 'Our standard check-in time is from 2:00 PM, and standard check-out is by 12:00 PM (noon). These timings ensure our housekeeping team has sufficient time to sanitize and prepare the apartments to our premium standards. Early check-in or late check-out is subject to availability and prior management approval.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'what-time-is-check-in-and-check-out', 'Our standard check-in time is from 2:00 PM, and standard check-out is by 12:00 PM (noon). These timi...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(110, 18, 'Can I share my arrival time before check-in?', 'Yes, we highly encourage all guests to communicate their estimated arrival time at least 24 hours in advance. This helps our guest relations officers coordinate a seamless greeting, key handover, and smart-lock setup.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-share-my-arrival-time-before-check-in', 'Yes, we highly encourage all guests to communicate their estimated arrival time at least 24 hours in...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(111, 18, 'Is digital check-in available?', 'Yes, where configured, digital check-in can be completed prior to your arrival by uploading your valid identification documents. Upon arrival, you will receive your smart access codes or physical keys directly from the duty supervisor.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-digital-check-in-available', 'Yes, where configured, digital check-in can be completed prior to your arrival by uploading your val...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(112, 18, 'What information is required before arrival?', 'All checking-in guests must present a valid government-issued photo identity card, passport, or driver’s license. In compliance with security standards, primary guest registration details must be completed before apartment access is granted.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'what-information-is-required-before-arrival', 'All checking-in guests must present a valid government-issued photo identity card, passport, or driv...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(113, 18, 'Can I request early check-in or late checkout?', 'Early check-in and late check-out requests are subject to availability and cannot be guaranteed in advance. To guarantee early access or extended departures, guests are advised to book an additional night. Additional fees may apply based on hours requested.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-request-early-check-in-or-late-checkout', 'Early check-in and late check-out requests are subject to availability and cannot be guaranteed in a...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(114, 19, 'Can I cancel my booking?', 'Yes, bookings can be cancelled in accordance with the specific terms outlined during reservation. Cancellations made within our free-cancellation window qualify for refunds, subject to policy guidelines. Please refer to our <a href=\"/policies\" class=\"text-royal-blue hover:underline\">Policies page</a> for precise cancellation terms.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-cancel-my-booking', 'Yes, bookings can be cancelled in accordance with the specific terms outlined during reservation. Ca...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(115, 19, 'Can I modify my booking dates?', 'Modifications to booking dates can be requested, subject to availability and seasonal rate adjustments. Any change requests should be submitted at least 48 hours prior to check-in. Date modifications are not fully guaranteed and require official management confirmation.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-modify-my-booking-dates', 'Modifications to booking dates can be requested, subject to availability and seasonal rate adjustmen...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(116, 19, 'Can I extend my stay?', 'Stay extensions are welcome and are subject to apartment availability and current rates. We recommend notifying our reception desk as early as possible if you wish to extend your stay to prevent your suite from being booked by another guest.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-extend-my-stay', 'Stay extensions are welcome and are subject to apartment availability and current rates. We recommen...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(117, 19, 'Can I upgrade my apartment?', 'Yes, upgrades to larger suites (e.g. from a 1 Bedroom to a 2 or 3 Bedroom Luxury Apartment) can be requested at check-in or during your stay, subject to availability. Guests must cover the rate difference as outlined in our pricing structure.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-upgrade-my-apartment', 'Yes, upgrades to larger suites (e.g. from a 1 Bedroom to a 2 or 3 Bedroom Luxury Apartment) can be r...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(118, 19, 'How do refunds work?', 'Eligible refunds are processed using the original payment channel where possible or via bank transfer, subject to bank clearance times. Administrative charges may apply depending on the booking platform and cancellation timeline. Refunds are executed within 7 to 14 business days.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'how-do-refunds-work', 'Eligible refunds are processed using the original payment channel where possible or via bank transfe...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(119, 29, 'Where is Kevron Suites and Apartments located?', 'We are located in Adeniyi Jones, Ikeja, Lagos, Nigeria at 7B Regina Coker Street / No. 8 Ogunlowo Street, Lagos 100271.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:05', 'where-is-kevron-suites-and-apartments-located', 'We are situated in the premium residential and commercial hub of Adeniyi Jones, Ikeja, Lagos, Nigeri...', 1, 0, 5, 'public', '2026-06-04 11:23:03'),
(120, 20, 'How far is the apartment from Lagos airport?', 'The property is centrally located in Ikeja, approximately 15 to 25 minutes drive from the Murtala Muhammed International Airport (LOS) and the Domestic Terminal. Travel times may vary depending on local traffic conditions. We recommend planning your airport transit ahead of time.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'how-far-is-the-apartment-from-lagos-airport', 'The property is centrally located in Ikeja, approximately 15 to 25 minutes drive from the Murtala Mu...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(121, 20, 'Is it close to Ikeja City Mall?', 'Yes, Kevron Suites and Apartments is within close proximity to Ikeja City Mall (Shoprite), which is about a 10 to 15-minute drive away. The mall offers excellent access to shopping, supermarkets, cinemas, restaurants, and various lifestyle brands.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-it-close-to-ikeja-city-mall', 'Yes, Kevron Suites and Apartments is within close proximity to Ikeja City Mall (Shoprite), which is...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(122, 20, 'Are there eateries nearby?', 'Yes, Adeniyi Jones is renowned for a diverse range of restaurants, fast-food chains, cafes, and local dining options. Most eateries are within short walking distance or a brief drive, and standard food delivery services operate actively in our area.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-there-eateries-nearby', 'Yes, Adeniyi Jones is renowned for a diverse range of restaurants, fast-food chains, cafes, and loca...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(123, 20, 'Is the location suitable for business travellers?', 'Absolutely. Being in Ikeja, the capital city of Lagos, our apartments offer seamless access to government offices, corporate headquarters, business hubs, and transport links. Coupled with our high-speed Wi-Fi, it is the ideal setup for executives.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-the-location-suitable-for-business-travellers', 'Absolutely. Being in Ikeja, the capital city of Lagos, our apartments offer seamless access to gover...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(124, 21, 'Is the property secure?', 'Security is our utmost priority at Kevron. We employ robust smart living structures, including 24/7 uniformed guards, controlled facility access, perimeter protection, and high-level structural integrity. Our location is in a highly secure residential pocket of Adeniyi Jones. Learn more on our <a href=\"/security-smart-living\" class=\"text-royal-blue hover:underline\">smart security page</a>.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-the-property-secure', 'Security is our utmost priority at Kevron. We employ robust smart living structures, including 24/7...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(125, 21, 'Are smart locks available?', 'Yes, all our luxury apartments are equipped with high-grade electronic smart locks. Guests receive unique access codes upon verification, ensuring secure keyless entry and complete peace of mind during their stay.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-smart-locks-available', 'Yes, all our luxury apartments are equipped with high-grade electronic smart locks. Guests receive u...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(126, 21, 'Is there CCTV coverage?', 'Yes, we maintain 24-hour CCTV camera surveillance in public access points, corridors, parking zones, and external perimeters. In strict compliance with privacy standards, no cameras are located inside any private apartment rooms or bathrooms.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-there-cctv-coverage', 'Yes, we maintain 24-hour CCTV camera surveillance in public access points, corridors, parking zones,...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(127, 21, 'Are private rooms monitored by CCTV?', 'No. CCTV surveillance is strictly limited to common outdoor spaces, corridors, and entrance points to protect facility safety. Your private suite, bedrooms, and bathrooms have absolute privacy and are never monitored.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-private-rooms-monitored-by-cctv', 'No. CCTV surveillance is strictly limited to common outdoor spaces, corridors, and entrance points t...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(128, 21, 'Is there a nearby police station?', 'Yes, our properties are located within close reach of local security forces, including the Ikeja Police Command. We also maintain active tie-ins with private security response services to handle any rare security escalations.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-there-a-nearby-police-station', 'Yes, our properties are located within close reach of local security forces, including the Ikeja Pol...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(129, 22, 'Is there 24-hour power and Wi-Fi?', 'Yes, we provide uninterrupted 24-hour power backup supported by solar systems, soundproof backup generators, and inverter setups. Complimentary high-speed fiber-optic Wi-Fi is active throughout the entire building and available to all checked-in guests.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-there-24-hour-power-and-wi-fi', 'Yes, we provide uninterrupted 24-hour power backup supported by solar systems, soundproof backup gen...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(130, 22, 'Is high-speed internet available?', 'Yes, we host high-speed, multi-provider broadband internet in every apartment. The system is designed to support remote working, high-definition video conferencing, corporate VPNs, and streaming services smoothly.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-high-speed-internet-available', 'Yes, we host high-speed, multi-provider broadband internet in every apartment. The system is designe...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(131, 22, 'Are kitchen and laundry facilities available?', 'Yes, each apartment features a fully equipped kitchen complete with a refrigerator, microwave oven, gas stove, and essential cookware. Washing machines or professional dry-cleaning arrangements are also available on request.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-kitchen-and-laundry-facilities-available', 'Yes, each apartment features a fully equipped kitchen complete with a refrigerator, microwave oven,...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(132, 22, 'Are PS5 and snooker available?', 'Yes, where configured or requested, we offer access to recreational amenities such as a snooker table and PlayStation 5 (PS5) setups in designated entertainment zones. Please check availability with our front desk.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-ps5-and-snooker-available', 'Yes, where configured or requested, we offer access to recreational amenities such as a snooker tabl...', 0, 0, 0, 'public', '2026-06-04 11:23:03');
INSERT INTO `faqs` (`id`, `category_id`, `question`, `answer`, `active`, `created_at`, `updated_at`, `slug`, `summary`, `is_featured`, `is_popular`, `sort_order`, `visibility`, `last_reviewed_at`) VALUES
(133, 22, 'Are balconies available?', 'Yes, several of our premium 2, 3, and 4-bedroom apartments feature lovely private balconies. These spaces offer peaceful views of the residential Adeniyi Jones neighborhood and are perfect for morning coffee or fresh air.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-balconies-available', 'Yes, several of our premium 2, 3, and 4-bedroom apartments feature lovely private balconies. These s...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(134, 23, 'Can I request airport pickup?', 'Yes, we offer premium airport pickup and drop-off services on request. To guarantee this service, please share your flight details, passenger count, and arrival time with our guest relations officers at least 48 hours prior to your landing.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-request-airport-pickup', 'Yes, we offer premium airport pickup and drop-off services on request. To guarantee this service, pl...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(135, 23, 'Can I request car rental?', 'Yes, we can coordinate professional car rental services with experienced drivers for your daily commutes in Lagos. You can select from standard sedans, luxury SUVs, or larger utility vans to match your travel needs.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-request-car-rental', 'Yes, we can coordinate professional car rental services with experienced drivers for your daily comm...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(136, 23, 'Is airport pickup included in the apartment price?', 'Airport pickup is billed as an optional add-on service and is not included in the base nightly apartment rental price, unless explicitly specified in a promotional packages deal. Pricing is determined on request based on car selection.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-airport-pickup-included-in-the-apartment-price', 'Airport pickup is billed as an optional add-on service and is not included in the base nightly apart...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(137, 23, 'What details are needed for airport pickup?', 'We require your complete flight number, airline name, estimated landing time, primary guest name, and the number of luggage items. This information allows our professional driver to track your flight and time the greeting perfectly.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'what-details-are-needed-for-airport-pickup', 'We require your complete flight number, airline name, estimated landing time, primary guest name, an...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(138, 23, 'Can corporate guests request staff pickup?', 'Yes, we specialize in organizing group transit or executive shuttles for corporate teams arriving in Lagos. Let our booking manager coordinate multiple airport arrivals or dedicated daily routes for your staff.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-corporate-guests-request-staff-pickup', 'Yes, we specialize in organizing group transit or executive shuttles for corporate teams arriving in...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(139, 24, 'Are parties allowed?', 'In order to preserve the serene, secure, and professional environment of Kevron Suites and Apartments, strictly no parties, loud social gatherings, or loud musical setups are permitted inside the apartments or common spaces. Violation of this rule may lead to immediate eviction without refund.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-parties-allowed', 'In order to preserve the serene, secure, and professional environment of Kevron Suites and Apartment...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(140, 24, 'Is smoking allowed?', 'All our indoor apartments are strictly smoke-free. Guests who wish to smoke are requested to use designated outdoor spaces or private balconies, ensuring all doors and windows to the apartment interior remain closed.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-smoking-allowed', 'All our indoor apartments are strictly smoke-free. Guests who wish to smoke are requested to use des...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(141, 24, 'Are visitors allowed?', 'Registered guests are permitted to host visitors within reasonable hours, subject to security verification at the main gate. In compliance with safety regulations, visitors staying overnight must register formally with the front desk and present valid ID.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-visitors-allowed', 'Registered guests are permitted to host visitors within reasonable hours, subject to security verifi...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(142, 24, 'Are pets allowed?', 'To maintain an allergen-free environment for all our guests, pets are generally not permitted on the premises. Special exceptions for service dogs may be considered, subject to prior administrative approval and house rules.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-pets-allowed', 'To maintain an allergen-free environment for all our guests, pets are generally not permitted on the...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(143, 24, 'Are quiet hours enforced?', 'Yes, quiet hours are observed between 10:00 PM and 7:00 AM daily. We ask all guests to keep television and music volumes at considerate levels to ensure all residents enjoy a peaceful and restful stay.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-quiet-hours-enforced', 'Yes, quiet hours are observed between 10:00 PM and 7:00 AM daily. We ask all guests to keep televisi...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(144, 25, 'Can I book weekly or monthly?', 'Yes, we provide highly flexible extended stay programs for guests looking to stay weekly, monthly, or longer. We offer premium serviced living with full amenities, ensuring a comfortable home-away-from-home experience in Ikeja. Read more on our <a href=\"/long-stay-serviced-apartments-ikeja\" class=\"text-royal-blue hover:underline\">long stay page</a>.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-book-weekly-or-monthly', 'Yes, we provide highly flexible extended stay programs for guests looking to stay weekly, monthly, o...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(145, 25, 'Are weekly/monthly rates available?', 'Yes, we offer discounted, negotiated tier rates for extended bookings. Weekly and monthly discount parameters depend on the season and suite choice. Please connect with our sales team to receive a tailored long-stay invoice.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-weeklymonthly-rates-available', 'Yes, we offer discounted, negotiated tier rates for extended bookings. Weekly and monthly discount p...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(146, 25, 'Is a deposit required for long stays?', 'Yes, a refundable security deposit and a partial upfront booking payment are required to lock in extended long-term rentals. This security deposit is held against damages and fully refunded upon checkout inspection.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'is-a-deposit-required-for-long-stays', 'Yes, a refundable security deposit and a partial upfront booking payment are required to lock in ext...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(147, 25, 'Can I extend my long stay?', 'Yes, stay extensions are welcome, but we require a minimum of 7 days notice prior to your scheduled check-out date. Extensions are subject to suite availability and current seasonal rates.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-i-extend-my-long-stay', 'Yes, stay extensions are welcome, but we require a minimum of 7 days notice prior to your scheduled...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(148, 25, 'Are housekeeping and maintenance support available?', 'Yes, all long-stay reservations include regular housekeeping service, sheet changes, and 24/7 maintenance response. Our on-site supervisors ensure your apartment remains in top-tier condition throughout your residency.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'are-housekeeping-and-maintenance-support-available', 'Yes, all long-stay reservations include regular housekeeping service, sheet changes, and 24/7 mainte...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(149, 26, 'Can a company book for staff?', 'Yes, corporate organizations can reserve suites for staff, business partners, or relocated executives. We provide corporate-compliant billing, guest lists management, and customized hospitality arrangements. Learn more on our <a href=\"/corporate-stays\" class=\"text-royal-blue hover:underline\">corporate bookings hub</a>.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-a-company-book-for-staff', 'Yes, corporate organizations can reserve suites for staff, business partners, or relocated executive...', 1, 1, 0, 'public', '2026-06-04 11:23:03'),
(150, 26, 'Can we request invoice billing?', 'Yes, we offer official corporate invoice billing options for pre-approved corporate accounts. We require an official purchase order or a letter of authority from your company’s finance director to activate credit/invoice pathways.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-we-request-invoice-billing', 'Yes, we offer official corporate invoice billing options for pre-approved corporate accounts. We req...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(151, 26, 'Can we upload a guest list?', 'Yes, our corporate booking portal enables companies to submit lists of arriving team members. Our front office handles pre-registration, room allocations, and coordinated arrivals for the entire delegation.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-we-upload-a-guest-list', 'Yes, our corporate booking portal enables companies to submit lists of arriving team members. Our fr...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(152, 26, 'Can we request negotiated rates?', 'Yes. For companies with recurring booking volumes or extended project timelines in Lagos, we can draft a Corporate Rate Agreement offering fixed discounted rates throughout the fiscal year.', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'can-we-request-negotiated-rates', 'Yes. For companies with recurring booking volumes or extended project timelines in Lagos, we can dra...', 0, 0, 0, 'public', '2026-06-04 11:23:03'),
(153, 26, 'Can we book for project teams?', 'Absolutely. We offer multi-room block bookings, allowing your project teams to reside in adjacent units within the same secure building, fostering collaboration while preserving individual privacy.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'can-we-book-for-project-teams', 'Absolutely. We offer multi-room block bookings, allowing your project teams to reside in adjacent un...', 0, 0, 0, 'public', '2026-06-04 11:23:04'),
(154, 27, 'Is there a security deposit?', 'Yes, a refundable security deposit is required at check-in to cover any accidental damages to the property, furniture, or smart appliances. The deposit amount depends on the apartment size and length of stay.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'is-there-a-security-deposit', 'Yes, a refundable security deposit is required at check-in to cover any accidental damages to the pr...', 0, 0, 0, 'public', '2026-06-04 11:23:04'),
(155, 27, 'What happens if there is damage?', 'In the rare event that accidental damage occurs, please notify our front desk immediately. Our maintenance team will assess the repair or replacement cost based on market values, and this cost will be deducted from your deposit.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'what-happens-if-there-is-damage', 'In the rare event that accidental damage occurs, please notify our front desk immediately. Our maint...', 0, 0, 0, 'public', '2026-06-04 11:23:04'),
(156, 27, 'How are damages assessed?', 'Damages are assessed fairly by our facility management team using standard replacement and repair cost schedules. Guests are invited to participate in the inspection and discuss any assessments openly with our supervisor.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'how-are-damages-assessed', 'Damages are assessed fairly by our facility management team using standard replacement and repair co...', 0, 0, 0, 'public', '2026-06-04 11:23:04'),
(157, 27, 'Is the security deposit refundable?', 'Yes, the security deposit is fully refundable upon checkout, following a successful joint inspection of the suite showing no damages, structural issues, or missing inventory. Refunds are typically processed instantly at checkout.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'is-the-security-deposit-refundable', 'Yes, the security deposit is fully refundable upon checkout, following a successful joint inspection...', 0, 0, 0, 'public', '2026-06-04 11:23:04'),
(158, 27, 'Are guests responsible for visitors?', 'Yes. Primary registered guests are fully liable and responsible for the behavior and actions of any visitors they host on the property. Any damages caused by visitors will be charged against the primary guest’s security deposit.', 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04', 'are-guests-responsible-for-visitors', 'Yes. Primary registered guests are fully liable and responsible for the behavior and actions of any...', 0, 0, 0, 'public', '2026-06-04 11:23:04'),
(159, 28, 'What is Kevron Suites and Apartments?', 'Kevron Suites and Apartments is a premium serviced-apartment brand starting from Adeniyi Jones, Ikeja, Lagos, offering luxury 1, 2, 3 and 4 bedroom serviced apartments with smart living, guest support, airport access and a future multi-location expansion structure.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'what-is-kevron-suites-and-apartments', NULL, 0, 1, 0, 'public', NULL),
(160, 28, 'Where is the first location?', 'Our flagship branch is located at 7B Regina Coker Street, Adeniyi Jones, Ikeja and No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos, Nigeria. This premium location is highly accessible and strategically positioned close to commercial zones, eateries, police support, and airports.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'where-is-the-first-location', NULL, 0, 1, 1, 'public', NULL),
(161, 28, 'What apartment types are available?', 'We offer four luxury en-suite configurations: 1 Bedroom Master Suites (from ₦150k/night), 2 Bedroom Luxury Apartments (from ₦200k/night), 3 Bedroom Luxury Apartments featuring PlayStation 5 and snooker tables (from ₦250k/night), and 4 Bedroom Luxury Apartments (from ₦300k/night).', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'what-apartment-types-are-available', NULL, 0, 1, 2, 'public', NULL),
(162, 28, 'Who is the accommodation suitable for?', 'Our premium serviced suites are designed to support corporate business executives, families visiting Lagos, project teams, relocation and expatriate guests, long-stay visitors, and travelers desiring more privacy and space than a standard hotel room offers.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'who-is-the-accommodation-suitable-for', NULL, 0, 1, 3, 'public', NULL),
(163, 28, 'Is airport pickup available?', 'Yes, pre-arranged, secure airport pickup transfers covering domestic (MM1/MM2) and international (MMIA) airport terminals can be coordinated with standard sedans or executive SUVs during your booking process.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'is-airport-pickup-available', NULL, 0, 1, 4, 'public', NULL),
(164, 28, 'Can companies book for staff?', 'Absolutely. We offer dedicated corporate accounts, VAT invoicing, corporate rates, and streamlined digital check-in to make staff, expatriate, and business consultant bookings seamless and transparent.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'can-companies-book-for-staff', NULL, 0, 1, 5, 'public', NULL),
(165, 28, 'Is the brand expanding to more locations?', 'Yes. Kevron is engineered as a scalable, multi-location serviced-apartment brand. The Adeniyi Jones, Ikeja property is our premier branch, and our booking systems are built to support future properties and expansion plans as we grow.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'is-the-brand-expanding-to-more-locations', NULL, 0, 1, 6, 'public', NULL),
(166, 28, 'How can I book?', 'You can search live availability and book directly on our website at /booking, or reach out to our guest services team directly on WhatsApp for custom rates or long-stay enquiries.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'how-can-i-book', NULL, 0, 1, 7, 'public', NULL),
(167, 29, 'How can I contact Kevron Suites and Apartments?', 'You can contact our executive concierge desk via the general contact form, by calling +234 813 163 2926, emailing info@kevronapartments.com, or direct WhatsApp quick chat.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'how-can-i-contact-kevron-suites-and-apartments', NULL, 1, 0, 1, 'public', NULL),
(168, 29, 'Can I enquire about availability before booking?', 'Absolutely! Simply navigate to the Booking Enquiry tab on this page, enter your check-in/out dates, guest counts, and preferred suite, and our booking coordinator will verify availability.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'can-i-enquire-about-availability-before-booking', NULL, 1, 0, 2, 'public', NULL),
(169, 29, 'Can I request airport pickup through the Contact page?', 'Yes, our booking enquiry form has a dedicated checkbox for airport pickup requests, or you can message us directly on WhatsApp with your flight details.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'can-i-request-airport-pickup-through-the-contact-page', NULL, 1, 0, 3, 'public', NULL),
(170, 29, 'Can companies enquire through this page?', 'Yes! We provide a dedicated Corporate Enquiry tab for B2B corporate staff stay accounts, VAT invoice billing, and direct guest list spreadsheet uploads.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'can-companies-enquire-through-this-page', NULL, 1, 0, 4, 'public', NULL),
(171, 29, 'Can I get directions from the Contact page?', 'Yes, you can click \"Get Directions\" on this page to view our dynamic coordinates or link to the location and neighborhood guide.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'can-i-get-directions-from-the-contact-page', NULL, 1, 0, 6, 'public', NULL),
(172, 29, 'What are the support hours?', 'General bookings and B2B corporate stay enquiries are processed Monday-Friday (9 AM - 6 PM), while WhatsApp guest support operates 24/7.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'what-are-the-support-hours', NULL, 1, 0, 7, 'public', NULL),
(173, 29, 'Can I message on social media?', 'Yes! You can reach out to us on Instagram, Facebook, TikTok, or LinkedIn company pages.', 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'can-i-message-on-social-media', NULL, 1, 0, 8, 'public', NULL),
(174, 30, 'Can I cancel my booking online?', 'Yes. Direct booking guests can request stay cancellations through their guest dashboard or by contacting our booking host desk with their unique reservation reference.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(175, 30, 'Will I get a full refund if I cancel?', 'Cancellations made 5+ days prior to scheduled check-in qualify for a full base stay refund (excluding security deposits). Cancellations between 2 to 5 days before check-in receive a 50% refund, while cancellations within 48 hours are non-refundable.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(176, 30, 'How is the security deposit refunded?', 'The security deposit (₦100,000.00 standard) is fully separate from stay pricing. It is released within 24 to 48 hours following checkout inspection, provided no damage or policy breaches are recorded.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(177, 30, 'How long does a refund take to process?', 'Approved refunds are processed through the original payment route. Standard gateway validations and corporate sign-offs require between 7 to 14 business days to post successfully.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(178, 30, 'Can I change my stay dates instead of cancelling?', 'Yes. Date modifications, room category upgrades, or guest count adjustments can be filed on your guest dashboard. Modifications are subject to suite availability and base rate differences.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(179, 30, 'Can I cancel an airport pickup or car rental?', 'Airport pickup requests can be cancelled free of charge up to 24 hours prior to scheduled flight landing. Executive car rentals require 48 hours advance notice to waive standby charges.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(180, 31, 'What personal data does Kevron Suites and Apartments collect?', 'We collect identity details (name, official ID), contact credentials (email, phone/WhatsApp), reservation details (booking dates, special requests), financial proofs (transfer screenshots), and technical metadata (cookies, server logs) required to facilitate and secure your stay.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 1, 'public', NULL),
(181, 31, 'Do you store my full credit card details?', 'No. All online credit/debit card transactions are processed directly through authorized, PCI-DSS compliant payment gateways. We never save or store your full card number or CVV on our database.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 2, 'public', NULL),
(182, 31, 'How secure are my uploaded guest identification documents?', 'Extremely secure. All uploaded ID documents (passports, driver\'s licenses) are stored in encrypted, private system directories that are inaccessible to the public. Only high-level administrative supervisors have permission-controlled access to verify these files.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 3, 'public', NULL),
(183, 31, 'Is CCTV used inside the guest rooms?', 'Absolutely not. For guest safety, CCTV surveillance cameras are strictly restricted to external perimeters, gates, hallways, staircases, and common lobby areas. We never monitor private rooms, bedrooms, or suites.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 4, 'public', NULL),
(184, 31, 'How can I submit a privacy request or delete my personal data?', 'You can request data access, correction, or erasure by completing the interactive Data Privacy Request Form on our Privacy Policy page. Our compliance officer will verify your identity and process your request within 30 days.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 5, 'public', NULL),
(185, 32, 'What are cookies and why does Kevron use them?', 'Cookies are small text files placed on your browser. Kevron Suites and Apartments uses them to maintain secure session states (csrf, booking lists), remember luxury preferences (theme, accessibility), and evaluate statistical navigation patterns to keep our systems fast and reliable.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(186, 32, 'Can I reject non-essential cookies?', 'Absolutely. You can click \"Reject Non-Essential\" on our banner or disable preference, analytics, and marketing categories individually inside our Cookie Preference Centre. Your booking capability will remain fully functional.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(187, 32, 'Are necessary cookies always active?', 'Yes. Strictly necessary cookies (like session tokens and CSRF protection) are mandatory to let you complete reservations, secure your accounts, and record your consent choices. They do not store personal details.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(188, 32, 'Do analytics and marketing cookies load automatically?', 'No. Under the Nigeria Data Protection Act (NDPA) 2023, cookies for Google Analytics, Meta Pixels, and third-party tracking scripts remain completely blocked until you explicitly opt-in.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(189, 32, 'How can I change my cookie preferences later?', 'You can change your choices at any time by clicking the \"Manage Cookie Preferences\" link located in the footer of our website. This instantly launches the Preference Centre modal to update your toggles.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(190, 32, 'Can I purge cookies already saved in my browser?', 'Yes. You can clear cookies, local storage, and cached service worker assets through your browser settings panel. Be aware that purging cookies will require you to log back into your guest portal.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, NULL, 0, 0, 0, 'public', NULL),
(191, 17, 'Is a deposit required?', 'Yes, a refundable security deposit of ₦100,000 is required at check-in to cover potential en-suite damage, missing inventories, or policy breaches, as detailed in our Payment Policy.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', 'is-a-deposit-required', 'Seeding deposit details.', 0, 0, 2, 'public', '2026-06-04 11:23:13'),
(192, 33, 'How long does it take to get my security deposit back?', 'Following a successful checkout inspection with no damages or policy violations detected, refunds are authorized within 24 to 48 hours. Depending on your bank network, it may take 3 to 5 business days to appear on your bank statement.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', 'how-long-does-it-take-to-get-my-security-deposit-back', 'Deposit refund processing timelines.', 1, 1, 1, 'public', '2026-06-04 11:23:13'),
(193, 33, 'What happens if I accidentally break something during my stay?', 'Please report any accidental damage immediately using our secure online reporting form on the policy page. Honest and prompt reports help us resolve repairs quickly, and we only charge the actual repair or replacement cost of the item.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13', 'what-happens-if-i-accidentally-break-something-during-my-stay', 'Handling accidental en-suite damage.', 0, 0, 2, 'public', '2026-06-04 11:23:13'),
(194, 34, 'Why do I need to provide government-issued identification?', 'We require identification to protect our guests and community, verify that the check-in matches the payment record, manage keyless access passcodes securely, and comply with standard Nigerian lodging security frameworks.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 1, 'public', NULL),
(195, 34, 'What government identification types are accepted?', 'We accept National ID/NIN slips, Voter\'s Cards, Driver\'s Licences, and valid International Passports. All documents must be original, current, and clear.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 2, 'public', NULL),
(196, 34, 'Can I upload my ID before arriving?', 'Yes! We highly recommend completing our secure digital pre-check-in form on the public policy page or within your Guest Dashboard to receive your lock codes ahead of time.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 3, 'public', NULL),
(197, 34, 'Is my ID document stored securely and privately?', 'Absolutely. Uploaded files are stored in private system directories (`storage/app/secure/guest-ids`) that cannot be accessed from public URLs. Sensitive numbers are fully encrypted using NDPA-compliant database cast features.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 4, 'public', NULL),
(198, 34, 'How long does Kevron retain my ID record?', 'Under our standard data retention rule, private government ID files are automatically deleted 30 days after check-out, ensuring minimal data retention.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 5, 'public', NULL),
(199, 3, 'What numbers should I call in a life-threatening emergency?', 'For immediate life-threatening emergency assistance in Lagos, dial 112 or 767. Once emergency services have been contacted, please immediately notify our concierge desk.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(200, 3, 'What should I do if the fire alarm sounds?', 'Leave your apartment immediately. Do not stop to gather personal belongings. Use the closest emergency staircase. Do not use the lifts or elevators.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(201, 3, 'Where is the safe assembly point located?', 'The designated safe muster assembly point is located in the main open-air parking lot, clearly marked with a green muster sign.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(202, 3, 'What happens if I get locked out of my suite?', 'Please use the video intercom or contact the 24/7 front desk. For safety and compliance reasons, our staff will verify your guest identity matching your check-in records before resetting or overriding your keyless smart lock.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(203, 3, 'Are there CCTV cameras in private rooms?', 'Absolutely not. CCTV cameras are installed exclusively in public common corridors, elevator lobbies, gate perimeters, and common spaces. Your private bedrooms, living quarters, and private suites are strictly CCTV-free.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(204, 35, 'Can I use the website with keyboard navigation?', 'Yes. All interactive links, buttons, date selection tools, and form fields on our website can be fully operated using standard keyboard navigation (Tab, Enter, Space, and Escape keys) with visible focus rings.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(205, 35, 'Are 3D virtual tours required to book a stay?', 'No. All essential reservation steps, suite pricing, layouts, and amenities are fully accessible through standard static views and accessible descriptions. 3D virtual tours are optional interactive media.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(206, 35, 'Can I reduce animations and transition motion?', 'Yes. Our website respects your operating system reduced-motion selections. High-GPU GSAP animations, overlays, and transitions are automatically suppressed if your settings restrict motion.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(207, 35, 'Can I request physical accessibility support before booking?', 'Absolutely. You can submit our pre-booking Accessibility Support Request form to specify wheelchair ramp access, low-floor suites, en-suite grab bars, or elderly arrival assistance. A host officer will verify details for you.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL),
(208, 35, 'Are third-party payment gates fully accessible?', 'Certain third-party checkout gateways may contain keyboard navigation limitations. If you face any barrier completing your payment online, please contact us for alternative bank transfer payment coordinates.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, NULL, 0, 0, 0, 'public', NULL);

-- --------------------------------------------------------

--
-- Table structure for table `faq_categories`
--

CREATE TABLE `faq_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `description` text DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `faq_categories`
--

INSERT INTO `faq_categories` (`id`, `name`, `slug`, `icon`, `created_at`, `updated_at`, `description`, `sort_order`, `is_active`) VALUES
(1, 'Booking & Payments', 'booking-payments', 'credit-card', '2026-06-04 11:23:00', '2026-06-04 11:23:00', NULL, 0, 1),
(2, 'Location & Airport Transit', 'location-transit', 'plane-takeoff', '2026-06-04 11:23:00', '2026-06-04 11:23:00', NULL, 0, 1),
(3, 'Security & Smart Living FAQs', 'security-smart-living', 'shield', '2026-06-04 11:23:00', '2026-06-04 11:23:03', NULL, 0, 1),
(4, 'Suite Comparisons', 'suite-comparisons', 'list-bullet', '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, 0, 1),
(5, 'Virtual Tour', 'virtual-tour', 'eye', '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, 0, 1),
(6, 'Gallery & Visuals', 'gallery', 'photo', '2026-06-04 11:23:01', '2026-06-04 11:23:01', NULL, 0, 1),
(7, 'Amenities & Facilities', 'amenities-facilities', 'home', '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, 0, 1),
(8, 'Guest Services', 'guest-services', 'chat-bubble-left-right', '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, 0, 1),
(9, 'Airport Transit & Car Rental', 'airport-pickup-car-rental', 'plane-takeoff', '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, 0, 1),
(10, 'Corporate Stays & B2B', 'corporate-stays', 'briefcase', '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, 0, 1),
(11, 'Long Stays & Extended Serviced Apartments', 'long-stay-serviced-apartments-ikeja', 'home', '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, 0, 1),
(12, 'Offers and Packages', 'offers-packages', 'gift', '2026-06-04 11:23:02', '2026-06-04 11:23:02', NULL, 0, 1),
(13, 'Location & Neighbourhood Guide FAQs', 'location-neighbourhood-guide-ikeja', 'map-pin', '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, 0, 1),
(14, 'Sustainability FAQs', 'sustainability', 'leaf', '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, 0, 1),
(15, 'Reviews FAQs', 'reviews', 'star', '2026-06-04 11:23:03', '2026-06-04 11:23:03', NULL, 0, 1),
(16, 'Booking', 'booking', 'calendar', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Questions about booking processes, reservations, availability, and configurations.', 1, 1),
(17, 'Payment', 'payment', 'credit-card', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Payment methods, billing, invoices, deposits, and secure payment pathways.', 2, 1),
(18, 'Check-In / Check-Out', 'check-in-check-out', 'clock', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Check-in times, keys, arrival confirmation, early/late checkout requests.', 3, 1),
(19, 'Cancellation', 'cancellation', 'x-circle', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Modifications, extensions, cancellations, refunds, and apartment upgrades.', 4, 1),
(20, 'Location', 'location', 'map-pin', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Our local neighborhood landmarks, airport proximity, and business hotspots in Ikeja.', 5, 1),
(21, 'Security', 'security', 'shield-check', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'CCTV monitoring, physical security guards, smart locks, and personal guest privacy.', 6, 1),
(22, 'Amenities', 'amenities', 'sparkles', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Details about our 24-hour power backup, high-speed Wi-Fi, kitchen, snooker, and PS5.', 7, 1),
(23, 'Transport', 'transport', 'truck', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Airport pickup request guidelines, car rentals, and driver service options.', 8, 1),
(24, 'House Rules', 'house-rules', 'home', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Party restrictions, smoking, visitors, quiet hours, and pet policies.', 9, 1),
(25, 'Long Stay', 'long-stay', 'calendar-days', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Weekly and monthly extended stay rates, housekeeping, deposits, and extensions.', 10, 1),
(26, 'Corporate Stay', 'corporate-stay', 'briefcase', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Corporate bookings, invoice billing, guest list coordination, and negotiated contract rates.', 11, 1),
(27, 'Damages', 'damages', 'alert-triangle', '2026-06-04 11:23:03', '2026-06-04 11:23:03', 'Security deposit processes, damage assessments, and guest liabilities.', 12, 1),
(28, 'About Kevron FAQs', 'about-faqs', 'information-circle', '2026-06-04 11:23:05', '2026-06-04 11:23:05', NULL, 0, 1),
(29, 'Contact FAQs', 'contact-faqs', 'question-mark-circle', '2026-06-04 11:23:05', '2026-06-04 11:23:05', 'Helpful information regarding contact routes, map directions, and customer support schedules.', 10, 1),
(30, 'Cancellations & Refunds', 'cancellations-refunds', 'x-circle', '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, 0, 1),
(31, 'Data Privacy & Security', 'privacy-policy', 'shield-check', '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, 0, 1),
(32, 'Cookie Policy', 'cookie-policy', 'info-circle', '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, 0, 1),
(33, 'Damage & Deposit Policy', 'damage-deposit', 'shield-check', '2026-06-04 11:23:13', '2026-06-04 11:23:13', NULL, 0, 1),
(34, 'Guest Identification Policy FAQs', 'guest-id-policy', 'identification', '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, 0, 1),
(35, 'Accessibility & Support', 'accessibility-support', 'sparkles', '2026-06-04 11:23:14', '2026-06-04 11:23:14', NULL, 0, 1);

-- --------------------------------------------------------

--
-- Table structure for table `faq_feedback`
--

CREATE TABLE `faq_feedback` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `faq_id` bigint(20) UNSIGNED NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `is_helpful` tinyint(1) NOT NULL,
  `feedback_text` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `faq_links`
--

CREATE TABLE `faq_links` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `faq_id` bigint(20) UNSIGNED NOT NULL,
  `link_type` varchar(255) NOT NULL DEFAULT 'internal',
  `url` varchar(255) NOT NULL,
  `label` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `faq_search_logs`
--

CREATE TABLE `faq_search_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `query` varchar(255) NOT NULL,
  `results_count` int(11) NOT NULL DEFAULT 0,
  `ip_address` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `faq_unanswered_questions`
--

CREATE TABLE `faq_unanswered_questions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `question` text NOT NULL,
  `category_slug` varchar(255) DEFAULT NULL,
  `is_reviewed` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `fire_equipment_registers`
--

CREATE TABLE `fire_equipment_registers` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `equipment_type` varchar(255) NOT NULL,
  `serial_number` varchar(255) DEFAULT NULL,
  `location_details` varchar(255) NOT NULL,
  `last_inspected_at` date DEFAULT NULL,
  `next_inspection_due` date DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `fire_equipment_registers`
--

INSERT INTO `fire_equipment_registers` (`id`, `location_id`, `equipment_type`, `serial_number`, `location_details`, `last_inspected_at`, `next_inspection_due`, `status`, `created_at`, `updated_at`) VALUES
(1, 1, 'Extinguisher', 'KSA-FE-001', 'Main lobby corridor, adjacent to Unit 101', '2026-04-04', '2026-10-04', 'active', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, 'Fire Blanket', 'KSA-FB-002', 'Executive Kitchen, Unit 102', '2026-05-04', '2026-11-04', 'active', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `floor_plans`
--

CREATE TABLE `floor_plans` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `image_path` varchar(255) NOT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `hotspots_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`hotspots_json`)),
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `floor_plans`
--

INSERT INTO `floor_plans` (`id`, `title`, `image_path`, `location_id`, `apartment_type_id`, `hotspots_json`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Adeniyi Jones Premier 3-Bed En-Suite Layout', 'pictures/living-room-dining.jpg', 1, 1, '{\"lounge\":{\"label\":\"Luxury Lounge\",\"scene_key\":\"lounge\"},\"kitchen\":{\"label\":\"Gourmet Kitchen\",\"scene_key\":\"kitchen\"},\"bedroom\":{\"label\":\"Master Bedroom\",\"scene_key\":\"bedroom\"},\"balcony\":{\"label\":\"Outdoor Balcony\",\"scene_key\":\"balcony\"}}', 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `footer_columns`
--

CREATE TABLE `footer_columns` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `footer_columns`
--

INSERT INTO `footer_columns` (`id`, `title`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Apartments', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(2, 'Guest Services', 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(3, 'Legal & Policies', 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 'Support & Governance', 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `footer_ctas`
--

CREATE TABLE `footer_ctas` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `label` varchar(255) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `route_name` varchar(255) DEFAULT NULL,
  `cta_type` varchar(255) NOT NULL DEFAULT 'primary',
  `icon` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `footer_ctas`
--

INSERT INTO `footer_ctas` (`id`, `label`, `url`, `route_name`, `cta_type`, `icon`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Book Now', '/booking', 'booking.index', 'primary', NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `footer_links`
--

CREATE TABLE `footer_links` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `footer_column_id` bigint(20) UNSIGNED NOT NULL,
  `label` varchar(255) NOT NULL,
  `route_name` varchar(255) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `footer_links`
--

INSERT INTO `footer_links` (`id`, `footer_column_id`, `label`, `route_name`, `url`, `description`, `icon`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, '1 Bedroom Master Suite', 'apartments.show', '/apartments/1-bedroom-master-suite-ikeja', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(2, 1, '2 Bedroom Luxury Apartment', 'apartments.show', '/apartments/2-bedroom-luxury-apartment-ikeja', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(3, 1, '3 Bedroom Luxury Apartment', 'apartments.show', '/apartments/3-bedroom-luxury-apartment-ikeja', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 1, '4 Bedroom Luxury Apartment', 'apartments.show', '/apartments/4-bedroom-luxury-apartment-ikeja', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(5, 1, 'Compare Apartments', 'apartments.compare_page', '/compare-apartments', NULL, NULL, 5, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(6, 2, 'Services Overview', 'guest-services', '/guest-services', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(7, 2, 'Airport Pickup & Car Rental', 'airport-pickup-car-rental', '/airport-pickup-car-rental', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(8, 2, 'Corporate Accommodations', 'corporate-stays', '/corporate-stays', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(9, 2, 'Extended Long Stays', 'long-stay', '/long-stay-serviced-apartments-ikeja', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(10, 2, 'Help & FAQs', 'faq', '/faqs', NULL, NULL, 5, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(11, 3, 'Terms & Conditions', 'terms.index', '/terms-and-conditions', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(12, 3, 'Booking Policy', 'booking_policy.index', '/booking-policy', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(13, 3, 'Cancellation & Refund Policy', 'cancellation_refund_policy.index', '/cancellation-refund-policy', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(14, 3, 'Privacy Policy', 'privacy_policy.index', '/privacy-policy', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(15, 3, 'House Rules', 'house_rules.index', '/house-rules', NULL, NULL, 5, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(16, 3, 'Cookie Policy', 'cookie_policy.index', '/cookie-policy', NULL, NULL, 6, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(17, 3, 'Payment Policy', 'payment_policy.index', '/payment-policy', NULL, NULL, 7, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(18, 3, 'Damage & Deposit Policy', 'damage_deposit_policy.index', '/damage-deposit-policy', NULL, NULL, 8, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(19, 3, 'Guest ID Policy', 'guest_identification_policy.index', '/guest-identification-policy', NULL, NULL, 9, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(20, 4, 'Contact Us', 'contact', '/contact', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(21, 4, 'Find My Booking', 'booking.find', '/find-my-booking', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(22, 4, 'Guest Dashboard', 'guest.dashboard', '/guest/dashboard', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(23, 4, 'Safety & Emergency Info', 'safety_emergency.index', '/safety-emergency-information', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(24, 4, 'Accessibility Statement', 'accessibility.index', '/accessibility-statement', NULL, NULL, 5, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(25, 4, 'Security & Smart Living', 'security-smart-living', '/security-smart-living', NULL, NULL, 6, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `future_sustainability_plans`
--

CREATE TABLE `future_sustainability_plans` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `timeframe` varchar(255) DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `future_sustainability_plans`
--

INSERT INTO `future_sustainability_plans` (`id`, `title`, `description`, `timeframe`, `icon`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Solar Power Backup Array', 'Explore the feasibility of integrating a high-capacity hybrid solar-inverter array as a secondary power backup to complement our generators and municipal grid.', 'Q4 2026', 'sun', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Structured Waste Separation & Recycling', 'Plan the introduction of dedicated recycling zones and separated guest waste bins (recyclables vs organic) once local logistics partners are contracted.', 'Long-term', 'recycle', 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Water-Saving Faucet Aerators', 'Under review to retrofit faucet aerators and dual-flush valves across older suites where feasible to support water conservation limits.', 'Q3 2026', 'droplet', 1, 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `gallery_categories`
--

CREATE TABLE `gallery_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `gallery_categories`
--

INSERT INTO `gallery_categories` (`id`, `name`, `slug`, `icon`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Exterior', 'exterior', 'home', 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(2, 'Living Area', 'living-area', 'armchair', 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 'Bedrooms', 'bedrooms', 'bed', 1, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 'Kitchen & Dining', 'kitchen', 'chef-hat', 1, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(5, 'Balcony / Outdoor Space', 'balcony', 'square', 1, 6, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(6, 'Security Features', 'security', 'shield-check', 1, 7, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(7, 'Neighbourhood', 'neighbourhood', 'map-pin', 1, 8, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(8, 'Videos', 'videos', 'video', 1, 9, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(9, '360° Tours', '360-tours', 'eye', 1, 10, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `global_policy_templates`
--

CREATE TABLE `global_policy_templates` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL DEFAULT 'general',
  `content` text NOT NULL,
  `version` int(11) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `global_pricing_templates`
--

CREATE TABLE `global_pricing_templates` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `rate_type` varchar(255) NOT NULL DEFAULT 'nightly',
  `amount` decimal(12,2) DEFAULT NULL,
  `percentage` decimal(5,2) DEFAULT NULL,
  `currency` varchar(255) NOT NULL DEFAULT 'NGN',
  `applies_to_apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `applies_to_all_locations` tinyint(1) NOT NULL DEFAULT 1,
  `effective_from` timestamp NULL DEFAULT NULL,
  `effective_until` timestamp NULL DEFAULT NULL,
  `priority` int(11) NOT NULL DEFAULT 0,
  `allow_location_override` tinyint(1) NOT NULL DEFAULT 1,
  `requires_approval` tinyint(1) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `google_review_integrations`
--

CREATE TABLE `google_review_integrations` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `google_review_id` varchar(255) DEFAULT NULL,
  `reviewer_name` varchar(255) NOT NULL,
  `reviewer_photo_url` varchar(255) DEFAULT NULL,
  `rating` int(11) NOT NULL,
  `comment` text DEFAULT NULL,
  `review_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `group_booking_requests`
--

CREATE TABLE `group_booking_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `group_name` varchar(255) NOT NULL,
  `group_coordinator` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `arrival_date` date NOT NULL,
  `departure_date` date NOT NULL,
  `number_of_guests` int(11) NOT NULL,
  `number_of_apartments` int(11) NOT NULL,
  `preferred_apartment_mix` varchar(255) DEFAULT NULL,
  `guest_list_path` varchar(255) DEFAULT NULL,
  `rooming_preference` varchar(255) NOT NULL DEFAULT 'private',
  `airport_pickup_required` varchar(255) NOT NULL DEFAULT 'no',
  `notes` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guests`
--

CREATE TABLE `guests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `id_type` varchar(255) DEFAULT NULL,
  `id_number` varchar(255) DEFAULT NULL,
  `id_document_path` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guests`
--

INSERT INTO `guests` (`id`, `user_id`, `first_name`, `last_name`, `email`, `phone`, `id_type`, `id_number`, `id_document_path`, `created_at`, `updated_at`) VALUES
(1, 2, 'Kevron', 'Guest', 'guest@kevron.com', '+2348031234567', 'passport', 'PP-NG890123', 'secure/guest-ids/mock_passport.pdf', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `guest_activity_logs`
--

CREATE TABLE `guest_activity_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `activity_type` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_activity_logs`
--

INSERT INTO `guest_activity_logs` (`id`, `user_id`, `activity_type`, `description`, `ip_address`, `user_agent`, `created_at`) VALUES
(1, 2, 'login', 'Logged in securely from en-suite portal.', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `guest_booking_links`
--

CREATE TABLE `guest_booking_links` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `verification_method` varchar(255) NOT NULL DEFAULT 'otp',
  `verified_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_booking_links`
--

INSERT INTO `guest_booking_links` (`id`, `user_id`, `booking_id`, `booking_reference`, `verification_method`, `verified_at`, `created_at`, `updated_at`) VALUES
(1, 2, 1, 'KEV-2026-PAST', 'otp', '2026-06-04 11:23:05', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 2, 2, 'KEV-2026-ACTV', 'otp', '2026-06-04 11:23:05', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 2, 3, 'KEV-2026-UPCM', 'otp', '2026-06-04 11:23:05', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `guest_conduct_rules`
--

CREATE TABLE `guest_conduct_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `rule_text` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_conduct_rules`
--

INSERT INTO `guest_conduct_rules` (`id`, `rule_text`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'All guests must respect neighbors, staff, and property guidelines, avoiding any violence, threats, or harassment.', 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `guest_documents`
--

CREATE TABLE `guest_documents` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_id` bigint(20) UNSIGNED NOT NULL,
  `document_type` varchar(255) NOT NULL,
  `file_path` varchar(255) NOT NULL,
  `file_size` int(11) NOT NULL,
  `mime_type` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_identification_policies`
--

CREATE TABLE `guest_identification_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_identification_policies`
--

INSERT INTO `guest_identification_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Guest Identification Policy', 'guest-identification-policy', 'Learn how Kevron Suites and Apartments manages guest identification, digital check-in, visitor verification, corporate guest lists and secure ID record handling under hospitality guidelines.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Kevron Operations and Legal Compliance Desk', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `guest_identification_policy_acceptances`
--

CREATE TABLE `guest_identification_policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_identification_policy_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_identification_policy_sections`
--

CREATE TABLE `guest_identification_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_identification_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_operations_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_privacy_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_identification_policy_sections`
--

INSERT INTO `guest_identification_policy_sections` (`id`, `guest_identification_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_operations_review`, `requires_privacy_review`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'why_required', '1. Why Guest Identification May Be Required', '<p class=\"policy-p mb-4\">To preserve the high-end security and exclusivity of <strong>Kevron Suites and Apartments</strong> at Adeniyi Jones, Ikeja, Lagos, verifying the identity of our staying guests is essential.</p>\n                           <p class=\"policy-p mb-4\">Guest identification documents may be requested for the following reasons:\n                           <ul class=\"list-disc pl-5 mb-4 space-y-1\">\n                               <li class=\"policy-li\">Confirming the booking guest matches the registered guest credentials.</li>\n                               <li class=\"policy-li\">Managing secure guest keyless smart lock and gate access control.</li>\n                               <li class=\"policy-li\">Protecting guests, property, and staff from fraudulent reservations.</li>\n                               <li class=\"policy-li\">Facilitating verified corporate/group guest accountability and room assignment.</li>\n                               <li class=\"policy-li\">Supporting smart living access coordination and emergency services where applicable.</li>\n                           </ul>\n                           </p>', 1, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'when_requested', '2. When Identification May Be Requested', '<p class=\"policy-p mb-4\">Verification triggers can occur at multiple stages of your booking lifecycle to maintain maximum security:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Booking Confirmation:</strong> During the reservation validation process.</li>\n                               <li class=\"policy-li\"><strong>Digital Pre-Checkin:</strong> Uploaded securely prior to arrival via our web portal.</li>\n                               <li class=\"policy-li\"><strong>Physical Arrival:</strong> Checked quickly by our frontdesk concierge desk.</li>\n                               <li class=\"policy-li\"><strong>Visitor Access:</strong> When external day visitors register for entrance.</li>\n                               <li class=\"policy-li\"><strong>Damage Dispute/Refunds:</strong> To verify payment credentials during financial adjustments.</li>\n                           </ul>', 2, 1, 0, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'accepted_docs', '3. Accepted Identification Documents', '<p class=\"policy-p mb-4\">We only accept official government-issued identification cards that feature a clear photographic face match and are strictly within their valid expiry limits:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\">National Identity Card or NIN Slip</li>\n                               <li class=\"policy-li\">Nigerian Driver\'s Licence</li>\n                               <li class=\"policy-li\">Valid Nigerian Voter\'s Card</li>\n                               <li class=\"policy-li\">International Passports (Nigerian and Foreign Nationals)</li>\n                               <li class=\"policy-li\">Residence Permits or Diplomatic Passports</li>\n                           </ul>', 3, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 1, 'digital_checkin', '4. Digital Check-In and ID Upload Security', '<p class=\"policy-p mb-4\">For a seamless arrival experience, guests are encouraged to use our digital check-in simulator or dashboard. Any uploaded ID document is protected by our non-negotiable secure standard:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\">Files are placed directly inside private, non-public system folders (`storage/app/secure/guest-ids`).</li>\n                               <li class=\"policy-li\">Sensitive document numbers are encrypted in our database using standard cipher configurations.</li>\n                               <li class=\"policy-li\">Only authorized compliance staff can access files, and every view is tracked in our strict audit logging.</li>\n                               <li class=\"policy-li\">No document data is cached in client browsers or service workers.</li>\n                           </ul>', 4, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 1, 'corporate_group', '5. Corporate and Group Booking Guidelines', '<p class=\"policy-p mb-4\">Corporate clients and group coordinators must provide a formal guest allocation list. The coordinator must verify individual guests, and corporate sponsorship documents will be managed under strict NDPA data minimisation controls.</p>', 5, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(6, 1, 'long_stays', '6. Long-Stay Guest Identification', '<p class=\"policy-p mb-4\">For stays extending past 14 nights, a secondary verification profile including current corporate references and verified emergency contacts is compiled. If an ID document expires during an extended stay, updated documents must be supplied to retain keyless entry credentials.</p>', 6, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(7, 1, 'minors', '7. Children and Minors Policy', '<p class=\"policy-p mb-4\">Bookings must be made by adults aged 18 or older. Minors must be accompanied and supervised by a responsible adult guardian at all times. We do not collect minor identification records for marketing or profiling purposes.</p>', 7, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(8, 1, 'visitors', '8. Visitor Access and ID Verification', '<p class=\"policy-p mb-4\">Day visitors must register at the reception lobby. Security staff reserve the right to request basic identity details or photo identification. Guests are responsible for the conduct of their visitors, who must depart the premises by 10:00 PM unless registered as staying guests.</p>', 8, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(9, 1, 'outcomes', '9. Identity Verification Status Outcomes', '<p class=\"policy-p mb-4\">Every submitted ID undergoes a structured review flow leading to one of the following compliance states:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Under Review:</strong> Document is being inspected by our team.</li>\n                               <li class=\"policy-li\"><strong>Verified:</strong> Fully approved; smart locks and room codes are issued.</li>\n                               <li class=\"policy-li\"><strong>Rejected:</strong> Document is invalid, expired, or mismatching. Replacement required.</li>\n                               <li class=\"policy-li\"><strong>Locked/Escalated:</strong> Under investigation for potential safety breaches.</li>\n                           </ul>', 9, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(10, 1, 'retention', '10. Document Retention Schedules', '<p class=\"policy-p mb-4\">Under our strict data privacy policies, guest identity uploads are not stored indefinitely. We auto-purge private uploads within 30 days of guest checkout, unless required for active corporate billing audits or ongoing security disputes.</p>', 10, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `guest_identification_policy_versions`
--

CREATE TABLE `guest_identification_policy_versions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_identification_policy_id` bigint(20) UNSIGNED NOT NULL,
  `version` varchar(255) NOT NULL,
  `changes_summary` text DEFAULT NULL,
  `updated_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_identity_documents`
--

CREATE TABLE `guest_identity_documents` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `id_document_type_id` bigint(20) UNSIGNED NOT NULL,
  `document_number_encrypted` text NOT NULL,
  `issue_date` date DEFAULT NULL,
  `expiry_date` date DEFAULT NULL,
  `file_path` varchar(255) NOT NULL,
  `file_disk` varchar(255) NOT NULL DEFAULT 'local',
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `uploaded_by` varchar(255) DEFAULT NULL,
  `reviewed_by` varchar(255) DEFAULT NULL,
  `reviewed_at` datetime DEFAULT NULL,
  `rejection_reason_id` bigint(20) UNSIGNED DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_identity_verifications`
--

CREATE TABLE `guest_identity_verifications` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_identity_document_id` bigint(20) UNSIGNED NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `verification_status` varchar(255) NOT NULL DEFAULT 'pending',
  `verification_method` varchar(255) NOT NULL DEFAULT 'digital',
  `reviewed_by` varchar(255) DEFAULT NULL,
  `reviewed_at` datetime DEFAULT NULL,
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_identity_verification_status_histories`
--

CREATE TABLE `guest_identity_verification_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_identity_verification_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` varchar(255) DEFAULT NULL,
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_incident_reports`
--

CREATE TABLE `guest_incident_reports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `unit_id` bigint(20) UNSIGNED DEFAULT NULL,
  `full_name` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `incident_type` varchar(255) NOT NULL,
  `incident_datetime` datetime NOT NULL,
  `description` text NOT NULL,
  `injuries_involved` tinyint(1) NOT NULL DEFAULT 0,
  `emergency_service_contacted` tinyint(1) NOT NULL DEFAULT 0,
  `status` varchar(255) NOT NULL DEFAULT 'submitted',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_list_uploads`
--

CREATE TABLE `guest_list_uploads` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `group_booking_request_id` bigint(20) UNSIGNED DEFAULT NULL,
  `corporate_enquiry_id` bigint(20) UNSIGNED DEFAULT NULL,
  `long_stay_enquiry_id` bigint(20) UNSIGNED DEFAULT NULL,
  `offer_enquiry_id` bigint(20) UNSIGNED DEFAULT NULL,
  `file_path` varchar(255) NOT NULL,
  `file_size` int(11) NOT NULL,
  `mime_type` varchar(255) NOT NULL,
  `uploaded_by` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_manual_access_logs`
--

CREATE TABLE `guest_manual_access_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `section_title` varchar(255) NOT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_manual_sections`
--

CREATE TABLE `guest_manual_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `category` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `is_private` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_manual_sections`
--

INSERT INTO `guest_manual_sections` (`id`, `category`, `title`, `content`, `is_private`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'rules', 'Official Check-In & Check-Out Times', 'Check-in time is officially scheduled at 2:00 PM (14:00), and check-out is strictly scheduled at 11:00 AM. \n\nEarly arrivals or check-out extensions can be coordinated with the concierge desk, subject to active room bookings and availability.', 0, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'rules', 'General House Rules & Visitor Guidelines', '1. Smoking is strictly prohibited inside the apartments. A penalty of ₦100,000 applies to violations.\n2. Loud parties or social events are prohibited to protect neighborhood tranquility.\n3. Visitors must register at the gate check-point and depart before 10:00 PM.', 0, 2, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'appliance', 'Fully Fitted Modern Kitchen Guides', 'All cooking hobs utilize direct electronic ignitions (push down and turn counter-clockwise). The kitchen overhead extractor fan is activated by pulling the front panel sliding grid forward. Always ensure extractor units are running when preparing meals.', 0, 3, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 'emergency', 'Emergency Gate Evacuation Guidelines', 'In the unlikely event of an emergency, exit your residential apartment block calmly using the primary staircase. Assemble in the secure central car park area. The main exit gate remains unlocked and supervised 24/7.', 0, 4, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 'wifi', 'High-Speed Wi-Fi Login Credentials', 'Network SSID: **Kevron_Executive_Broadband**\nSecurity Password: **StayKevronGold2026**\n\nBroadband internet speeds are fully unlimited. Backup provider systems auto-trigger if primary fiber links fluctuate.', 1, 5, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 'security', 'Smart Locks Keyless Deadbolt Master Codes', 'To unlock your digital lock, enter your personal guest PIN code supplied on your confirmation ticket followed by the \'*\' key. \n\nEmergency Deadbolt Override: To lock your deadbolt manually from the inside, simply turn the center secure switch horizontally.', 1, 6, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 'emergency', 'Direct Concierge Telephone Hotline Links', 'On-Site Manager hotline: **+234 813 163 2926**\nWhatsApp Support Desk: **+234 808 213 1985**\n\nTechnical support and housekeeping requests are attended to immediately.', 1, 7, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `guest_notifications`
--

CREATE TABLE `guest_notifications` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `type` varchar(255) NOT NULL,
  `read_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_notifications`
--

INSERT INTO `guest_notifications` (`id`, `user_id`, `title`, `message`, `type`, `read_at`, `created_at`, `updated_at`) VALUES
(1, 2, 'Stay Checked In', 'Welcome to Suite 302! Your en-suite keyless PIN is 7829#.', 'booking', NULL, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 2, 'Payment Receipt Issued', 'Payment for reference KEV-2026-ACTV was verified successfully.', 'payment', '2026-06-02 11:23:05', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `guest_profiles`
--

CREATE TABLE `guest_profiles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `whatsapp` varchar(255) DEFAULT NULL,
  `preferred_contact_method` varchar(255) NOT NULL DEFAULT 'email',
  `notification_preferences` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`notification_preferences`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_profiles`
--

INSERT INTO `guest_profiles` (`id`, `user_id`, `phone`, `whatsapp`, `preferred_contact_method`, `notification_preferences`, `created_at`, `updated_at`) VALUES
(1, 2, '+2348031234567', '+2348031234567', 'email', '{\"email\":true,\"sms\":false,\"whatsapp\":true}', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `guest_safety_information`
--

CREATE TABLE `guest_safety_information` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `visibility` varchar(255) NOT NULL DEFAULT 'public',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_safety_information`
--

INSERT INTO `guest_safety_information` (`id`, `title`, `content`, `icon`, `visibility`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Access Code & Keyless Operations', 'Access to your luxury suite is enabled via a unique keyless digital code. Access codes are generated per checkout, ensuring that prior occupants no longer have entry. Do not share your access codes with third parties.', 'key', 'public', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Emergency Contacts Protocols', 'In case of urgent emergency requirements, guests can dial standard emergency lines or reach out to our 24-hour on-duty front concierge desk at Regina Coker Street.', 'phone', 'public', 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Quiet Hours & Building Harmony', 'To respect premium guests and families, quiet hours are enforced from 10:00 PM to 7:00 AM daily. Loud music and large gatherings inside suites are strictly prohibited during this window.', 'moon', 'public', 1, 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 'Reporting Anomalies or Issues', 'Guests are encouraged to report any access issues, smart lock battery concerns, or maintenance tickets immediately using our digital request form or via the WhatsApp Support Desk.', 'alert-triangle', 'public', 1, 4, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `guest_safety_notifications`
--

CREATE TABLE `guest_safety_notifications` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `emergency_alert_id` bigint(20) UNSIGNED DEFAULT NULL,
  `notification_channel` varchar(255) NOT NULL,
  `sent_at` timestamp NULL DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'sent',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `guest_services`
--

CREATE TABLE `guest_services` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) NOT NULL,
  `short_description` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `availability` varchar(255) NOT NULL DEFAULT 'included',
  `form_type` varchar(255) NOT NULL DEFAULT 'none',
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_services`
--

INSERT INTO `guest_services` (`id`, `title`, `slug`, `icon`, `short_description`, `description`, `availability`, `form_type`, `is_featured`, `sort_order`, `status`, `created_at`, `updated_at`) VALUES
(1, 'Airport Pickup', 'airport-pickup', 'plane-takeoff', 'Arrive stress-free in Lagos. Request pickups from MM1, MM2 or International Terminal.', 'Professional airport transit coordination direct to your suite. Vetted drivers and premium air-conditioned vehicle choices.', 'on_request', 'pickup', 1, 1, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'Rented Car', 'rented-car', 'car', 'Chauffeur-driven sedan or SUV hire on competitive daily rates.', 'Navigate Lagos in complete safety. Premium car hire packages complete with security-trained professional local drivers.', 'price_on_request', 'rental', 1, 2, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'WhatsApp Concierge', 'whatsapp-concierge', 'message-square', 'Get fast support, housekeeping call-outs, and booking answers.', 'Direct digital access to our guest relations officer directly on your phone. Prompt resolutions within minutes.', 'included', 'direct_link', 1, 3, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 'Digital Check-In', 'digital-check-in', 'user-check', 'Skip the front desk. Submit check-in credentials prior to arrival.', 'Pre-register your details, confirm guest counts, and securely upload document IDs to fast-track your keyless lock code setup.', 'included', 'checkin', 0, 4, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 'Arrival Time Form', 'arrival-time', 'clock', 'Share your expected check-in hours to help prepare your suite.', 'Help our housekeeping team schedule precise finishing room sweepings so everything is pristine for your arrival.', 'included', 'arrival', 0, 5, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 'Special Request', 'special-request', 'sparkles', 'Anniversary arrangements, birthday treats, or corporate workspace prep.', 'Host a staycation celebration or configure a highly productive remote business suite. Share customized notes.', 'included', 'special', 0, 6, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 'Housekeeping Request', 'housekeeping-request', 'brush', 'Schedule cleaning, waste disposal, or clean towel/linen changes.', 'Meticulous on-demand housekeeping sweeps, toiletries replenishing, and crisp linen changes matching luxury hotel guidelines.', 'included', 'housekeeping', 0, 7, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(8, 'Maintenance Request', 'maintenance-request', 'settings', 'Report appliance, plumbing, internet, or smart lock issues.', 'On-site technical support. Instantly notify our maintenance engineers to look into hardware or connection faults.', 'included', 'maintenance', 0, 8, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(9, 'Guest Manual', 'guest-manual', 'book-open', 'Review Wi-Fi network guides, house rules, and emergency guidelines.', 'Full instructions covering keyless locks, smart kitchen extractors, local travel guides, and emergency evacuation coordinates.', 'included', 'none', 0, 9, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(10, 'Leave a Review', 'review-request', 'star', 'Submit post-stay verified reviews and help us refine experiences.', 'Share your feedback directly with our directors. Mapped dynamically to assist other travel executives.', 'included', 'review', 0, 10, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(11, 'Repeat-Stay Offer', 'repeat-stay', 'gift', 'Returning guests benefit from corporate loyalty promo codes.', 'Verify your previous reservation reference to request exclusive returning loyalty deals for your subsequent Lagos trips.', 'on_request', 'repeat', 0, 11, 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `guest_sustainability_guidance`
--

CREATE TABLE `guest_sustainability_guidance` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `guest_sustainability_guidance`
--

INSERT INTO `guest_sustainability_guidance` (`id`, `title`, `content`, `icon`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Switch Off Unused Lights', 'Guests are kindly encouraged to switch off all lighting fixtures inside their en-suite bedrooms and living spaces when leaving the apartment or when those spaces are unoccupied.', 'zap', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Manage Climate split AC Units', 'Turn off split air conditioning units when departing your apartment or during extended periods away to avoid prolonged energy draw and preserve system lifespan.', 'wind', 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Conserve Water Resources', 'Support resource conservation by ensuring that kitchen and suite water taps/faucets are fully closed after use and not left running unnecessarily.', 'droplet', 1, 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 'Report Leaks and Faults Immediately', 'Submit a direct maintenance ticket or WhatsApp concierge notification for any leaking taps, running toilets, split unit condensation drips, or appliance concerns so we can resolve them quickly.', 'wrench', 1, 4, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `header_ctas`
--

CREATE TABLE `header_ctas` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `label` varchar(255) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `route_name` varchar(255) DEFAULT NULL,
  `cta_type` varchar(255) NOT NULL DEFAULT 'primary',
  `icon` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `header_ctas`
--

INSERT INTO `header_ctas` (`id`, `label`, `url`, `route_name`, `cta_type`, `icon`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Book Now', '/booking', 'booking.index', 'primary', NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `homepage_badges`
--

CREATE TABLE `homepage_badges` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `text` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `link` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `homepage_badges`
--

INSERT INTO `homepage_badges` (`id`, `text`, `icon`, `link`, `is_active`, `order_index`, `created_at`, `updated_at`) VALUES
(1, '24h Power Supply', 'zap', NULL, 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'Keyless Smart Locks', 'key-round', NULL, 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'Airport Pickup Coordination', 'plane', NULL, 1, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `homepage_feature_cards`
--

CREATE TABLE `homepage_feature_cards` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `link` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `homepage_feature_cards`
--

INSERT INTO `homepage_feature_cards` (`id`, `title`, `description`, `icon`, `link`, `is_active`, `order_index`, `created_at`, `updated_at`) VALUES
(1, '24h Power', 'Uninterrupted power supply with active dual backup auto-generator system.', 'zap', NULL, 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'High-Speed Wi-Fi', 'Corporate grade unlimited high-speed broadband internet in every en-suite space.', 'wifi', NULL, 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'Smart Locks', 'Keyless lock entry and guest passcode access management for modern security.', 'key-round', NULL, 1, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 'Snooker & PS5', 'In-suite entertainment amenities featuring professional snooker and PS5 console setup.', 'gamepad-2', NULL, 1, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 'Modern Kitchen', 'Gourmet kitchen space fully equipped with heat-extractor, gas cookers, microwave, and fridge.', 'soup', NULL, 1, 5, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 'Airport Pickup', 'Competitive airport transit bookings covering local (MM1/MM2) and international terminals.', 'plane-takeoff', NULL, 1, 6, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(7, 'Video Intercom', 'Direct intercom and secure video doorbell systems to monitor visitor requests.', 'phone-call', NULL, 1, 7, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(8, 'Washing & Dryer', 'Fully automatic washing machine and heat dryer built into every luxury suite.', 'washing-machine', NULL, 1, 8, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(9, '24/7 CCTV', 'Comprehensive external perimeter surveillance to assert safety and secure peace of mind.', 'eye', NULL, 1, 9, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `homepage_hero_slides`
--

CREATE TABLE `homepage_hero_slides` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `image_path` varchar(255) DEFAULT NULL,
  `video_url` varchar(255) DEFAULT NULL,
  `primary_cta_text` varchar(255) DEFAULT NULL,
  `primary_cta_link` varchar(255) DEFAULT NULL,
  `secondary_cta_text` varchar(255) DEFAULT NULL,
  `secondary_cta_link` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `homepage_hero_slides`
--

INSERT INTO `homepage_hero_slides` (`id`, `title`, `subtitle`, `image_path`, `video_url`, `primary_cta_text`, `primary_cta_link`, `secondary_cta_text`, `secondary_cta_link`, `is_active`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 'Luxury Serviced Apartments in Ikeja, Lagos', 'A New Standard of Smart Living', 'pictures/master-bedroom.jpg', 'https://player.vimeo.com/video/1186235401', 'Book Stay', '/booking', 'Explore Suites', '/apartments', 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'Immersive 3D Lounge Walkthrough', 'Virtual Experience', 'pictures/living-room.jpg', 'https://player.vimeo.com/video/1169265971', 'Launch 3D Tour', '/virtual-tour', 'Watch Video', '#walkthrough-video', 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `homepage_sections`
--

CREATE TABLE `homepage_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `content` text DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `homepage_sections`
--

INSERT INTO `homepage_sections` (`id`, `section_key`, `title`, `subtitle`, `content`, `is_active`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 'hero', 'Luxury Serviced Apartments in Ikeja, Lagos', 'A New Standard of Smart Living', 'Experience premium 1, 2, 3 and 4 bedroom serviced suites at Kevron Suites and Apartments, Adeniyi Jones, Ikeja.', 1, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'brand_intro', 'The Kevron Advantage — Adeniyi Jones, Ikeja', 'Strategic Location', 'Kevron Suites and Apartments is nestled within a highly secure residential perimeter on Regina Coker Street/Ogunlowo Street in Adeniyi Jones, Ikeja, Lagos. It offers executive travelers proximity to airports, shopping, dining, and government institutions.', 1, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'features', 'Designed for Comfort', 'Premium Amenities & Facilities', 'Every suite features smart features and amenities configured to deliver a beautiful, modern stay.', 1, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `hospitality_promises`
--

CREATE TABLE `hospitality_promises` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `icon` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `hospitality_promises`
--

INSERT INTO `hospitality_promises` (`id`, `title`, `description`, `icon`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Comfort', 'Spacious en-suite multi-bedroom layouts featuring high-end custom mattresses, premium linens, climate-controlled interiors, and dedicated workspaces.', 'home', 1, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 'Convenience', 'Positioned minutes from MM1/MM2 domestic and MMIA international airport terminals with optional secure airport transfers and daily housekeeping.', 'clock', 1, 2, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(3, 'Smart Living', 'Unlimited high-speed broadband corporate-grade Wi-Fi and interactive home entertainment including smart TVs, PS5, and premium snooker tables.', 'cpu-chip', 1, 3, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(4, 'Security-Conscious Access', 'Advanced, access-controlled keyless smart deadbolts, gated perimeter guards, and 24/7 exterior corridor CCTV coverage.', 'shield-check', 1, 4, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(5, 'Premium Guest Experience', 'Proactive concierge desks, immediate digital communication options, and responsive maintenance reporting built around your schedule.', 'sparkles', 1, 5, '2026-06-04 11:23:04', '2026-06-04 11:23:04');

-- --------------------------------------------------------

--
-- Table structure for table `housekeeping_requests`
--

CREATE TABLE `housekeeping_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `apartment_unit` varchar(255) DEFAULT NULL,
  `request_type` varchar(255) NOT NULL,
  `preferred_date` date DEFAULT NULL,
  `preferred_time` varchar(255) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `assigned_to` varchar(255) DEFAULT NULL,
  `admin_notes` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `housekeeping_tasks`
--

CREATE TABLE `housekeeping_tasks` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `unit_id` bigint(20) UNSIGNED NOT NULL,
  `staff_name` varchar(255) NOT NULL,
  `task_details` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `scheduled_at` datetime NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `housekeeping_tasks`
--

INSERT INTO `housekeeping_tasks` (`id`, `unit_id`, `staff_name`, `task_details`, `status`, `scheduled_at`, `created_at`, `updated_at`) VALUES
(1, 7, 'Blessing Okon', 'Full en-suite sweep, kitchen refill, and snooker dust-off.', 'pending', '2026-06-04 14:23:00', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `house_rules_policies`
--

CREATE TABLE `house_rules_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `house_rules_policies`
--

INSERT INTO `house_rules_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'House Rules', 'house-rules', 'Please review the House Rules for Kevron Suites and Apartments before booking and during your stay. These rules help protect guest comfort, property standards, security-conscious access and a peaceful stay experience in Adeniyi Jones, Ikeja.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Legal & Compliance Adviser', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `house_rule_acceptances`
--

CREATE TABLE `house_rule_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `house_rule_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `house_rule_categories`
--

CREATE TABLE `house_rule_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `house_rule_categories`
--

INSERT INTO `house_rule_categories` (`id`, `name`, `slug`, `description`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'General Guest Conduct', 'guest-conduct', 'Expectations for respectful behavior, quiet enjoyment, and responsible use of our facilities.', 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Approved Occupancy and Guest Count', 'occupancy-limits', 'Maximum occupancy rules per suite type and overnight guest restrictions.', 1, 2, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 'Visitor Policy', 'visitor-policy', 'Rules governing daytime visitors, gate security checks, and overnight registration.', 1, 3, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 'Parties, Events and Gatherings', 'parties-events', 'Strict prohibitions against unauthorized parties, commercial shoots, or social events.', 1, 4, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 'Noise and Quiet Enjoyment', 'noise-quiet-enjoyment', 'Quiet hours and sound limits to maintain a serene environment for all residents.', 1, 5, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 'Smoking, Vaping and Open Flames', 'smoking-vaping-flames', 'Prohibition of indoor smoking/vaping and hazards like shisha or candles.', 1, 6, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 'Pet Policy', 'pet-policy', 'Rules regarding pets and accessibility parameters for service/assistance animals.', 1, 7, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 'Smart Access and Security Rules', 'smart-access-security', 'Responsible use of keyless entries, gate passes, and our privacy-safe CCTV policy.', 1, 8, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 'Property Care and Responsible Use', 'property-care', 'Guidelines on handling furniture, electronics, PS5 setups, and snooker tables.', 1, 9, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 'Kitchen and Laundry Rules', 'kitchen-laundry', 'Safe operations of appliances, unattended cooking rules, and waste hygiene.', 1, 10, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 'Balcony, Seat-Out and Outdoor Area Rules', 'balcony-outdoor', 'Safety, child supervision, and noise restrictions in private and public outdoor spaces.', 1, 11, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 'Cleanliness, Waste and Hygiene', 'cleanliness-waste', 'Disposal guidelines, housekeeping access, and dynamic cleaning fees for excessive mess.', 1, 12, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 'Damage, Missing Items and Security Deposit', 'damage-deposit', 'How accidental damages are assessed, reported, and linked to security deposit deductions.', 1, 13, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(14, 'Fire Safety and Emergency Rules', 'fire-safety', 'Emergency exits, fire extinguisher locations, and immediate hazard reporting processes.', 1, 14, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(15, 'Illegal or Prohibited Activities', 'prohibited-activities', 'Zero tolerance for illegal substances, cyber misconduct, weapons, and harassment.', 1, 15, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(16, 'Internet and Wi-Fi Use', 'internet-wifi', 'Fair and lawful usage terms for our high-speed, fiber-optic broadbands.', 1, 16, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(17, 'Parking and Vehicle Use', 'parking-vehicle', 'Rules for designated parking bays, vendor transits, and gate access protocols.', 1, 17, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(18, 'Guest Services and Requests', 'guest-services', 'Housekeeping scheduling, airport pickup parameters, and car-rental rules.', 1, 18, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(19, 'Check-In and Check-Out Conduct', 'checkin-checkout', 'Standard check-in/checkout hours, onboarding ID checks, and key turn-ins.', 1, 19, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(20, 'Lost and Found', 'lost-found', 'Reporting forgotten items, holding periods, and return shipment coordination.', 1, 20, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(21, 'Breach of House Rules and Enforcement', 'breach-enforcement', 'Consequences of policy violations, formal warnings, and immediate eviction terms.', 1, 21, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(22, 'Corporate and Group Stay Rules', 'corporate-group', 'Corporate representative roles, roster checks, and corporate billing guidelines.', 1, 22, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(23, 'Long-Stay Rules', 'long-stay', 'Compliance parameters for stays over 30 days, inspection schedules, and subletting bans.', 1, 23, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(24, 'Guest Manual Linkage', 'guest-manual', 'Access parameters to our comprehensive, secure digital guest guidebooks.', 1, 24, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `house_rule_sections`
--

CREATE TABLE `house_rule_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `house_rules_policy_id` bigint(20) UNSIGNED NOT NULL,
  `house_rule_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `house_rule_sections`
--

INSERT INTO `house_rule_sections` (`id`, `house_rules_policy_id`, `house_rule_category_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 'general_guest_conduct', '1. General Guest Conduct', '<p>Guests at Kevron Suites and Apartments are expected to conduct themselves in a responsible, respectful, and law-abiding manner at all times. All guests, occupants, and visitors must treat our hospitality hosts, security agents, other residents, and the surrounding neighborhood with courtesy. Threatening, abusive, violent, or disorderly behavior is strictly prohibited and will lead to immediate action, subject to management approval.</p>', 1, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 2, 'approved_occupancy_limits', '2. Approved Occupancy and Guest Count', '<p>To maintain guest comfort, safety standards, and local city council limits, only registered guests are permitted to reside overnight. Strict maximum occupancy limits apply per suite category as follows:</p><ul><li><strong>1 Bedroom Master Suite:</strong> Maximum of 2 adults.</li><li><strong>2 Bedroom Luxury Apartment:</strong> Maximum of 4 adults.</li><li><strong>3 Bedroom Luxury Apartment:</strong> Maximum of 6 adults.</li><li><strong>4 Bedroom Luxury Apartment:</strong> Maximum of 8 adults.</li></ul><p>Any additional occupants exceeding the initial booking registration details require prior written approval and may incur extra night charges according to the applicable policy.</p>', 2, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 3, 'visitor_policy_rules', '3. Visitor Policy', '<p>Daytime visitors are welcome but must comply fully with our gate visitor management rules. All visitors are required to register at the security post with a valid identification card. Primary guests are fully responsible for the behavior and compliance of their visitors. Visitors are not permitted to stay overnight unless they register formally at the front desk, present valid government-issued ID, and receive written authorization, subject to maximum occupancy limits.</p>', 3, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 1, 4, 'parties_events_gatherings', '4. Parties, Events and Gatherings', '<p>In order to guarantee quiet stay and residential serenity for all, <strong>strictly no parties, commercial shoots, large group gatherings, or loud celebrations</strong> are permitted within the suites or common premises unless approved in writing. Minor special requests (e.g. low-key birthday decoration or private anniversaries setup) may be accommodated if coordinated and approved in writing by management beforehand. Unapproved parties will be stopped immediately, and guests will be subject to eviction and deposit penalties.</p>', 4, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 1, 5, 'noise_quiet_hours', '5. Noise and Quiet Enjoyment', '<p>Noise levels must be kept reasonable at all times out of respect for neighbor comfort. Standard quiet hours are observed from <strong>10:00 PM to 7:00 AM daily</strong> (or as configured in current property parameters). Shouting, loud speakers, or disruptive audio levels are prohibited during these hours. Valid noise complaints received from other guests or neighbors may lead to warnings, policy enforcement fines, or immediate booking cancellation.</p>', 5, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 1, 6, 'smoking_vaping_flames_policy', '6. Smoking, Vaping and Open Flames', '<p>To ensure healthy interior standards and reduce fire hazards, <strong>smoking, vaping, and shisha inside any apartment rooms is strictly prohibited</strong>. Guests who wish to smoke must use designated outdoor spaces or private balconies, ensuring that balcony doors and windows remain fully closed to prevent smoke drift. Using candles, fireworks, incense, or hazardous materials inside the apartments is prohibited unless approved in writing. Odor removal or alarm trigger costs will be charged according to configured rates.</p>', 6, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 1, 7, 'pet_policy_rules', '7. Pet Policy', '<p>In order to provide allergy-free environments, pets are not allowed on the premises unless pre-approved in writing by management under exceptional circumstances. Legally recognized assistance or service animals are permitted where applicable and must be declared in the booking stage. Any damage, odor, or disturbance caused by an animal will lead to professional cleaning charges or deposit deductions.</p>', 7, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 1, 8, 'smart_access_security_rules', '8. Smart Access and Security Rules', '<p>Our luxury suites utilize electronic smart locks and keyless entries for premium security. Guests must handle access codes and keycards responsibly and must not share security codes with unregistered visitors. In compliance with security standards, 24/7 CCTV surveillance applies to corridors, parking, gate access, and communal pathways. <strong>CCTV strictly does not cover any private rooms, bedrooms, or suites</strong>. Guests must ensure windows and doors are secured when leaving the suite.</p>', 8, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 1, 9, 'property_care_expectations', '9. Property Care and Responsible Use', '<p>Guests must care for the property and not move heavy furniture without written consent. Special entertainment facilities, including PlayStation 5 (PS5) consoles and snooker tables, must be handled with care. No items belonging to the apartment inventory (towels, decorative pieces, electronics, kitchen utensils) may be removed. Any malfunctions or structural issues should be reported promptly to guest services.</p>', 9, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 1, 10, 'kitchen_laundry_rules', '10. Kitchen and Laundry Rules', '<p>Kitchen stoves, oven ranges, and electric cookers must never be left unattended during use. All appliances must be switched off after cooking. Food waste must be disposed of properly in bins and not washed down kitchen sinks to prevent blockages. In-suite washing machines and dryers must be used according to instructions without overloading. Excessive mess or grease accumulation will attract cleaning charges.</p>', 10, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 1, 11, 'balcony_outdoor_rules', '11. Balcony, Seat-Out and Outdoor Area Rules', '<p>Balconies and common outdoor seat-out spaces must be used safely. Throwing items, bottles, or trash from balconies or windows is strictly prohibited. Climbing on railings is highly dangerous. Children must be supervised at all times in outdoor zones. Loud music or disruptive assemblies in outdoor areas are prohibited during quiet hours.</p>', 11, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 1, 12, 'cleanliness_waste_rules', '12. Cleanliness, Waste and Hygiene', '<p>Apartments must be kept reasonably clean and hygienic. Waste must be bagged and deposited in the designated outdoor garbage bays. Spills, stains, or fluid leaks must be reported to housekeeping immediately to prevent permanent damage. Stays include scheduled housekeeping, and additional cleanings can be requested through guest services channels.</p>', 12, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 1, 13, 'damage_security_deposit', '13. Damage, Missing Items and Security Deposit', '<p>A standard refundable security deposit is required at check-in (according to current settings). The property will undergo a thorough post-checkout inspection within a designated timeframe. Accidental damages, stained linens, or missing inventory items will be assessed fairly and deducted from the security deposit, in accordance with the Damage/Deposit Policy and general Terms and Conditions.</p>', 13, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(14, 1, 14, 'fire_safety_rules', '14. Fire Safety and Emergency Rules', '<p>For collective safety, fire escape corridors, stairs, and common exits must never be blocked. Tampering with smoke detectors, alarm panels, fire extinguishers, or security infrastructure is a serious violation. Sockets must not be overloaded. In case of smoke, gas odor, or fire, evacuate immediately and contact our emergency assistance lines detailed in the guest manual.</p>', 14, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(15, 1, 15, 'prohibited_illegal_activities', '15. Illegal or Prohibited Activities', '<p>Kevron Suites operates under a zero-tolerance framework for illegal activities. Strictly prohibited actions include: possession of illegal drugs or illicit substances, weapons or explosive materials, fraudulent/unlawful commercial activity, prostitution, harassment, and unauthorized filming in sensitive areas. Violators will be reported to the police and evicted immediately.</p>', 15, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(16, 1, 16, 'internet_wifi_use', '16. Internet and Wi-Fi Use', '<p>Complimentary high-speed Wi-Fi is provided for lawful guest use. Hacking, spamming, piracy, illegal downloading, and copyright violations are strictly prohibited. Wi-Fi passwords must not be shared with unauthorized external individuals. While we provide reliable multi-provider broadbands, internet speeds are subject to local network conditions.</p>', 16, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(17, 1, 17, 'parking_vehicle_rules', '17. Parking and Vehicle Use', '<p>Vehicles must park within designated bays and must never obstruct active driveways, emergency exits, or neighboring gates. Valet or airport pickup drivers must follow security gates instructions. Parking is at the owner’s risk under the applicable property policy; no parking guarantees are published publicly.</p>', 17, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(18, 1, 18, 'guest_services_requests', '18. Guest Services and Requests', '<p>Checked-in guests can request scheduled housekeepings, maintenance assistance, airport pickups, car rentals, or decorative setups through our guest services desk. All services are subject to availability, operator timing, and confirmed booking rates.</p>', 18, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(19, 1, 19, 'checkin_checkout_conduct', '19. Check-In and Check-Out Conduct', '<p>Standard check-in is from <strong>2:00 PM</strong>, and standard check-out is by <strong>11:00 AM</strong> (or as configured). Upon check-in, primary guests must complete ID verification. On checkout, guests must secure all windows, turn off electrical appliances, and return keycards or log out from smart access interfaces as instructed.</p>', 19, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(20, 1, 20, 'lost_found_rules', '20. Lost and Found', '<p>Guests should report any misplaced or forgotten items immediately. Found items are logged in our secure Lost and Found system and held for a designated storage period (e.g. 30 days, or as configured) before disposal. The recovery and return shipment costs are fully covered by the guest, according to the applicable policy.</p>', 20, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(21, 1, 21, 'rule_breach_consequences', '21. Breach of House Rules and Enforcement', '<p>Violating these House Rules harms property standards and other guests. Depending on severity, enforcement actions include: formal warnings, service/access restrictions, security deposit deductions, immediate stay termination without refund, or blacklisting under corporate review. All actions are securely audit-logged.</p>', 21, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(22, 1, 22, 'corporate_group_stays', '22. Corporate and Group Stay Rules', '<p>Corporate stay and group booking coordinators must submit a complete guest list roster before check-in. The organizing company representative coordinates compliance and is responsible for team conduct. Corporate billing structures do not exempt guests from rules, quiet hours, or damage liabilities.</p>', 22, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(23, 1, 23, 'long_stay_rules_compliance', '23. Long-Stay Rules', '<p>Residents staying over 30 days must maintain cleanliness and allow maintenance/inspection access with reasonable advance notice (e.g. bi-weekly). Subletting, sharing locks, or transferring occupancy without prior written approval is strictly prohibited.</p>', 23, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(24, 1, 24, 'guest_manual_linkage_rules', '24. Guest Manual Linkage', '<p>Detailed manuals covering smart lock use, appliance guides, emergency numbers, and trash rules are accessible inside our secure guest dashboard. Sensitive access codes and Wi-Fi passwords are kept secure and visible only to verified checking-in guests.</p>', 24, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `identity_access_logs`
--

CREATE TABLE `identity_access_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `guest_identity_document_id` bigint(20) UNSIGNED NOT NULL,
  `action` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `accessed_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `identity_retention_rules`
--

CREATE TABLE `identity_retention_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `rule_name` varchar(255) NOT NULL,
  `retention_period_days` int(11) NOT NULL DEFAULT 365,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `description` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `identity_retention_rules`
--

INSERT INTO `identity_retention_rules` (`id`, `rule_name`, `retention_period_days`, `is_active`, `description`, `created_at`, `updated_at`) VALUES
(1, 'Active Booking ID Uploads', 30, 1, 'Private guest ID document uploads are purged 30 days after check-out.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'Corporate Guest Lists', 365, 1, 'B2B sponsored guest allocations are held for 1 year to complete audit reconciliations.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 'Day Visitor Access Registers', 90, 1, 'Visitor gate registry files are held for 3 months before purge.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 'Access Control Key Logs', 60, 1, 'Smart lock entry logs are retained for 60 days to monitor suite security.', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `id_document_types`
--

CREATE TABLE `id_document_types` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `applies_to_guest_type` varchar(255) NOT NULL DEFAULT 'all',
  `requires_document_number` tinyint(1) NOT NULL DEFAULT 1,
  `requires_expiry_date` tinyint(1) NOT NULL DEFAULT 1,
  `requires_upload` tinyint(1) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `id_document_types`
--

INSERT INTO `id_document_types` (`id`, `name`, `slug`, `description`, `applies_to_guest_type`, `requires_document_number`, `requires_expiry_date`, `requires_upload`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'National ID / NIN Slip', 'nin-slip', 'Nigerian National Identification Number slip or plastic card.', 'domestic', 1, 0, 1, 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'Nigerian Driver\'s Licence', 'drivers-licence', 'Valid driver\'s licence issued by the FRSC.', 'domestic', 1, 1, 1, 1, 2, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 'Nigerian Voter\'s Card', 'voters-card', 'Permanent Voter\'s Card (PVC) issued by INEC.', 'domestic', 1, 0, 1, 1, 3, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 'International Passport', 'international-passport', 'Valid passport issued by official foreign or domestic passport portals.', 'both', 1, 1, 1, 1, 4, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 'Residence Permit / CERPAC', 'cerpac', 'Combined Expatriate Residence Permit and Aliens Card.', 'international', 1, 1, 1, 1, 5, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `id_rejection_reasons`
--

CREATE TABLE `id_rejection_reasons` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `reason_key` varchar(255) NOT NULL,
  `label` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `id_rejection_reasons`
--

INSERT INTO `id_rejection_reasons` (`id`, `reason_key`, `label`, `description`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'expired', 'Expired Document', 'The provided identification document has passed its official expiry date.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'blurry', 'Blurry / Unreadable Upload', 'The image upload is low-resolution, out of focus, or key details are obscured.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 'mismatch', 'Details Mismatch', 'The name or face on the identity document does not match the registered booking guest.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 'incomplete', 'Incomplete Capture', 'Only the front or back of the document was uploaded, missing required pages.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 'suspicious', 'Altered or Suspicious Document', 'The document shows signs of manual editing, digital manipulation, or potential fraud.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `incident_evidence_media`
--

CREATE TABLE `incident_evidence_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_incident_report_id` bigint(20) UNSIGNED NOT NULL,
  `file_path` varchar(255) NOT NULL,
  `file_disk` varchar(255) NOT NULL DEFAULT 'local',
  `file_type` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `inventory_items`
--

CREATE TABLE `inventory_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `replacement_value` decimal(12,2) NOT NULL DEFAULT 0.00,
  `description` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `inventory_items`
--

INSERT INTO `inventory_items` (`id`, `name`, `replacement_value`, `description`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Smart Lock Card Reader', 75000.00, 'RFID lock handle module.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Microwave Glass Turntable', 25000.00, 'Rotatable microwave inner plate.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, '4K TV Remote Control', 15000.00, 'Smart TV bluetooth controller.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 'Leather Sofa Cushion', 120000.00, 'Luxury lounge leather seating cushion.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 'Smart Access Card / Keycard', 10000.00, 'NFC en-suite access keycard.', 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `invoices`
--

CREATE TABLE `invoices` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `invoice_number` varchar(255) NOT NULL,
  `amount` decimal(12,2) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'unpaid',
  `due_date` date NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `invoices`
--

INSERT INTO `invoices` (`id`, `booking_id`, `invoice_number`, `amount`, `status`, `due_date`, `created_at`, `updated_at`) VALUES
(1, 1, 'INV-2026-0001', 1150000.00, 'paid', '2026-05-15', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 2, 'INV-2026-0002', 1100000.00, 'paid', '2026-06-02', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `invoice_items`
--

CREATE TABLE `invoice_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `invoice_id` bigint(20) UNSIGNED NOT NULL,
  `description` varchar(255) NOT NULL,
  `quantity` int(11) NOT NULL DEFAULT 1,
  `unit_price` decimal(12,2) NOT NULL,
  `total_price` decimal(12,2) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `jobs`
--

CREATE TABLE `jobs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `queue` varchar(255) NOT NULL,
  `payload` longtext NOT NULL,
  `attempts` tinyint(3) UNSIGNED NOT NULL,
  `reserved_at` int(10) UNSIGNED DEFAULT NULL,
  `available_at` int(10) UNSIGNED NOT NULL,
  `created_at` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `job_batches`
--

CREATE TABLE `job_batches` (
  `id` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `total_jobs` int(11) NOT NULL,
  `pending_jobs` int(11) NOT NULL,
  `failed_jobs` int(11) NOT NULL,
  `failed_job_ids` longtext NOT NULL,
  `options` mediumtext DEFAULT NULL,
  `cancelled_at` int(11) DEFAULT NULL,
  `created_at` int(11) NOT NULL,
  `finished_at` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `landmarks`
--

CREATE TABLE `landmarks` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `landmark_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `address` text DEFAULT NULL,
  `distance_time` varchar(255) NOT NULL,
  `travel_time_label` varchar(255) DEFAULT NULL,
  `distance_label` varchar(255) DEFAULT NULL,
  `category` varchar(255) NOT NULL,
  `latitude` decimal(10,8) DEFAULT NULL,
  `longitude` decimal(11,8) DEFAULT NULL,
  `is_verified` tinyint(1) NOT NULL DEFAULT 1,
  `media_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `landmarks`
--

INSERT INTO `landmarks` (`id`, `landmark_category_id`, `name`, `slug`, `description`, `address`, `distance_time`, `travel_time_label`, `distance_label`, `category`, `latitude`, `longitude`, `is_verified`, `media_id`, `is_active`, `sort_order`, `order_index`, `created_at`, `updated_at`) VALUES
(1, NULL, 'Local Airport (MM1/MM2)', NULL, NULL, NULL, '~8 mins', NULL, NULL, 'Airport', 6.57890000, 3.33450000, 1, NULL, 1, 0, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, NULL, 'International Airport (MMIA)', NULL, NULL, NULL, '~15 mins', NULL, NULL, 'Airport', 6.57720000, 3.32110000, 1, NULL, 1, 0, 2, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, NULL, 'Memabod Police Station', NULL, NULL, NULL, '~3 mins', NULL, NULL, 'Police', 6.59890000, 3.35450000, 1, NULL, 1, 0, 3, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, NULL, 'Ikeja City Mall / Shoprite', NULL, NULL, NULL, '~8 mins', NULL, NULL, 'Shopping', 6.61200000, 3.35800000, 1, NULL, 1, 0, 4, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 1, 'MM1 Local Airport', 'mm1-local-airport', 'Domestic Terminal 1 (General Aviation Terminal) serving major local flights across Nigeria.', 'Agege Motor Road, Ikeja, Lagos.', 'approximately 8 minutes, subject to traffic', '8 mins drive', '4.2 km', 'Airport', 6.57890000, 3.33450000, 1, NULL, 1, 1, 0, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(6, 1, 'MM2 Local Airport', 'mm2-local-airport', 'Ultra-modern Domestic Terminal 2 serving local airlines with premier lounge and retail spaces.', 'Airport Road, Ikeja, Lagos.', 'approximately 8 minutes, subject to traffic', '8 mins drive', '4.5 km', 'Airport', 6.57950000, 3.33850000, 1, NULL, 1, 2, 0, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(7, 1, 'Murtala Muhammed International Airport', 'murtala-muhammed-international-airport', 'The main international airport serving Lagos, connecting you directly to key global destinations.', 'Airport Road, Ikeja, Lagos.', 'approximately 15 minutes, subject to traffic', '15 mins drive', '6.8 km', 'Airport', 6.57720000, 3.32110000, 1, NULL, 1, 3, 0, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(8, 2, 'Ikeja City Mall / Shoprite', 'ikeja-city-mall', 'The premier shopping mall on the mainland containing Shoprite, cinema screens, international brand stores, and continental food courts.', 'Obafemi Awolowo Way, Alausa, Ikeja, Lagos.', 'approximately 8 minutes, subject to traffic', '8 mins drive', '3.9 km', 'Shopping', 6.61200000, 3.35800000, 1, NULL, 1, 4, 0, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(9, 6, 'Memabod Police Station', 'memabod-police-station', 'Local police division providing 24/7 security patrolling and immediate rapid response support for the neighborhood.', 'Adeniyi Jones, Ikeja, Lagos.', 'approximately 3 minutes, subject to traffic', '3 mins drive', '1.1 km', 'Police Support', 6.59890000, 3.35450000, 1, NULL, 1, 5, 0, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(10, 7, 'Adeniyi Jones Neighbourhood', 'adeniyi-jones-neighbourhood', 'An upscale, tree-lined residential and commercial boulevard known for security, luxury, and premium accessibility.', 'Adeniyi Jones, Ikeja, Lagos.', 'approximately 1 minute walk', '1 min walk', '0.1 km', 'Neighbourhood Environs', 6.60123400, 3.35123400, 1, NULL, 1, 6, 0, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `landmark_categories`
--

CREATE TABLE `landmark_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `landmark_categories`
--

INSERT INTO `landmark_categories` (`id`, `name`, `slug`, `icon`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Airport', 'airport', 'plane', 1, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'Shopping', 'shopping', 'shopping-bag', 2, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'Dining', 'dining', 'utensils', 3, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 'Events', 'events', 'calendar', 4, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 'Security', 'security', 'shield', 5, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 'Police Support', 'police-support', 'shield-alert', 6, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 'Neighbourhood Environs', 'neighbourhood', 'map', 7, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `legal_pages`
--

CREATE TABLE `legal_pages` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `legal_pages`
--

INSERT INTO `legal_pages` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Terms and Conditions', 'terms-and-conditions', 'Please read these Terms and Conditions carefully before using the Kevron Suites and Apartments website, making a booking, submitting an enquiry, requesting guest services or staying at any Kevron Suites and Apartments location.', '2026-06-01', '2026-06-04 12:23:12', '1.0', 'published', 'Legal & Compliance Adviser', '2026-06-04 12:23:12', '2026-06-04 11:23:12', '2026-06-04 11:23:12');

-- --------------------------------------------------------

--
-- Table structure for table `legal_page_sections`
--

CREATE TABLE `legal_page_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `legal_page_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `legal_page_sections`
--

INSERT INTO `legal_page_sections` (`id`, `legal_page_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'acceptance_of_terms', '1. Acceptance of Terms', '<p>By accessing the Kevron Suites and Apartments website, submitting an enquiry, requesting guest services, accessing the guest dashboard, registering an account, or confirming a booking, you explicitly acknowledge that you have read, understood, and agreed to be bound by these Terms and Conditions. If you do not agree, you must immediately cease utilizing our services or website.</p>', 1, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(2, 1, 'business_identity', '2. Business Identity and Scope', '<p>These Terms govern the services offered by <strong>Kevron Suites and Apartments</strong>. Our current launch branch is located at <strong>7B Regina Coker Street, Adeniyi Jones / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos, Nigeria</strong>. These Terms will also apply to all future Kevron operational locations, subject to branch-specific override rules configured by management.</p>', 2, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(3, 1, 'booking_terms', '3. Booking Terms and Review', '<p>A booking request does not automatically guarantee availability. A booking is confirmed only when Kevron Suites and Apartments confirms availability and the applicable payment or approval conditions have been completed. Management reserves the right to refuse or cancel any booking request if false, incomplete, or fraudulent details are submitted.</p>', 3, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(4, 1, 'rates_and_pricing', '4. Rates and Pricing', '<p>Our base nightly rates are dynamically configured as follows:\n                <ul>\n                    <li>1 Bedroom Master Suite — [1BR_RATE]/night</li>\n                    <li>2 Bedroom Luxury Apartment — [2BR_RATE]/night</li>\n                    <li>3 Bedroom Luxury Apartment — [3BR_RATE]/night</li>\n                    <li>4 Bedroom Luxury Apartment — [4BR_RATE]/night</li>\n                </ul>\n                Rates are subject to weekend markups, seasonal/festive premiums, and corporate discounts. Historical rates are protected for already confirmed reservations.</p>', 4, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(5, 1, 'payment_terms', '5. Payment Terms and Invoices', '<p>We accept bank transfers, online payment portals (e.g., Flutterwave), and verified corporate billing accounts. Bank transfers must be accompanied by an uploaded proof-of-payment screenshot, which is subject to internal verification. Booking confirmations will remain pending until payments are cleared.</p>', 5, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(6, 1, 'security_deposit_damages', '6. Security Deposit and Damage Terms', '<p>A refundable security deposit of ₦100,000 is required upon check-in to secure against damages. An inspection is conducted upon checkout. Deductions will apply for excessive cleaning, missing en-suite items, or property damage. The remaining balance is returned within 24 hours of inspection. Guests remain responsible for all visitors.</p>', 6, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(7, 1, 'cancellation_refunds', '7. Cancellation, Modification, and Refunds', '<p>Cancellations made 5+ days before check-in qualify for a 100% refund of the base stay. Cancellations within 2 to 5 days before check-in receive a 50% refund. Cancellations under 48 hours of check-in, early departures, or no-shows are strictly non-refundable. All refund requests are subject to management approval.</p>', 7, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(8, 1, 'check_in_out', '8. Check-In and Check-Out', '<p>Our check-in time is <strong>2:00 PM</strong>, and check-out is <strong>11:00 AM</strong>. Early check-in or late check-out requests are subject to availability and will attract additional hourly rates. Digital check-in and arrival time submissions are highly encouraged to speed up arrival onboarding.</p>', 8, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(9, 1, 'guest_id_verification', '9. Guest Identification and Verification', '<p>To ensure smart secure community living, guests must submit a valid government-issued ID (Passport, Driver License, or National ID) during reservation check-in. Corporate bookings must upload a guest-list roster. Personal identification records are processed in compliance with private data protection guidelines.</p>', 9, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(10, 1, 'house_rules', '10. House Rules', '<p>To guarantee comfort for all residents, guests must comply with the house rules:\n                <ul>\n                    <li>No smoking is allowed inside the apartments (a penalty of ₦100,000 applies for violations).</li>\n                    <li>Loud music, parties, or social gatherings are strictly prohibited.</li>\n                    <li>Unregistered overnight visitors are not permitted.</li>\n                    <li>Smart access codes must not be shared with third parties.</li>\n                </ul></p>', 10, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(11, 1, 'security_smart_living', '11. Security and Smart Living', '<p>Our property is secured with keyless smart locks, video intercom doorbells, and 24/7 CCTV surveillance coverage of relevant access/common areas. CCTV does not monitor private guest rooms, bedrooms, or suites. Guests must not tamper with security or network infrastructures.</p>', 11, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(12, 1, 'guest_services', '12. Guest Services', '<p>We coordinate airport pickup transfers, executive car rentals, housekeeping requests, and maintenance support. While we partner with premium vendors, Kevron remains dependent on third-party vendor schedules and is not liable for transport delays outside our control.</p>', 12, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(13, 1, 'corporate_stays', '13. Corporate Booking Terms', '<p>B2B bookings and corporate corporate stay requests are subject to account relationship reviews. Invoices are sent directly to the corporate account manager. The company assumes joint and several liability for guest conduct, property damages, and unpaid balances.</p>', 13, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(14, 1, 'long_stays', '14. Long-Stay Terms', '<p>Stays extending beyond 30 days qualify for long-stay pricing rules (e.g. 15% discount) and are subject to bi-weekly staged payments. Security deposits are calculated proportionally. Housekeeping schedules and maintenance access are coordinated bi-weekly.</p>', 14, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(15, 1, 'guest_dashboard', '15. Guest Account Dashboard Terms', '<p>Guests can manage active reservations, download invoices, submit reviews, and request support tickets from the guest dashboard. Guests must keep login passcodes secure and notify us immediately of any unauthorized account access. Accounts may be suspended for misuse.</p>', 15, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(16, 1, 'website_use', '17. Website Use', '<p>Users must not hack, scrape, spam, or inject malicious scripts or malware into the Kevron Suites and Apartments website. Unauthorized access of database records or system API keys will lead to immediate service revocation and potential legal actions.</p>', 17, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(17, 1, 'intellectual_property', '18. Intellectual Property', '<p>All logos, Marcellus typography, photography, vectors, and layouts displayed on this website are protected under intellectual property rights and remain the property of Kevron Suites and Apartments. No copying or reuse is permitted without written consent.</p>', 18, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(18, 1, 'privacy_protection', '19. Privacy and Data Protection', '<p>We take private guest documents and credentials seriously. All guest registrations, banking proof-of-payments, and identification records are processed securely and used exclusively for reservations verification in compliance with our Privacy Policy.</p>', 19, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(19, 1, 'third_party_services', '20. Third-Party Services', '<p>Our website utilizes third-party integrations (e.g., Flutterwave gateway, Google Maps, WhatsApp chat API). Users acknowledge that these integrations are subject to independent terms and policies, and Kevron is not liable for gateway outages.</p>', 20, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(20, 1, 'limitation_of_liability', '21. Limitation of Liability', '<p><strong>[Requires Legal Review]</strong> To the maximum extent permitted by applicable law, Kevron Suites and Apartments is not liable for loss of personal belongings, cash, or electronics, nor for any indirect, punitive, or consequential damages resulting from guest stay actions or third-party acts beyond our control.</p>', 21, 1, 1, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(21, 1, 'force_majeure', '22. Force Majeure', '<p>Kevron is not liable for failure to deliver services due to events of Force Majeure, which include but are not limited to: natural disasters, fires, floods, utility grid disruptions, government restrictions, security emergency alerts, or payment system failures.</p>', 22, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(22, 1, 'disputes_jurisdiction', '23. Complaints and Dispute Resolution', '<p>If you have any complaints, please contact our support desk first at info@kevronapartments.com. These Terms are governed by and construed in accordance with the laws of the Federal Republic of Nigeria. Any disputes shall be subject to the exclusive jurisdiction of courts in Lagos State.</p>', 23, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(23, 1, 'changes_to_terms', '24. Changes to Terms', '<p>We reserve the right to modify these Terms at any time. When updates are published, a new effective date and version will be assigned. Existing confirmed bookings are protected under the terms accepted at the time of checkout reservation.</p>', 24, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(24, 1, 'contact_information', '25. Contact Information', '<p>If you have questions about these Terms, please contact our corporate compliance desk:\n                <ul>\n                    <li>Email: info@kevronapartments.com</li>\n                    <li>Phone/WhatsApp: +234 808 213 1985</li>\n                    <li>Address: 7B Regina Coker Street, Adeniyi Jones, Ikeja, Lagos, Nigeria.</li>\n                </ul></p>', 25, 1, 0, '2026-06-04 11:23:12', '2026-06-04 11:23:12');

-- --------------------------------------------------------

--
-- Table structure for table `locations`
--

CREATE TABLE `locations` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `address` text NOT NULL,
  `latitude` decimal(10,8) DEFAULT NULL,
  `longitude` decimal(11,8) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `map_embed_url` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pre-launch',
  `booking_status` tinyint(1) NOT NULL DEFAULT 0,
  `contact_email` varchar(255) DEFAULT NULL,
  `contact_phone` varchar(255) DEFAULT NULL,
  `support_contact` varchar(255) DEFAULT NULL,
  `main_image` varchar(255) DEFAULT NULL,
  `override_reason` text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `locations`
--

INSERT INTO `locations` (`id`, `name`, `slug`, `address`, `latitude`, `longitude`, `description`, `map_embed_url`, `created_at`, `updated_at`, `status`, `booking_status`, `contact_email`, `contact_phone`, `support_contact`, `main_image`, `override_reason`) VALUES
(1, 'Kevron Suites and Apartments — Adeniyi Jones, Ikeja', 'ikeja-adeniyi-jones-lagos', '7B Regina Coker Street, Adeniyi Jones, Ikeja / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria.', 6.60123400, 3.35123400, 'Our first luxury branch, strategically located in Adeniyi Jones, Ikeja, Lagos. It offers easy proximity to airports, shopping centers, police stations, and dining, inside a highly secure perimeter.', 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3963.364426543202!2d3.3486445749936853!3d6.601552393392473!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x103b922fa6a9c7b3%3A0xe2128e4695e54d81!2sAdeniyi%20Jones%20Ave%2C%20Ikeja%20100271%2C%20Lagos!5e0!3m2!1sen!2sng!4v1717135000000!5m2!1sen!2sng', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 'pre-launch', 0, NULL, NULL, NULL, NULL, NULL),
(2, 'Kevron Suites — No. 8 Ogunlowo Street, Ikeja', 'ikeja-ogunlowo-street-lagos', 'No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria.', 6.60223400, 3.35223400, 'Serviced apartments at Ogunlowo Street, Adeniyi Jones, Ikeja', NULL, '2026-06-04 11:23:14', '2026-06-04 11:23:14', 'pre-launch', 0, NULL, NULL, NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `location_amenities`
--

CREATE TABLE `location_amenities` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `amenity_id` bigint(20) UNSIGNED NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `location_amenity`
--

CREATE TABLE `location_amenity` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `amenity_id` bigint(20) UNSIGNED NOT NULL,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `location_amenity`
--

INSERT INTO `location_amenity` (`id`, `location_id`, `amenity_id`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 1, 4, 1, NULL, NULL),
(2, 1, 12, 2, NULL, NULL),
(3, 1, 26, 3, NULL, NULL),
(4, 1, 27, 4, NULL, NULL),
(5, 1, 28, 5, NULL, NULL),
(6, 1, 29, 6, NULL, NULL),
(7, 1, 30, 7, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `location_landmarks`
--

CREATE TABLE `location_landmarks` (
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `landmark_id` bigint(20) UNSIGNED NOT NULL,
  `distance_time` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `location_landmarks`
--

INSERT INTO `location_landmarks` (`location_id`, `landmark_id`, `distance_time`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 5, 'approximately 8 minutes, subject to traffic', 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(1, 6, 'approximately 8 minutes, subject to traffic', 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(1, 7, 'approximately 15 minutes, subject to traffic', 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(1, 8, 'approximately 8 minutes, subject to traffic', 4, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(1, 9, 'approximately 3 minutes, subject to traffic', 5, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(1, 10, 'approximately 1 minute walk', 6, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `location_media`
--

CREATE TABLE `location_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED NOT NULL,
  `order_index` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `location_media`
--

INSERT INTO `location_media` (`id`, `location_id`, `media_asset_id`, `order_index`, `created_at`, `updated_at`) VALUES
(1, 1, 22, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(2, 1, 23, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 1, 24, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 1, 25, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `location_policies`
--

CREATE TABLE `location_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `global_policy_template_id` bigint(20) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `is_override` tinyint(1) NOT NULL DEFAULT 0,
  `version` int(11) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `location_safety_profiles`
--

CREATE TABLE `location_safety_profiles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `nearest_hospital` varchar(255) DEFAULT NULL,
  `nearest_police` varchar(255) DEFAULT NULL,
  `nearest_fire_station` varchar(255) DEFAULT NULL,
  `safety_instructions` text DEFAULT NULL,
  `emergency_notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `location_safety_profiles`
--

INSERT INTO `location_safety_profiles` (`id`, `location_id`, `nearest_hospital`, `nearest_police`, `nearest_fire_station`, `safety_instructions`, `emergency_notes`, `created_at`, `updated_at`) VALUES
(1, 1, 'Ikeja Medical Center / Reddington Hospital, Ikeja', 'Memabod Police Station / Area F Command, Ikeja', 'Lagos State Fire Service, Ikeja Headquarters', 'Follow basic security policies: verify all external guests; secure balcony doors at night; do not overload electrical breaker panels.', 'The property features 24/7 dedicated private security personnel, keyless perimeter gates, and fully operational fire fighting installations in all blocks.', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `location_settings`
--

CREATE TABLE `location_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `setting_key` varchar(255) NOT NULL,
  `setting_value` text DEFAULT NULL,
  `inherits_global` tinyint(1) NOT NULL DEFAULT 1,
  `locked_by_super_admin` tinyint(1) NOT NULL DEFAULT 0,
  `updated_by` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `location_staff_assignments`
--

CREATE TABLE `location_staff_assignments` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `role_id` bigint(20) UNSIGNED DEFAULT NULL,
  `access_scope` varchar(255) NOT NULL DEFAULT 'single',
  `starts_at` timestamp NULL DEFAULT NULL,
  `ends_at` timestamp NULL DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `assigned_by` bigint(20) UNSIGNED DEFAULT NULL,
  `reason` text DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `long_stay_deposit_rules`
--

CREATE TABLE `long_stay_deposit_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `long_stay_enquiry_id` int(11) DEFAULT NULL,
  `deposit_staged_payment_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `staged_amount_per_interval` decimal(12,2) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `long_stay_enquiries`
--

CREATE TABLE `long_stay_enquiries` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `full_name` varchar(255) DEFAULT NULL,
  `guest_type` varchar(255) DEFAULT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `preferred_apartment_type` varchar(255) DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `check_in` date NOT NULL,
  `expected_check_out_date` date DEFAULT NULL,
  `stay_duration` varchar(255) DEFAULT NULL,
  `number_of_guests` int(11) DEFAULT NULL,
  `company_name` varchar(255) DEFAULT NULL,
  `billing_preference` varchar(255) DEFAULT NULL,
  `airport_pickup_required` varchar(255) NOT NULL DEFAULT 'no',
  `car_rental_required` varchar(255) NOT NULL DEFAULT 'no',
  `duration_months` int(11) NOT NULL,
  `message` text DEFAULT NULL,
  `special_requirements` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `assigned_to` bigint(20) UNSIGNED DEFAULT NULL,
  `admin_notes` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `long_stay_rate_rules`
--

CREATE TABLE `long_stay_rate_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `weekly_rate` decimal(12,2) DEFAULT NULL,
  `monthly_rate` decimal(12,2) DEFAULT NULL,
  `minimum_stay_days` int(11) NOT NULL DEFAULT 7,
  `discount_percentage` decimal(5,2) NOT NULL DEFAULT 0.00,
  `corporate_rate` decimal(12,2) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `seasonal_adjustment` decimal(12,2) NOT NULL DEFAULT 0.00,
  `deposit_required` decimal(12,2) DEFAULT NULL,
  `security_deposit` decimal(12,2) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `long_stay_rate_rules`
--

INSERT INTO `long_stay_rate_rules` (`id`, `apartment_type_id`, `weekly_rate`, `monthly_rate`, `minimum_stay_days`, `discount_percentage`, `corporate_rate`, `is_active`, `seasonal_adjustment`, `deposit_required`, `security_deposit`, `notes`, `created_at`, `updated_at`) VALUES
(1, 1, 950000.00, 3500000.00, 7, 10.00, 3200000.00, 1, 0.00, 500000.00, 200000.00, 'Baseline weekly & monthly rates for executive business consultants.', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 2, 1260000.00, 4800000.00, 7, 15.00, 4500000.00, 1, 0.00, 800000.00, 300000.00, 'Substantial long-stay discount for relocation families.', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 3, 1575000.00, 6000000.00, 7, 15.00, 5500000.00, 1, 0.00, 1000000.00, 400000.00, 'Corporate team rates for relocations and expatriate teams.', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 4, 1890000.00, 7200000.00, 7, 20.00, 6800000.00, 1, 0.00, 1500000.00, 500000.00, 'Premium extended stays tailored for major executive blocks.', '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `long_stay_rules`
--

CREATE TABLE `long_stay_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `inspection_frequency_days` int(11) NOT NULL DEFAULT 14,
  `subletting_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `long_stay_rules`
--

INSERT INTO `long_stay_rules` (`id`, `inspection_frequency_days`, `subletting_allowed`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 14, 0, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `lost_and_found_items`
--

CREATE TABLE `lost_and_found_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `unit_id` bigint(20) UNSIGNED DEFAULT NULL,
  `item_name` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `finder_name` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'found',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `mail_settings`
--

CREATE TABLE `mail_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text DEFAULT NULL,
  `description` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `maintenance_tickets`
--

CREATE TABLE `maintenance_tickets` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `unit_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `priority` varchar(255) NOT NULL DEFAULT 'medium',
  `status` varchar(255) NOT NULL DEFAULT 'open',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `maintenance_tickets`
--

INSERT INTO `maintenance_tickets` (`id`, `unit_id`, `title`, `description`, `priority`, `status`, `created_at`, `updated_at`) VALUES
(1, 1, 'Smart Lock Battery Replacement', 'Keyless smart lock showing 15% battery. Needs immediate battery replacement for smart secure lock assurance.', 'high', 'open', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `map_settings`
--

CREATE TABLE `map_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `map_settings`
--

INSERT INTO `map_settings` (`id`, `key`, `value`, `created_at`, `updated_at`) VALUES
(1, 'map_embed_url', 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3963.364426543202!2d3.3486445749936853!3d6.601552393392473!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x103b922fa6a9c7b3%3A0xe2128e4695e54d81!2sAdeniyi%20Jones%20Ave%2C%20Ikeja%20100271%2C%20Lagos!5e0!3m2!1sen!2sng!4v1717135000000!5m2!1sen!2sng', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'map_directions_url', 'https://maps.app.goo.gl/IkejaAdeniyiJonesLagos', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'latitude', '6.601552', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'longitude', '3.348644', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `media_accessibility_records`
--

CREATE TABLE `media_accessibility_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `filename` varchar(255) NOT NULL,
  `media_type` varchar(255) NOT NULL DEFAULT 'image',
  `has_alt_text` tinyint(1) NOT NULL DEFAULT 0,
  `alt_text` text DEFAULT NULL,
  `has_captions` tinyint(1) NOT NULL DEFAULT 0,
  `has_transcript` tinyint(1) NOT NULL DEFAULT 0,
  `status` varchar(255) NOT NULL DEFAULT 'review',
  `verified_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `media_assets`
--

CREATE TABLE `media_assets` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `gallery_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `file_path` varchar(255) NOT NULL,
  `embed_url` varchar(255) DEFAULT NULL,
  `thumbnail_path` varchar(255) DEFAULT NULL,
  `poster_path` varchar(255) DEFAULT NULL,
  `file_type` varchar(255) NOT NULL DEFAULT 'image',
  `alt_text` varchar(255) DEFAULT NULL,
  `caption` text DEFAULT NULL,
  `orientation` varchar(255) DEFAULT NULL,
  `width` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL,
  `file_size` int(11) DEFAULT NULL,
  `mime_type` varchar(255) DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_primary` tinyint(1) NOT NULL DEFAULT 0,
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `is_gallery_visible` tinyint(1) NOT NULL DEFAULT 1,
  `is_booking_platform_ready` tinyint(1) NOT NULL DEFAULT 0,
  `is_bathroom_photo` tinyint(1) NOT NULL DEFAULT 0,
  `is_room_unit_photo` tinyint(1) NOT NULL DEFAULT 0,
  `is_exterior_photo` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `media_assets`
--

INSERT INTO `media_assets` (`id`, `title`, `slug`, `gallery_category_id`, `file_path`, `embed_url`, `thumbnail_path`, `poster_path`, `file_type`, `alt_text`, `caption`, `orientation`, `width`, `height`, `file_size`, `mime_type`, `location_id`, `apartment_type_id`, `is_primary`, `is_featured`, `is_gallery_visible`, `is_booking_platform_ready`, `is_bathroom_photo`, `is_room_unit_photo`, `is_exterior_photo`, `sort_order`, `status`, `created_at`, `updated_at`) VALUES
(1, 'Bedroom', 'bedroom', 3, 'pictures/bedroom.jpg', NULL, NULL, NULL, 'image', '1 Bedroom Master Suite interior', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(2, 'Master Bedroom', 'master-bedroom', 3, 'pictures/master-bedroom.jpg', NULL, NULL, NULL, 'image', '1 Bedroom Master Suite king bed', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(3, 'Living Room', 'living-room', 2, 'pictures/living-room.jpg', NULL, NULL, NULL, 'image', '1 Bedroom Master Suite living space', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(4, 'Kitchen', 'kitchen', 4, 'pictures/kitchen.jpg', NULL, NULL, NULL, 'image', '1 Bedroom Master Suite modern kitchen', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(5, 'Staircase', 'staircase', 5, 'pictures/staircase.jpg', NULL, NULL, NULL, 'image', '1 Bedroom Master Suite en-suite area', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(6, 'Bedroom 2', 'bedroom-2', 3, 'pictures/bedroom-2.jpg', NULL, NULL, NULL, 'image', '2 Bedroom Luxury Apartment primary room', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(7, 'Bedroom 5', 'bedroom-5', 3, 'pictures/bedroom-5.jpg', NULL, NULL, NULL, 'image', '2 Bedroom Luxury Apartment second room', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(8, 'Living Room 2', 'living-room-2', 2, 'pictures/living-room-2.jpg', NULL, NULL, NULL, 'image', '2 Bedroom Luxury Apartment lounge area', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(9, 'Kitchen 2', 'kitchen-2', 4, 'pictures/kitchen-2.jpg', NULL, NULL, NULL, 'image', '2 Bedroom Luxury Apartment executive kitchen', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(10, 'Dining 2', 'dining-2', 4, 'pictures/dining-2.jpg', NULL, NULL, NULL, 'image', '2 Bedroom Luxury Apartment dining set', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(11, 'Bedroom 3', 'bedroom-3', 3, 'pictures/bedroom-3.jpg', NULL, NULL, NULL, 'image', '3 Bedroom Luxury Apartment master suite', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(12, 'Bedroom 6', 'bedroom-6', 3, 'pictures/bedroom-6.jpg', NULL, NULL, NULL, 'image', '3 Bedroom Luxury Apartment guest room', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(13, 'Living Room 3', 'living-room-3', 2, 'pictures/living-room-3.jpg', NULL, NULL, NULL, 'image', '3 Bedroom Luxury Apartment spacious living room', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(14, 'Kitchen 3', 'kitchen-3', 4, 'pictures/kitchen-3.jpg', NULL, NULL, NULL, 'image', '3 Bedroom Luxury Apartment gourmet kitchen', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(15, 'Snooker Amenities', 'snooker-amenities', 2, 'pictures/snooker-amenities.jpg', NULL, NULL, NULL, 'image', '3 Bedroom Luxury Apartment snooker board and lounge', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(16, 'Bedroom 4', 'bedroom-4', 3, 'pictures/bedroom-4.jpg', NULL, NULL, NULL, 'image', '4 Bedroom Luxury Apartment penthouse terrace', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(17, 'Bedroom 8', 'bedroom-8', 3, 'pictures/bedroom-8.jpg', NULL, NULL, NULL, 'image', '4 Bedroom Luxury Apartment en-suite master room', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 1, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(18, 'Living Room 4', 'living-room-4', 2, 'pictures/living-room-4.jpg', NULL, NULL, NULL, 'image', '4 Bedroom Luxury Apartment living hall', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(19, 'Kitchen 4', 'kitchen-4', 4, 'pictures/kitchen-4.jpg', NULL, NULL, NULL, 'image', '4 Bedroom Luxury Apartment professional kitchen', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(20, 'Snooker Amenities 2', 'snooker-amenities-2', 2, 'pictures/snooker-amenities-2.jpg', NULL, NULL, NULL, 'image', '4 Bedroom Luxury Apartment snooker board and PS5 area', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(21, 'Dining Set', 'dining-set', 4, 'pictures/dining-set.jpg', NULL, NULL, NULL, 'image', '4 Bedroom Luxury Apartment dining set', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:00', '2026-06-04 11:23:01'),
(22, 'Luxury Marble Fitted Quarters', 'luxury-marble-fitted-quarters', 3, 'pictures/staircase.jpg', NULL, NULL, NULL, 'image', 'Elegant space with marble top vanity and modern styling.', 'Experience en-suite indulgence with premium marble countertops and modern layouts.', 'landscape', NULL, NULL, NULL, NULL, 1, 3, 0, 1, 1, 1, 1, 0, 0, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(23, 'Regina Coker Block Front Facade', 'regina-coker-block-front-facade', 1, 'pictures/living-room-dining.jpg', NULL, NULL, NULL, 'image', 'Exterior perimeter building design in Adeniyi Jones, Ikeja.', 'The stately entrance gate and structured facade of Kevron Suites Block A.', 'landscape', NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 1, 1, 0, 0, 1, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(24, 'Keyless Smart Locks & Active CCTV Systems', 'keyless-smart-locks-active-cctv-systems', 6, 'pictures/staircase-2.jpg', NULL, NULL, NULL, 'image', 'High-end access control smart lock keypads.', 'Sleep with peace of mind. Rented check-ins utilize digital keypad passwords audit logs.', 'portrait', NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(25, 'Peaceful Neighborhood Outlines', 'peaceful-neighborhood-outlines', 7, 'pictures/dining.jpg', NULL, NULL, NULL, 'image', 'Peaceful Adeniyi Jones streets and central proximity.', 'Located inside a leafy and highly secure corporate estate corner in Ikeja, Lagos.', 'landscape', NULL, NULL, NULL, NULL, 1, NULL, 0, 0, 1, 1, 0, 0, 0, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(26, 'Cinematic 3-Bedroom Executive Walkthrough', 'cinematic-3-bedroom-executive-walkthrough', 8, 'pictures/living-room.jpg', 'https://player.vimeo.com/video/1186235401', NULL, NULL, 'video', 'Cinematic HD walkthrough tour of en-suite living space and amenities.', 'Watch our real-time video guide highlighting premium suites, smart locks, and snooker.', NULL, NULL, NULL, NULL, NULL, 1, 3, 0, 1, 1, 0, 0, 0, 0, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(27, 'Luxury Lounge Walkthrough Tour', 'luxury-lounge-walkthrough-tour', 8, 'pictures/master-bedroom.jpg', 'https://player.vimeo.com/video/1169265971', NULL, NULL, 'video', 'Immersive video walkthrough of our luxury lounge, bedroom and smart spaces.', 'Watch our real-time video walkthrough showcasing the luxury lounge, bedrooms, and room layout.', NULL, NULL, NULL, NULL, NULL, 1, 2, 0, 1, 1, 0, 0, 0, 0, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(28, 'Interactive 360° Lounge Teleporter', 'interactive-360-lounge-teleporter', 9, 'pictures/living-room-2.jpg', '/virtual-tour', NULL, NULL, '3d_tour', 'Interactive en-suite virtual teleporter.', 'Open the fully interactive virtual tour to teleport and explore rooms straight from floor plans.', NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 1, 0, 0, 0, 0, 0, 'active', '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `media_credits`
--

CREATE TABLE `media_credits` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED NOT NULL,
  `author_name` varchar(255) NOT NULL,
  `license_type` varchar(255) NOT NULL DEFAULT 'proprietary',
  `source_url` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `media_credits`
--

INSERT INTO `media_credits` (`id`, `media_asset_id`, `author_name`, `license_type`, `source_url`, `created_at`, `updated_at`) VALUES
(1, 1, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(2, 2, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 3, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 4, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(5, 5, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(6, 6, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(7, 7, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(8, 8, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(9, 9, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(10, 10, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(11, 11, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(12, 12, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(13, 13, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(14, 14, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(15, 15, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(16, 16, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(17, 17, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(18, 18, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(19, 19, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(20, 20, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(21, 21, 'Kevron In-House Photographer', 'proprietary', NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `media_events`
--

CREATE TABLE `media_events` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `event_type` varchar(255) NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED DEFAULT NULL,
  `event_key` varchar(255) DEFAULT NULL,
  `metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`metadata`)),
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `media_variants`
--

CREATE TABLE `media_variants` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED NOT NULL,
  `file_path` varchar(255) NOT NULL,
  `variant_type` varchar(255) NOT NULL,
  `width` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL,
  `file_size` int(11) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `media_variants`
--

INSERT INTO `media_variants` (`id`, `media_asset_id`, `file_path`, `variant_type`, `width`, `height`, `file_size`, `created_at`, `updated_at`) VALUES
(1, 1, 'pictures/bedroom.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(2, 2, 'pictures/master-bedroom.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 3, 'pictures/living-room.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 4, 'pictures/kitchen.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(5, 5, 'pictures/staircase.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(6, 6, 'pictures/bedroom-2.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(7, 7, 'pictures/bedroom-5.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(8, 8, 'pictures/living-room-2.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(9, 9, 'pictures/kitchen-2.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(10, 10, 'pictures/dining-2.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(11, 11, 'pictures/bedroom-3.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(12, 12, 'pictures/bedroom-6.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(13, 13, 'pictures/living-room-3.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(14, 14, 'pictures/kitchen-3.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(15, 15, 'pictures/snooker-amenities.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(16, 16, 'pictures/bedroom-4.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(17, 17, 'pictures/bedroom-8.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(18, 18, 'pictures/living-room-4.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(19, 19, 'pictures/kitchen-4.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(20, 20, 'pictures/snooker-amenities-2.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(21, 21, 'pictures/dining-set.webp', 'webp', 1920, 1080, 125000, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `mega_menu_groups`
--

CREATE TABLE `mega_menu_groups` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `navigation_menu_item_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `mega_menu_groups`
--

INSERT INTO `mega_menu_groups` (`id`, `navigation_menu_item_id`, `title`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 2, 'Apartment Options', 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 2, 'Booking Actions', 2, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 3, 'Current Location', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 3, 'Location Guides', 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(5, 4, 'Premises & Lifestyle', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(6, 4, 'Guest Info & Reviews', 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(7, 5, 'Concierge & Enquiries', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `mega_menu_items`
--

CREATE TABLE `mega_menu_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `mega_menu_group_id` bigint(20) UNSIGNED NOT NULL,
  `label` varchar(255) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `route_name` varchar(255) DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `mega_menu_items`
--

INSERT INTO `mega_menu_items` (`id`, `mega_menu_group_id`, `label`, `url`, `route_name`, `icon`, `description`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, 'Apartments List', '/apartments', 'apartments.index', NULL, NULL, 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, '1 Bedroom Master Suite', '/apartments/1-bedroom-master-suite-ikeja', 'apartments.show', NULL, NULL, 2, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 1, '2 Bedroom Luxury Apartment', '/apartments/2-bedroom-luxury-apartment-ikeja', 'apartments.show', NULL, NULL, 3, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 1, '3 Bedroom Luxury Apartment', '/apartments/3-bedroom-luxury-apartment-ikeja', 'apartments.show', NULL, NULL, 4, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 1, '4 Bedroom Luxury Apartment', '/apartments/4-bedroom-luxury-apartment-ikeja', 'apartments.show', NULL, NULL, 5, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(6, 1, 'Compare Apartments', '/compare-apartments', 'apartments.compare_page', NULL, NULL, 6, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(7, 2, 'Book Now', '/booking', 'booking.index', NULL, NULL, 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(8, 2, 'Check Availability', '/booking', 'booking.index', NULL, NULL, 2, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(9, 2, 'Find My Booking', '/find-my-booking', 'booking.find', NULL, NULL, 3, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(10, 2, 'Guest Dashboard', '/guest/dashboard', 'guest.dashboard', NULL, NULL, 4, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(11, 3, 'All Locations', '/locations', 'locations.index', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(12, 3, 'Ikeja, Adeniyi Jones, Lagos', '/locations/ikeja-adeniyi-jones-lagos', 'locations.ikeja', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(13, 4, 'Location & Neighbourhood Guide', '/location-neighbourhood-guide-ikeja', 'neighbourhood', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(14, 4, 'Directions & Contact', '/contact', 'contact', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(15, 5, '3D Virtual Tour', '/virtual-tour', 'virtual-tour', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(16, 5, 'Media Gallery', '/gallery', 'gallery', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(17, 5, 'Amenities & Facilities', '/amenities', 'amenities', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(18, 5, 'Security & Smart Living', '/security-smart-living', 'security-smart-living', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(19, 5, 'Sustainability Stays', '/sustainability', 'sustainability', NULL, NULL, 5, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(20, 6, 'About Kevron', '/about', 'about', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(21, 6, 'Travel Blog', '/blog', 'blog.index', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(22, 6, 'Guest Reviews', '/reviews', 'reviews.index', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(23, 6, 'FAQs Help Desk', '/faqs', 'faq', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(24, 7, 'Guest Services Overview', '/guest-services', 'guest-services', NULL, NULL, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(25, 7, 'Airport Pickup & Car Rental', '/airport-pickup-car-rental', 'airport-pickup-car-rental', NULL, NULL, 2, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(26, 7, 'Corporate Stays B2B', '/corporate-stays', 'corporate-stays', NULL, NULL, 3, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(27, 7, 'Extended Long Stays', '/long-stay-serviced-apartments-ikeja', 'long-stay', NULL, NULL, 4, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(28, 7, 'Special Offers & Deals', '/offers', 'offers', NULL, NULL, 5, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `mega_menu_preview_cards`
--

CREATE TABLE `mega_menu_preview_cards` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `mega_menu_group_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `image_path` varchar(255) DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `price_label` varchar(255) DEFAULT NULL,
  `cta_label` varchar(255) DEFAULT NULL,
  `cta_url` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `mega_menu_preview_cards`
--

INSERT INTO `mega_menu_preview_cards` (`id`, `mega_menu_group_id`, `title`, `subtitle`, `description`, `image_path`, `icon`, `price_label`, `cta_label`, `cta_url`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, '2 Bedroom Luxury', 'From ₦200,000 / night', 'Best for executive staycations and weekend getaways in Ikeja.', 'pictures/bed.jpg', NULL, NULL, 'View Suite', '/apartments/2-bedroom-luxury-apartment-ikeja', 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 3, 'Adeniyi Jones, Ikeja', 'Exclusive Neighborhood', 'Unmatched accessibility, upscale safety, and serene environment in Lagos.', 'pictures/staircase.jpg', NULL, NULL, 'Get Directions', '/contact', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(3, 5, '3D Virtual Tour', 'Immersive 3D Walkthrough', 'Explore our executive snooker lounge, suites, and elite amenities virtually.', 'pictures/snooker-amenities.jpg', NULL, NULL, 'Start Tour', '/virtual-tour', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 7, 'Airport Pickup Shuttle', 'Seamless Transit', 'Book our safe, reliable, and premium private airport shuttle directly to your suite.', 'pictures/kitchen.jpg', NULL, NULL, 'Request Pickup', '/airport-pickup-car-rental', 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `menu_icons`
--

CREATE TABLE `menu_icons` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `svg_path` text NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `menu_icons`
--

INSERT INTO `menu_icons` (`id`, `name`, `svg_path`, `created_at`, `updated_at`) VALUES
(1, 'home', 'M2.25 12 8.954 5.296a2.25 2.25 0 0 1 3.092 0L18.75 12m-10.5 6L8.954 12m-5.4 6H18.75m-16.5 0V12m16.5 6V12', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'building', 'M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 16.5h1.5M13.5 16.5H15', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 'calendar', 'M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 'map-pin', 'M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 0c0 5.25-9 11.25-9 11.25S3 15.75 3 10.5a9 9 0 1 1 18 0Z', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `migrations`
--

CREATE TABLE `migrations` (
  `id` int(10) UNSIGNED NOT NULL,
  `migration` varchar(255) NOT NULL,
  `batch` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `migrations`
--

INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES
(1, '0001_01_01_000000_create_users_table', 1),
(2, '0001_01_01_000001_create_cache_table', 1),
(3, '0001_01_01_000002_create_jobs_table', 1),
(4, '2026_05_31_000000_create_kevron_tables', 1),
(5, '2026_05_31_000001_create_audit_and_maintenance_tables', 1),
(6, '2026_05_31_000002_create_homepage_tables', 1),
(7, '2026_05_31_142957_create_apartments_listing_tables', 1),
(8, '2026_05_31_150000_create_comparison_field_values_and_recommendation_requests_tables', 1),
(9, '2026_05_31_160000_create_booking_support_tables', 1),
(10, '2026_05_31_190000_expand_virtual_tour_tables', 1),
(11, '2026_05_31_200000_create_gallery_and_media_system_tables', 1),
(12, '2026_05_31_210000_create_amenities_system_tables', 1),
(13, '2026_05_31_220000_create_guest_services_tables', 1),
(14, '2026_05_31_230000_create_transport_system_tables', 1),
(15, '2026_05_31_235000_create_corporate_stays_tables', 1),
(16, '2026_06_01_000000_create_long_stays_tables', 1),
(17, '2026_06_01_110000_create_offers_and_packages_tables', 1),
(18, '2026_06_01_115217_create_permission_tables', 1),
(19, '2026_06_01_120000_create_neighbourhood_guide_tables', 1),
(20, '2026_06_01_130000_create_security_smart_living_tables', 1),
(21, '2026_06_01_140000_create_sustainability_tables', 1),
(22, '2026_06_01_150000_create_reviews_system_tables', 1),
(23, '2026_06_01_160000_add_columns_to_faq_tables', 1),
(24, '2026_06_01_161000_create_faq_system_tables', 1),
(25, '2026_06_01_170000_create_blog_system_additions', 1),
(26, '2026_06_01_180000_create_about_page_tables', 1),
(27, '2026_06_01_190000_create_contact_page_tables', 1),
(28, '2026_06_01_200000_create_guest_dashboard_tables', 1),
(29, '2026_06_01_210000_create_channel_and_pms_integration_tables', 1),
(30, '2026_06_01_220000_create_super_admin_multi_location_tables', 1),
(31, '2026_06_01_230000_create_legal_governance_tables', 1),
(32, '2026_06_01_240000_create_booking_policy_tables', 1),
(33, '2026_06_01_250000_create_cancellation_refund_policy_tables', 1),
(34, '2026_06_01_260000_create_privacy_policy_tables', 1),
(35, '2026_06_01_270000_create_cookie_policy_tables', 1),
(36, '2026_06_01_280000_create_house_rules_tables', 1),
(37, '2026_06_01_290000_create_payment_policy_tables', 1),
(38, '2026_06_01_300000_create_damage_deposit_tables', 1),
(39, '2026_06_01_310000_create_guest_identification_tables', 1),
(40, '2026_06_01_320000_create_safety_emergency_tables', 1),
(41, '2026_06_02_000000_create_accessibility_tables', 1),
(42, '2026_06_02_110000_create_navigation_redesign_tables', 1),
(43, '2026_06_02_120000_create_theme_switching_tables', 1),
(44, '2026_06_02_152114_add_smart_lock_pin_to_digital_checkins_table', 1),
(45, '2026_06_03_080000_create_payment_and_mail_systems_tables', 1);

-- --------------------------------------------------------

--
-- Table structure for table `missing_item_reports`
--

CREATE TABLE `missing_item_reports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `inventory_item_id` bigint(20) UNSIGNED NOT NULL,
  `quantity` int(11) NOT NULL DEFAULT 1,
  `estimated_cost` decimal(12,2) NOT NULL DEFAULT 0.00,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `reported_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `model_has_permissions`
--

CREATE TABLE `model_has_permissions` (
  `permission_id` bigint(20) UNSIGNED NOT NULL,
  `model_type` varchar(255) NOT NULL,
  `model_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `model_has_roles`
--

CREATE TABLE `model_has_roles` (
  `role_id` bigint(20) UNSIGNED NOT NULL,
  `model_type` varchar(255) NOT NULL,
  `model_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `model_has_roles`
--

INSERT INTO `model_has_roles` (`role_id`, `model_type`, `model_id`) VALUES
(1, 'App\\Models\\User', 1),
(2, 'App\\Models\\User', 3),
(3, 'App\\Models\\User', 4),
(4, 'App\\Models\\User', 5),
(5, 'App\\Models\\User', 6),
(6, 'App\\Models\\User', 7),
(7, 'App\\Models\\User', 8),
(8, 'App\\Models\\User', 9);

-- --------------------------------------------------------

--
-- Table structure for table `motion_accessibility_settings`
--

CREATE TABLE `motion_accessibility_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `page_name` varchar(255) NOT NULL,
  `has_GSAP_fallback` tinyint(1) NOT NULL DEFAULT 1,
  `has_ThreeJS_fallback` tinyint(1) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `navigation_badges`
--

CREATE TABLE `navigation_badges` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `text` varchar(255) NOT NULL,
  `colour` varchar(255) NOT NULL DEFAULT 'red',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `navigation_menus`
--

CREATE TABLE `navigation_menus` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `navigation_menus`
--

INSERT INTO `navigation_menus` (`id`, `name`, `slug`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Header Menu', 'header', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'Footer Menu', 'footer', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `navigation_menu_items`
--

CREATE TABLE `navigation_menu_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `navigation_menu_id` bigint(20) UNSIGNED NOT NULL,
  `parent_id` bigint(20) UNSIGNED DEFAULT NULL,
  `label` varchar(255) NOT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `route_name` varchar(255) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `preview_image` varchar(255) DEFAULT NULL,
  `badge_text` varchar(255) DEFAULT NULL,
  `badge_colour` varchar(255) DEFAULT NULL,
  `target` varchar(255) NOT NULL DEFAULT '_self',
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `show_on_desktop` tinyint(1) NOT NULL DEFAULT 1,
  `show_on_mobile` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `navigation_menu_items`
--

INSERT INTO `navigation_menu_items` (`id`, `navigation_menu_id`, `parent_id`, `label`, `slug`, `route_name`, `url`, `description`, `icon`, `preview_image`, `badge_text`, `badge_colour`, `target`, `sort_order`, `is_active`, `show_on_desktop`, `show_on_mobile`, `created_at`, `updated_at`) VALUES
(1, 1, NULL, 'Home', NULL, 'home', '/', NULL, NULL, NULL, NULL, NULL, '_self', 1, 1, 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, NULL, 'Apartments', 'apartments', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '_self', 2, 1, 1, 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 1, NULL, 'Locations', 'locations', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '_self', 3, 1, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 1, NULL, 'Experiences', 'experiences', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '_self', 4, 1, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(5, 1, NULL, 'Guest Services', 'guest-services', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '_self', 5, 1, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(6, 1, NULL, 'Contact', NULL, 'contact', '/contact', NULL, NULL, NULL, NULL, NULL, '_self', 6, 1, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `neighbourhood_guides`
--

CREATE TABLE `neighbourhood_guides` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `subtitle` text DEFAULT NULL,
  `description` text DEFAULT NULL,
  `address` text DEFAULT NULL,
  `latitude` decimal(10,8) DEFAULT NULL,
  `longitude` decimal(11,8) DEFAULT NULL,
  `starting_price` decimal(12,2) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `neighbourhood_guides`
--

INSERT INTO `neighbourhood_guides` (`id`, `title`, `slug`, `subtitle`, `description`, `address`, `latitude`, `longitude`, `starting_price`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Location and Neighbourhood Guide to Adeniyi Jones, Ikeja', 'location-neighbourhood-guide-ikeja', 'Discover why Kevron Suites and Apartments in Adeniyi Jones, Ikeja is a convenient choice for airport travellers, business guests, families, consultants, project teams and visitors who want luxury serviced apartments close to key Lagos amenities.', 'Adeniyi Jones, Ikeja offers a practical balance of residential comfort, airport access, shopping, dining and business convenience. Kevron Suites and Apartments is positioned for guests who want a luxury serviced-apartment stay within reach of Lagos airports, Ikeja City Mall, eateries, event centres and essential local services.', '7B Regina Coker Street, Adeniyi Jones, Ikeja / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria.', 6.60123400, 3.35123400, 150000.00, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `neighbourhood_guide_sections`
--

CREATE TABLE `neighbourhood_guide_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `neighbourhood_guide_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `subtitle` text DEFAULT NULL,
  `content` text DEFAULT NULL,
  `media_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `neighbourhood_guide_sections`
--

INSERT INTO `neighbourhood_guide_sections` (`id`, `neighbourhood_guide_id`, `section_key`, `title`, `subtitle`, `content`, `media_id`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 1, 'hero', 'Location and Neighbourhood Guide to Adeniyi Jones, Ikeja', 'Discover why Kevron Suites and Apartments in Adeniyi Jones, Ikeja is a convenient choice for airport travellers, business guests, families, consultants, project teams and visitors who want luxury serviced apartments close to key Lagos amenities.', NULL, NULL, 1, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 1, 'intro', 'The Adeniyi Jones Advantage', 'Perfect balance of access and tranquility', 'Adeniyi Jones, Ikeja offers a practical balance of residential comfort, airport access, shopping, dining and business convenience. Kevron Suites and Apartments is positioned for guests who want a luxury serviced-apartment stay within reach of Lagos airports, Ikeja City Mall, eateries, event centres and essential local services.', NULL, 1, 2, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 1, 'address', 'Prime Address', 'Heart of mainland Lagos', 'Kevron Suites and Apartments — Adeniyi Jones, Ikeja. 7B Regina Coker Street, Adeniyi Jones, Ikeja / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria. Available apartments: 1, 2, 3 and 4 bedroom options.', NULL, 1, 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 1, 'airport_access', 'Rapid Airport Transit', 'Less time in traffic, more time for rest', 'Our location provides rapid access to both local and international airport terminals, making it the premier choice for busy executives and transit guests. Airport pickup and car rental are available on request.', NULL, 1, 4, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(5, 1, 'shopping', 'Shopping and Lifestyle Convenience', 'Shoprite, lifestyle stores, and groceries', 'Located near the iconic Ikeja City Mall and Shoprite, guests can easily access high-end shopping, groceries, pharmacies, cinemas, and essential retail lifestyle stores within minutes.', NULL, 1, 5, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(6, 1, 'dining', 'Vibrant Dining and Eateries', 'Savor local and continental cuisines', 'Adeniyi Jones is famous for its collection of fine dining restaurants, quick-service eateries, and cozy cafes, ensuring that guests have limitless choices for dining out or ordering in.', NULL, 1, 6, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(7, 1, 'events', 'Access to Event Centres', 'Stay close to your celebrations and conferences', 'Perfect for wedding guests, event planners, and conference delegates, our apartments offer close proximity to major event hubs and banquet halls across Ikeja.', NULL, 1, 7, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(8, 1, 'security', 'Smart Lock Security & Police Proximity', 'Peace of mind guaranteed', 'Security-controlled access, smart locks, CCTV coverage and visitor management support a more controlled guest environment. The property is located approximately 3 minutes to Memabod Police Station, subject to traffic.', NULL, 1, 8, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(9, 1, 'business_travel', 'Business Travel & Corporate Suited', 'Designed for project teams and executives', 'Enjoy uninterrupted corporate stays with 24-hour power, high-speed Wi-Fi, fully equipped kitchens, laundry facilities, dedicated workspaces, and private balconies suited for consultants and corporate project teams.', NULL, 1, 9, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(10, 1, 'transport', 'Premium Transport Support', 'Hassle-free movement around Lagos', 'Airport pickup and rented car support with driver are available on request to facilitate hassle-free movements across Lagos. Instant transport support is accessible via our dedicated WhatsApp channel.', NULL, 1, 10, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `newsletter_subscribers`
--

CREATE TABLE `newsletter_subscribers` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `email` varchar(255) NOT NULL,
  `active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `noise_rules`
--

CREATE TABLE `noise_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `quiet_hours_start` varchar(255) NOT NULL DEFAULT '22:00',
  `quiet_hours_end` varchar(255) NOT NULL DEFAULT '07:00',
  `max_decibels_day` int(11) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `noise_rules`
--

INSERT INTO `noise_rules` (`id`, `quiet_hours_start`, `quiet_hours_end`, `max_decibels_day`, `is_active`, `created_at`, `updated_at`) VALUES
(1, '22:00', '07:00', 60, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `offers`
--

CREATE TABLE `offers` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `offer_type_id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `short_description` text NOT NULL,
  `description` longtext NOT NULL,
  `valid_from` timestamp NULL DEFAULT NULL,
  `valid_until` timestamp NULL DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `is_rate_on_request` tinyint(1) NOT NULL DEFAULT 1,
  `discount_type` varchar(255) NOT NULL DEFAULT 'none',
  `discount_value` decimal(12,2) NOT NULL DEFAULT 0.00,
  `minimum_stay_nights` int(11) NOT NULL DEFAULT 1,
  `maximum_stay_nights` int(11) DEFAULT NULL,
  `promo_code_id` bigint(20) UNSIGNED DEFAULT NULL,
  `terms_summary` text DEFAULT NULL,
  `cta_label` varchar(255) NOT NULL DEFAULT 'Request Offer',
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `image_path` varchar(255) DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `offers`
--

INSERT INTO `offers` (`id`, `offer_type_id`, `title`, `slug`, `short_description`, `description`, `valid_from`, `valid_until`, `is_active`, `is_featured`, `is_rate_on_request`, `discount_type`, `discount_value`, `minimum_stay_nights`, `maximum_stay_nights`, `promo_code_id`, `terms_summary`, `cta_label`, `sort_order`, `image_path`, `status`, `created_at`, `updated_at`) VALUES
(1, 1, 'Weekend Escape Staycation', 'weekend-escape-staycation', 'Recharge with our exclusive weekend staycation package in Adeniyi Jones, Ikeja.', 'Treat yourself to a luxurious weekend escape at Kevron Suites and Apartments. Indulge in comfort with our premium en-suite layout, unlimited high-speed broadband Wi-Fi, snooker room access, and guaranteed 24-hour power. Perfect for couples or solo travelers seeking a peaceful retreat in the heart of Lagos.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 1, 0, 'percentage', 10.00, 2, 3, 2, 'Applicable strictly to check-ins on Friday or Saturday. Minimum stay of 2 nights is required. Subject to suite availability.', 'Book Weekend Stay', 1, 'pictures/living-room.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 2, 'Extended Stay Monthly Discount', 'extended-stay-monthly-discount', 'Save more when you stay longer. Enjoy weekly and monthly serviced rate options.', 'Relocating to Lagos or managing a long-term corporate project? Our extended stay options provide a flexible, home-style alternative to standard hotels. Packages include in-suite automatic washing machines, fully equipped gas kitchen hubs, dedicated workspaces, and smart security guarantees.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 1, 1, 'rate_on_request', 0.00, 7, NULL, NULL, 'Requires a minimum booking of 7 continuous nights. Monthly payment terms can be negotiated subject to corporate background check approvals.', 'Request Long-Stay Quote', 2, 'pictures/master-bedroom.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 3, 'Corporate Business Package', 'corporate-business-package', 'Uncompromising hospitality for project teams, business consultants, and executives.', 'Keep your corporate teams aligned with our specialized B2B housing packages. We offer direct corporate invoice options, dedicated administrative support, secure file-roster uploading, smart lock access control, and seamless MMIA airport transit pickup add-ons.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 0, 1, 'custom_quote', 0.00, 3, NULL, NULL, 'Valid strictly for verified business organizations. Group lists and coordinate credentials must be uploaded during submission.', 'Request Corporate Rate', 3, 'pictures/bedroom-2.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 4, 'Stay & Airport Pickup Package', 'stay-airport-pickup-package', 'Book your luxury apartment and enjoy seamless, secure airport pickup transfers.', 'Arriving at Lagos airports? Land stress-free. Our Airport Pickup package coordinates flight timing tracking and provides secure transfers from MM1, MM2, or MMIA terminals direct to our luxury block at Adeniyi Jones, Ikeja in a professional air-conditioned sedan.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 0, 1, 'free_add_on', 0.00, 5, NULL, NULL, 'Requires minimum booking of 5 nights. Airport pickup must be requested at least 24 hours prior to arrival with flight number verified.', 'Request Pickup Package', 4, 'pictures/staircase.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 5, 'Luxury Family Holiday Package', 'luxury-family-holiday-package', 'Spacious en-suite multi-bedroom layouts perfect for relaxing family stays in Ikeja.', 'Create beautiful memories with your loved ones. Our 2, 3, and 4 Bedroom Luxury Apartments provide expansive living and dining spaces, fully equipped gourmet kitchens, in-suite washing machines/dryers, PS5, snooker boards, and estate perimeter safety locks.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 0, 1, 'custom_quote', 0.00, 3, NULL, NULL, 'Family layouts capacity rules strictly apply. Max occupancy limits: 2-Bed (4 adults), 3-Bed (6 adults), 4-Bed (8 adults).', 'Enquire for Family Stay', 5, 'pictures/bedroom-3.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 6, 'Exclusive Group Housing Deal', 'exclusive-group-housing-deal', 'Coordinate group stays inside a single secure residential block with dedicated support.', 'Housing a large crew or project group? Our 3 & 4 Bedroom Luxury Apartments can be configured to keep your collaborative team together under a single block. Standard packages offer 24/7 power, broadband Wi-Fi, and custom check-in credentials.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 0, 1, 'custom_quote', 0.00, 4, NULL, NULL, 'Requires booking of multiple rooms or multi-bedroom layouts. Custom corporate lists must be verified.', 'Submit Group Stay Request', 6, 'pictures/bedroom-4.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 7, 'Festive Holiday Celebration Deal', 'festive-holiday-celebration-deal', 'Celebrate Christmas, Easter, and New Year holidays in ultimate serviced luxury.', 'Make your holiday seasons magic. Kevron Suites provides dynamic festive celebration stays with 24-hour power, PlayStation 5 consoles, snooker, decorated seating terraces, and strict visitor control access for a safe, secure retreat.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 0, 1, 'custom_quote', 0.00, 3, NULL, NULL, 'Valid strictly during designated seasonal calendar blocks. Blackout dates and festive markups apply.', 'View Festive Offers', 7, 'pictures/bedroom.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(8, 8, 'Repeat Guest Loyalty Reward', 'repeat-guest-loyalty-reward', 'Enjoy an exclusive direct loyalty discount as a returning guest at Kevron Suites.', 'Welcome home! We value our returning corporate executives and families. Enjoy custom direct stay discounts, complimentary early check-in or late check-out priority (subject to slot availability), and dedicated VIP concierge allocations.', '2026-06-03 11:23:02', '2027-06-04 11:23:02', 1, 0, 0, 'percentage', 12.00, 1, NULL, NULL, 'A valid previous booking reference (e.g. KEV-B-XXXX) must be entered to qualify. Subject to manual audit verification by our booking coordinator.', 'Request Repeat Guest Offer', 8, 'pictures/bedroom-2.jpg', 'active', '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `offer_apartment_type`
--

CREATE TABLE `offer_apartment_type` (
  `offer_id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `offer_apartment_type`
--

INSERT INTO `offer_apartment_type` (`offer_id`, `apartment_type_id`) VALUES
(1, 1),
(2, 2),
(3, 3),
(4, 2),
(5, 3),
(6, 4),
(7, 2),
(8, 1);

-- --------------------------------------------------------

--
-- Table structure for table `offer_blackout_dates`
--

CREATE TABLE `offer_blackout_dates` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `offer_id` bigint(20) UNSIGNED NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `notes` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `offer_blackout_dates`
--

INSERT INTO `offer_blackout_dates` (`id`, `offer_id`, `start_date`, `end_date`, `notes`, `created_at`, `updated_at`) VALUES
(1, 7, '2026-12-24', '2026-12-26', 'Christmas Peak Blackout Period. Regular rates and premium bookings apply.', '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `offer_enquiries`
--

CREATE TABLE `offer_enquiries` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `offer_id` bigint(20) UNSIGNED NOT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `preferred_apartment_type` varchar(255) NOT NULL,
  `check_in` date NOT NULL,
  `check_out` date NOT NULL,
  `number_of_guests` int(11) NOT NULL DEFAULT 1,
  `purpose_of_stay` varchar(255) NOT NULL,
  `previous_booking_reference` varchar(255) DEFAULT NULL,
  `airport_pickup_required` varchar(255) NOT NULL DEFAULT 'no',
  `special_requirements` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `admin_notes` text DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `offer_location`
--

CREATE TABLE `offer_location` (
  `offer_id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `offer_location`
--

INSERT INTO `offer_location` (`offer_id`, `location_id`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 1),
(5, 1),
(6, 1),
(7, 1),
(8, 1);

-- --------------------------------------------------------

--
-- Table structure for table `offer_types`
--

CREATE TABLE `offer_types` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `offer_types`
--

INSERT INTO `offer_types` (`id`, `name`, `slug`, `icon`, `description`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Weekend Stay', 'weekend-stay', 'calendar', 'Weekend staycations and relaxation packages.', 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'Long Stay', 'long-stay', 'home', 'Weekly and monthly discount stay plans.', 2, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'Corporate Stay', 'corporate-stay', 'briefcase', 'Tailored business packages for companies and executive staff.', 3, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(4, 'Airport Pickup Package', 'airport-pickup-package', 'plane', 'Stay bookings inclusive of seamless terminal pickups.', 4, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 'Family Stay', 'family-stay', 'users', 'Multi-bedroom family holiday packages.', 5, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 'Group Stay', 'group-stay', 'user-group', 'Large suites configurations for project groups or events.', 6, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 'Festive Season', 'festive-season', 'sparkles', 'Christmas, New Year, Easter, and public holiday deals.', 7, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(8, 'Repeat Guest', 'repeat-guest', 'gift', 'Exclusive loyalty discounts for returning guests.', 8, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `password_reset_tokens`
--

CREATE TABLE `password_reset_tokens` (
  `email` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payments`
--

CREATE TABLE `payments` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `gateway` varchar(255) DEFAULT NULL,
  `transaction_reference` varchar(255) NOT NULL,
  `tx_ref` varchar(255) DEFAULT NULL,
  `amount` decimal(12,2) NOT NULL,
  `payment_method` varchar(255) NOT NULL,
  `payment_channel` varchar(255) DEFAULT NULL,
  `payment_status` varchar(255) NOT NULL DEFAULT 'pending',
  `paid_at` timestamp NULL DEFAULT NULL,
  `verified_at` timestamp NULL DEFAULT NULL,
  `failed_at` timestamp NULL DEFAULT NULL,
  `failure_reason` text DEFAULT NULL,
  `metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`metadata`)),
  `receipt_path` varchar(255) DEFAULT NULL,
  `flutterwave_transaction_id` varchar(255) DEFAULT NULL,
  `flutterwave_flw_ref` varchar(255) DEFAULT NULL,
  `flutterwave_payment_type` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `payments`
--

INSERT INTO `payments` (`id`, `booking_id`, `gateway`, `transaction_reference`, `tx_ref`, `amount`, `payment_method`, `payment_channel`, `payment_status`, `paid_at`, `verified_at`, `failed_at`, `failure_reason`, `metadata`, `receipt_path`, `flutterwave_transaction_id`, `flutterwave_flw_ref`, `flutterwave_payment_type`, `created_at`, `updated_at`) VALUES
(1, 1, NULL, 'TXN-PAST-1122', NULL, 1150000.00, 'online_paystack', NULL, 'completed', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 2, NULL, 'TXN-ACTV-3344', NULL, 1100000.00, 'online_flutterwave', NULL, 'completed', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `payment_attempts`
--

CREATE TABLE `payment_attempts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `payment_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `tx_ref` varchar(255) NOT NULL,
  `amount` decimal(12,2) NOT NULL,
  `currency` varchar(255) NOT NULL DEFAULT 'NGN',
  `status` varchar(255) NOT NULL,
  `response_payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`response_payload`)),
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payment_disputes`
--

CREATE TABLE `payment_disputes` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `payment_id` bigint(20) UNSIGNED DEFAULT NULL,
  `dispute_type` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `resolved_by` varchar(255) DEFAULT NULL,
  `resolved_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payment_gateways`
--

CREATE TABLE `payment_gateways` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `provider` varchar(255) NOT NULL,
  `public_key` varchar(255) DEFAULT NULL,
  `secret_key_encrypted` text DEFAULT NULL,
  `webhook_secret_encrypted` text DEFAULT NULL,
  `mode` varchar(255) NOT NULL DEFAULT 'test',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `is_tested` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `payment_gateways`
--

INSERT INTO `payment_gateways` (`id`, `name`, `provider`, `public_key`, `secret_key_encrypted`, `webhook_secret_encrypted`, `mode`, `is_active`, `is_tested`, `created_at`, `updated_at`) VALUES
(1, 'Paystack Live Gateway (Legacy)', 'paystack', 'pk_test_a1b2c3d4e5f6g7h8i9j0', 'eyJpdiI6IlNiUk1jSkFOZGZwalVOaTRUOUxkVHc9PSIsInZhbHVlIjoiQkVWcmNscVRsVXlKTjJVbDg3d0R1dng0R1VuNHhPWmJjc1NqeFJCRHNvQT0iLCJtYWMiOiIxNjI0YzQ0ZTVlYTg2ODhjMTAzOWVjNzlmZDdkOGI3YzhjMWY4ZWYyZDFjYWVjYTFmMjM4YTQyOGYwNjYxZWM0IiwidGFnIjoiIn0=', 'eyJpdiI6IkNqQkgwaXRaMzZFTHFxOFZZcFZDcGc9PSIsInZhbHVlIjoiY2VlTVBwdU93T2ptN3BiNnNSRkJYWmdwRzVWNExJRXlGQnI2UjZRY3hPdz0iLCJtYWMiOiIyYmQxMmVlYjI4YjY1OTE5OTU0MDFjOTg3M2M0MGVjYzA2MjRlODMyMWYxYzRiYzQwZjBhNjlhMzg3NjhkYzc1IiwidGFnIjoiIn0=', 'test', 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Flutterwave Secure Gateway', 'flutterwave', 'FLWPUBK-60668d955523db0f5c651a2cfbde02d6-X', 'eyJpdiI6IkFoQXlSVkdEYjJRUGJGbStlTVBiZUE9PSIsInZhbHVlIjoiODBDN2tRV2JXbkQ5TmpaZlFtM1JCZS9XN0tmSW90SzJkTDlvVEtlTmMwZmZHLzE2YXJNdU1UM1VhTlFMN28zQjc2UDFneWhWTTZFell3YllBV2FubFE9PSIsIm1hYyI6IjcyZDEyMThmMGI4NDEwZDJlODc1N2U1YjMwNTJjYjQ1Yzc0OGE1MTRiMzg5Mjk2NjRjY2ZkNjM4ZDUzNmIxODMiLCJ0YWciOiIifQ==', 'eyJpdiI6IllIdGNuQUorMG1TcHlyWG5xWVF2enc9PSIsInZhbHVlIjoiMldDbjJneDM0U1c4Zno1aXFmd2daLzVpNGNoMTFjSk1ERDhsL1NMNGJKNW9PcHcvK25xb3hURTlObWVrNGtHZCIsIm1hYyI6Ijk0MTNjMTJmOGM4YmJhODQ2MWVhMTFiMjBkOGRmZTQ1NGZiY2YwY2Y4ZWE1NTdlOTVkNGFhODY4YjUwZjI2MGYiLCJ0YWciOiIifQ==', 'live', 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `payment_gateway_transactions`
--

CREATE TABLE `payment_gateway_transactions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `payment_gateway_id` bigint(20) UNSIGNED NOT NULL,
  `gateway_reference` varchar(255) NOT NULL,
  `amount` decimal(12,2) NOT NULL,
  `currency` varchar(255) NOT NULL DEFAULT 'NGN',
  `status` varchar(255) NOT NULL,
  `response_payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`response_payload`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payment_methods`
--

CREATE TABLE `payment_methods` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `method_type` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_verification` tinyint(1) NOT NULL DEFAULT 1,
  `public_display` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `payment_methods`
--

INSERT INTO `payment_methods` (`id`, `name`, `slug`, `description`, `method_type`, `is_active`, `requires_verification`, `public_display`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Paystack Online Card/Transfer (Legacy)', 'paystack', 'Pay instantly with credit cards, bank apps, or QR codes using Paystack secure checkout.', 'online', 0, 0, 0, 99, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 'Flutterwave Online Card/Transfer', 'online_flutterwave', 'Pay instantly with credit cards, bank transfer, or USSD using Flutterwave secure checkout.', 'online', 1, 0, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 'Direct Bank Transfer', 'bank_transfer', 'Transfer money to our corporate account and upload your receipt screenshot.', 'bank_transfer', 1, 1, 1, 2, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 'Corporate Billing', 'corporate_billing', 'Pre-approved corporate invoicing options for registered company delegates.', 'corporate', 1, 1, 0, 3, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `payment_policies`
--

CREATE TABLE `payment_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `payment_policies`
--

INSERT INTO `payment_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Payment Policy', 'payment-policy', 'Learn how payments, deposits, balances, bank transfers, proof-of-payment uploads, online payment gateways, payment verification, invoices, receipts, security deposits, and B2B billings are handled at Kevron Suites and Apartments, Adeniyi Jones, Ikeja.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Legal & Finance Directorate', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `payment_policy_acceptances`
--

CREATE TABLE `payment_policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `payment_policy_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payment_policy_sections`
--

CREATE TABLE `payment_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `payment_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_finance_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `payment_policy_sections`
--

INSERT INTO `payment_policy_sections` (`id`, `payment_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_finance_review`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'scope_of_policy', '1. Scope and Application', '<p>This Payment Policy applies to all direct website bookings, WhatsApp-assisted reservations, corporate B2B requests, and extended stay agreements processed by Kevron Suites and Apartments. It covers all transaction classes including base lodging fees, deposit allocations, bank transfer uploads, gateway references, security deposits, and dispute records.</p>', 1, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'accepted_methods', '2. Accepted Payment Methods', '<p>We support various approved payment methods to ensure a flexible booking experience:\n                <ul>\n                    <li><strong>Online Payments:</strong> Major credit/debit card transactions processed through our secure payment gateway providers (e.g., Paystack).</li>\n                    <li><strong>Bank Transfers:</strong> Direct bank-to-bank transits processed to our designated corporate bank accounts.</li>\n                    <li><strong>Corporate Billing:</strong> Company-backed invoicing options for pre-authorized corporate coordinators.</li>\n                    <li><strong>Manual Invoices:</strong> Payment link options issued by our finance department on request.</li>\n                </ul>\n                To prevent financial fraud, cash payments are strictly subject to management approval.</p>', 2, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'apartment_rates', '3. Current Base Nightly Rates', '<p>Our standard base nightly rates are dynamically calculated based on en-suite capacity and configuration:\n                <ul>\n                    <li>1 Bedroom Master Suite — ₦150,000.00 / night</li>\n                    <li>2 Bedroom Luxury Apartment — ₦200,000.00 / night</li>\n                    <li>3 Bedroom Luxury Apartment — ₦250,000.00 / night</li>\n                    <li>4 Bedroom Luxury Apartment — ₦300,000.00 / night</li>\n                </ul>\n                The total payable amount at checkout may vary based on length of stay, seasonal adjustments, corporate agreement terms, VAT, and requested en-suite add-on services.</p>', 3, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 1, 'currency_policy', '4. Payment Currency', '<p>All transactions are denominated in Nigerian Naira (₦ / NGN). Multi-currency card payments are accepted and converted at standard bank rates by our gateway processor. Invoices and official receipts reflect NGN as the primary currency.</p>', 4, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 1, 'deposit_requirements', '5. Deposit and Balance Payment Requirements', '<p>To guarantee a room reservation, an upfront deposit may be required depending on stay duration, duration of hold, or seasonal blocks. Staged balance payments must be fully settled prior to check-in or according to your pre-authorized corporate booking terms. Unpaid pending reservations may automatically release after a designated period.</p>', 5, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 1, 'bank_transfer_verification', '6. Bank Transfer and Proof of Payment Upload', '<p>For bank transfers, guests must pay exclusively into our official corporate bank accounts. Guests must include their booking reference in the payment description and upload their proof of transfer receipt through the secure uploader form on this page. Transfer payments are marked as \"Under Review\" and are not confirmed until verified by our finance department.</p>', 6, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 1, 'gateway_payments', '7. Online Payment Gateways & Card Privacy', '<p>Online card payments must be completed through our integrated payment gateways. Kevron Suites and Apartments does not collect or store full credit/debit card details on local servers. All payment gateway transaction references are logged for verification and tracking. Failed or abandoned gateway sessions do not confirm inventory blocks.</p>', 7, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 1, 'invoice_receipt_policy', '8. Invoices and Receipts', '<p>Guests receive an official electronic invoice outlining room details, taxes, and stay dates upon submitting a booking. Once payment is verified, a unique receipt is generated. PDFs are accessible and downloadable directly from the guest dashboard portal.</p>', 8, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 1, 'security_deposit_rules', '9. Security Deposit Payments', '<p>A standard refundable security deposit is required at check-in (₦100,000.00 standard). This deposit is handled separately from booking fees and covers en-suite damages, missing items, or policy breaches. Release or deductions occur within 24 to 48 hours post-checkout inspection, in accordance with the Damage/Deposit Policy.</p>', 9, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 1, 'addon_payments', '10. Add-On Service and Transit Payments', '<p>Airport pickup, executive car rentals, extra cleaning, and other custom add-on services are billed as itemized additions. Payments for add-ons must be settled and confirmed prior to service dispatch. Cancellations of add-ons follow the notice rules outlined in the Cancellation and Refund Policy.</p>', 10, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 1, 'corporate_long_stay', '11. Corporate Billing & Extended Stay Terms', '<p>Approved B2B clients may request monthly invoicing billing options. Extended long stays (30+ days) qualify for customized quote structures and staged monthly payment profiles. Staged payments must be settled by agreed deadlines to ensure stay continuation.</p>', 11, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 1, 'disputes_refunds', '12. Failed Payments, disputes and Chargebacks', '<p>Failed gateway transits require the guest to contact their card issuer. Duplicate or overpayments are reviewed and refunded within 7 to 14 business days. In case of payment disputes or chargebacks, guests should contact finance support first. Unresolved disputed bookings may be suspended pending investigation outcomes.</p>', 12, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 1, 'data_privacy', '13. Payment Data Privacy', '<p>All uploaded bank receipts, payment references, invoices, and transaction logs are treated as sensitive financial data under NDPA regulations. Access is restricted to authorized accounting staff. Transaction logs are stored privately and never shared with unauthorized third parties.</p>', 13, 1, 0, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `payment_status_histories`
--

CREATE TABLE `payment_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `payment_id` bigint(20) UNSIGNED NOT NULL,
  `old_status` varchar(255) DEFAULT NULL,
  `new_status` varchar(255) NOT NULL,
  `source` varchar(255) NOT NULL,
  `note` text DEFAULT NULL,
  `created_by` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payment_transactions`
--

CREATE TABLE `payment_transactions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `payment_id` bigint(20) UNSIGNED NOT NULL,
  `transaction_reference` varchar(255) NOT NULL,
  `amount` decimal(12,2) NOT NULL,
  `currency` varchar(255) NOT NULL DEFAULT 'NGN',
  `status` varchar(255) NOT NULL,
  `gateway` varchar(255) NOT NULL,
  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`payload`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `payment_webhook_events`
--

CREATE TABLE `payment_webhook_events` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `event_id` varchar(255) NOT NULL,
  `gateway` varchar(255) NOT NULL,
  `event_type` varchar(255) NOT NULL,
  `tx_ref` varchar(255) DEFAULT NULL,
  `flutterwave_transaction_id` varchar(255) DEFAULT NULL,
  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`payload`)),
  `payload_redacted` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`payload_redacted`)),
  `processed` tinyint(1) NOT NULL DEFAULT 0,
  `signature_valid` tinyint(1) NOT NULL DEFAULT 0,
  `processed_at` timestamp NULL DEFAULT NULL,
  `processing_error` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `permissions`
--

CREATE TABLE `permissions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `guard_name` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `permissions`
--

INSERT INTO `permissions` (`id`, `name`, `guard_name`, `created_at`, `updated_at`) VALUES
(1, 'view bookings', 'web', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'create bookings', 'web', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'update bookings', 'web', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'delete bookings', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(5, 'cancel bookings', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(6, 'approve bookings', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(7, 'export bookings', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(8, 'view locations', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(9, 'create locations', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(10, 'update locations', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(11, 'delete locations', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(12, 'export locations', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(13, 'view apartment_types', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(14, 'create apartment_types', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(15, 'update apartment_types', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(16, 'delete apartment_types', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(17, 'export apartment_types', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(18, 'view units', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(19, 'create units', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(20, 'update units', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(21, 'delete units', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(22, 'export units', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(23, 'view availability', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(24, 'create availability', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(25, 'update availability', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(26, 'delete availability', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(27, 'export availability', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(28, 'view payments', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(29, 'create payments', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(30, 'update payments', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(31, 'delete payments', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(32, 'approve payments', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(33, 'export payments', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(34, 'view invoices', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(35, 'create invoices', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(36, 'update invoices', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(37, 'delete invoices', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(38, 'export invoices', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(39, 'view receipts', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(40, 'create receipts', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(41, 'update receipts', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(42, 'delete receipts', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(43, 'export receipts', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(44, 'view refunds', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(45, 'create refunds', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(46, 'update refunds', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(47, 'delete refunds', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(48, 'approve refunds', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(49, 'export refunds', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(50, 'view guests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(51, 'create guests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(52, 'update guests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(53, 'delete guests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(54, 'export guests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(55, 'view guest_documents', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(56, 'create guest_documents', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(57, 'update guest_documents', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(58, 'delete guest_documents', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(59, 'export guest_documents', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(60, 'view pricing_rules', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(61, 'create pricing_rules', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(62, 'update pricing_rules', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(63, 'delete pricing_rules', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(64, 'export pricing_rules', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(65, 'view promo_codes', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(66, 'create promo_codes', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(67, 'update promo_codes', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(68, 'delete promo_codes', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(69, 'export promo_codes', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(70, 'view airport_pickup_requests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(71, 'create airport_pickup_requests', 'web', '2026-06-04 11:23:06', '2026-06-04 11:23:06'),
(72, 'update airport_pickup_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(73, 'delete airport_pickup_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(74, 'export airport_pickup_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(75, 'view car_rental_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(76, 'create car_rental_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(77, 'update car_rental_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(78, 'delete car_rental_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(79, 'export car_rental_requests', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(80, 'view housekeeping_tasks', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(81, 'create housekeeping_tasks', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(82, 'update housekeeping_tasks', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(83, 'delete housekeeping_tasks', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(84, 'export housekeeping_tasks', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(85, 'view maintenance_tickets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(86, 'create maintenance_tickets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(87, 'update maintenance_tickets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(88, 'delete maintenance_tickets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(89, 'export maintenance_tickets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(90, 'view damage_reports', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(91, 'create damage_reports', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(92, 'update damage_reports', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(93, 'delete damage_reports', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(94, 'export damage_reports', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(95, 'view security_deposit_transactions', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(96, 'create security_deposit_transactions', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(97, 'update security_deposit_transactions', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(98, 'delete security_deposit_transactions', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(99, 'export security_deposit_transactions', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(100, 'view lost_and_found_items', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(101, 'create lost_and_found_items', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(102, 'update lost_and_found_items', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(103, 'delete lost_and_found_items', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(104, 'export lost_and_found_items', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(105, 'view reviews', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(106, 'create reviews', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(107, 'update reviews', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(108, 'delete reviews', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(109, 'approve reviews', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(110, 'export reviews', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(111, 'view media_assets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(112, 'create media_assets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(113, 'update media_assets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(114, 'delete media_assets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(115, 'export media_assets', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(116, 'view content_pages', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(117, 'create content_pages', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(118, 'update content_pages', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(119, 'delete content_pages', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(120, 'export content_pages', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(121, 'view blog_posts', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(122, 'create blog_posts', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(123, 'update blog_posts', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(124, 'delete blog_posts', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(125, 'export blog_posts', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(126, 'view faqs', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(127, 'create faqs', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(128, 'update faqs', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(129, 'delete faqs', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(130, 'export faqs', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(131, 'view policies', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(132, 'create policies', 'web', '2026-06-04 11:23:07', '2026-06-04 11:23:07'),
(133, 'update policies', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(134, 'delete policies', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(135, 'export policies', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(136, 'view seo_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(137, 'create seo_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(138, 'update seo_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(139, 'delete seo_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(140, 'export seo_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(141, 'view schema_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(142, 'create schema_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(143, 'update schema_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(144, 'delete schema_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(145, 'export schema_metadata', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(146, 'view redirects', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(147, 'create redirects', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(148, 'update redirects', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(149, 'delete redirects', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(150, 'export redirects', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(151, 'view reports', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(152, 'export reports', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(153, 'view analytics', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(154, 'view users', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(155, 'create users', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(156, 'update users', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(157, 'delete users', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(158, 'export users', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(159, 'view roles', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(160, 'create roles', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(161, 'update roles', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(162, 'delete roles', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(163, 'export roles', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(164, 'view permissions', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(165, 'create permissions', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(166, 'update permissions', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(167, 'delete permissions', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(168, 'export permissions', 'web', '2026-06-04 11:23:08', '2026-06-04 11:23:08'),
(169, 'view audit_logs', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(170, 'export audit_logs', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(171, 'view settings', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(172, 'update settings', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(173, 'view integrations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(174, 'create integrations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(175, 'update integrations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(176, 'delete integrations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(177, 'access super admin dashboard', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(178, 'view all locations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(179, 'archive locations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(180, 'manage global pricing', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(181, 'manage location pricing', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(182, 'approve pricing overrides', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(183, 'manage global amenities', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(184, 'manage staff location access', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(185, 'view central reports', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(186, 'export central reports', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(187, 'manage brand content', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(188, 'manage global seo', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(189, 'manage location seo', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(190, 'manage global policies', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(191, 'manage location policies', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(192, 'view global audit logs', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(193, 'export global audit logs', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(194, 'manage integrations', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(195, 'manage system settings', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09');

-- --------------------------------------------------------

--
-- Table structure for table `pms_integrations`
--

CREATE TABLE `pms_integrations` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `provider_name` varchar(255) NOT NULL,
  `is_enabled` tinyint(1) NOT NULL DEFAULT 0,
  `api_credentials` text DEFAULT NULL,
  `property_mapping` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`property_mapping`)),
  `last_sync_at` timestamp NULL DEFAULT NULL,
  `last_sync_status` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `pms_sync_logs`
--

CREATE TABLE `pms_sync_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pms_integration_id` bigint(20) UNSIGNED NOT NULL,
  `sync_type` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL,
  `message` text DEFAULT NULL,
  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`payload`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `policies`
--

CREATE TABLE `policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `content` longtext NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `policies`
--

INSERT INTO `policies` (`id`, `title`, `slug`, `content`, `created_at`, `updated_at`) VALUES
(1, 'Booking Policy', 'booking-policy', 'Guests must be 18 years or older to book. Valid government-issued identification (passport, national ID, or driver license) is strictly required upon check-in. The reservation name must match the guest ID. Bookings are confirmed only after the base rate payment has been verified.', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'Cancellation and Refund Policy', 'cancellation-and-refund-policy', 'Free cancellation is available for bookings cancelled up to 5 days before the check-in date. Cancellations made between 2 and 5 days prior attract a 50% charge of the total booking cost. Cancellations made within 48 hours of check-in, or no-shows, are strictly non-refundable.', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'House Rules', 'house-rules', '1. No smoking is allowed inside the apartments (a penalty of ₦100,000 applies for violations).\n2. Loud music and parties are strictly prohibited to preserve peace for other guests.\n3. Visitors must register at the reception and depart by 10:00 PM. Smart security systems monitor visitor arrivals.', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `policy_acceptances`
--

CREATE TABLE `policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `policy_type` varchar(255) NOT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `ip_address` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `policy_versions`
--

CREATE TABLE `policy_versions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_policy_id` bigint(20) UNSIGNED DEFAULT NULL,
  `global_policy_template_id` bigint(20) UNSIGNED DEFAULT NULL,
  `version` int(11) NOT NULL,
  `content` text NOT NULL,
  `created_by` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `pricing_rules`
--

CREATE TABLE `pricing_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `name` varchar(255) NOT NULL,
  `rule_type` varchar(255) NOT NULL,
  `value` decimal(10,2) NOT NULL,
  `start_date` date DEFAULT NULL,
  `end_date` date DEFAULT NULL,
  `days_of_week` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`days_of_week`)),
  `active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pricing_rules`
--

INSERT INTO `pricing_rules` (`id`, `apartment_type_id`, `name`, `rule_type`, `value`, `start_date`, `end_date`, `days_of_week`, `active`, `created_at`, `updated_at`) VALUES
(1, NULL, 'Weekend Markup (Fri/Sat)', 'weekend', 1.10, NULL, NULL, '[5,6]', 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, NULL, 'Christmas Festive Rate', 'seasonal', 1.25, '2026-12-15', '2027-01-05', NULL, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, NULL, 'Long Stay Discount (30+ Days)', 'long_stay_discount', -0.15, NULL, NULL, NULL, 1, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `privacy_policies`
--

CREATE TABLE `privacy_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` datetime DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `privacy_policies`
--

INSERT INTO `privacy_policies` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Privacy Policy', 'privacy-policy', 'Learn how Kevron Suites and Apartments collects, uses, protects and manages personal information when you use our website, make a booking, submit an enquiry, access your guest account or stay at our apartments.', '2026-06-01', '2026-06-04 12:23:13', '1.0', 'published', 'Kevron Legal Compliance Board', '2026-06-04 12:23:13', '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `privacy_policy_acceptances`
--

CREATE TABLE `privacy_policy_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `policy_version_id` varchar(255) NOT NULL,
  `policy_title` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `privacy_policy_sections`
--

CREATE TABLE `privacy_policy_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `privacy_policy_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `privacy_policy_sections`
--

INSERT INTO `privacy_policy_sections` (`id`, `privacy_policy_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'who_we_are', '1. Who We Are', '<p class=\"policy-p mb-4\"><strong>Kevron Suites and Apartments</strong> is a luxury serviced-apartment hospitality provider located in the premium, highly secure neighborhood of Adeniyi Jones, Ikeja, Lagos, Nigeria.</p>\n                           <p class=\"policy-p mb-4\">Our operations cover two premium addresses on Adeniyi Jones, Ikeja, Lagos 100271:\n                           <ul class=\"list-disc pl-5 mb-4 space-y-1\">\n                               <li class=\"policy-li\">7B Regina Coker Street, Adeniyi Jones, Ikeja, Lagos</li>\n                               <li class=\"policy-li\">No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos</li>\n                           </ul>\n                           </p>\n                           <p class=\"policy-p mb-4\">For any inquiries, requests, or questions regarding this policy or our data practices, please contact our Data Protection Coordinator via email at <strong>info@kevronapartments.com</strong> or call our concierge desk at <strong>+234 813 163 2926</strong>.</p>', 1, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(2, 1, 'personal_data_we_collect', '2. Personal Data We Collect', '<p class=\"policy-p mb-4\">We collect and process various categories of personal data depending on how you interact with us. This includes:</p>\n                           <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4\">\n                               <div class=\"p-4 bg-white border border-[#DDE6F3] rounded-[0.1rem]\">\n                                   <strong class=\"text-[#2B3192] block mb-1\">Identity & Contact Data</strong>\n                                   <p class=\"policy-p text-xs text-slate-500\">Full name, email address, telephone/WhatsApp number, country, and official identification document (passport or driver\'s license) for secure check-in verification.</p>\n                               </div>\n                               <div class=\"p-4 bg-white border border-[#DDE6F3] rounded-[0.1rem]\">\n                                   <strong class=\"text-[#2B3192] block mb-1\">Booking & Transaction Data</strong>\n                                   <p class=\"policy-p text-xs text-slate-500\">Check-in and check-out dates, room type interest, guests count, purpose of stay, special requests, and transport details.</p>\n                               </div>\n                               <div class=\"p-4 bg-white border border-[#DDE6F3] rounded-[0.1rem]\">\n                                   <strong class=\"text-[#2B3192] block mb-1\">Payment & Financial Data</strong>\n                                   <p class=\"policy-p text-xs text-slate-500\">Payment method, billing details, proof of bank transfer, and deposit receipt references. We do not store full credit card details on our servers.</p>\n                               </div>\n                               <div class=\"p-4 bg-white border border-[#DDE6F3] rounded-[0.1rem]\">\n                                   <strong class=\"text-[#2B3192] block mb-1\">Guest Account & Dashboard Data</strong>\n                                   <p class=\"policy-p text-xs text-slate-500\">Registration credentials, linked bookings, support ticket logs, profile preferences, and system activity records.</p>\n                               </div>\n                           </div>', 2, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(3, 1, 'how_we_collect_data', '3. How We Collect Personal Data', '<p class=\"policy-p mb-4\">We collect personal information through direct interactions and automated technologies:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Direct Submissions:</strong> When you complete website booking forms, general contact forms, corporate or long-stay enquiries, support tickets, and review forms.</li>\n                               <li class=\"policy-li\"><strong>Messaging Platforms:</strong> Direct coordination via our integrated WhatsApp concierge widget, telephone inquiries, and email communications.</li>\n                               <li class=\"policy-li\"><strong>Account Registration:</strong> When you register and link bookings inside our secure Guest Dashboard portal.</li>\n                               <li class=\"policy-li\"><strong>Property-Level Systems:</strong> Visitor management logs at the gate, check-in registration desks, and CCTV cameras placed in external, common and access areas of our apartments.</li>\n                               <li class=\"policy-li\"><strong>Automated Technologies:</strong> Non-intrusive cookies, server logs, and tracking scripts that measure website performance and booking telemetry.</li>\n                           </ul>', 3, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(4, 1, 'why_we_use_data', '4. Why We Use Personal Data', '<p class=\"policy-p mb-4\">We process personal data for specific administrative and hospitality operations including:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\">Verifying room availability, calculating stay prices, and processing secure suite reservations.</li>\n                               <li class=\"policy-li\">Billing transactions, auditing bank transfers, and processing security deposits and refunds.</li>\n                               <li class=\"policy-li\">Sending transactional updates, check-in instructions, and booking notifications via email, SMS, or WhatsApp.</li>\n                               <li class=\"policy-li\">Providing airport pickup, car rental, and in-suite guest services (housekeeping, smart lock passcodes, maintenance).</li>\n                               <li class=\"policy-li\">Providing secure guest account panels with linked invoices, downloads, and ticket support.</li>\n                               <li class=\"policy-li\">Asserting property safety and protecting guests through CCTV controls, visitor registers, and smart lock logs.</li>\n                           </ul>', 4, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(5, 1, 'lawful_grounds', '5. Lawful Grounds for Processing', '<p class=\"policy-p mb-4\">Under the <strong>Nigeria Data Protection Act (NDPA) 2023</strong> and international privacy frameworks, we only process personal information where we have valid legal grounds:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Contract Performance:</strong> Processing is required to perform your stay booking agreement and supply guest services.</li>\n                               <li class=\"policy-li\"><strong>Consent:</strong> You have explicitly consented to the processing, such as subscribing to newsletters or opt-in marketing.</li>\n                               <li class=\"policy-li\"><strong>Legal Obligation:</strong> Processing is mandated by hospitality regulations, tax reporting, corporate accounting, or law enforcement directives.</li>\n                               <li class=\"policy-li\"><strong>Legitimate Business Interest:</strong> Processing supports our property safety, smart security lock auditing, external CCTV operations, and service enhancement, where it does not override your fundamental rights.</li>\n                           </ul>', 5, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(6, 1, 'payment_financial_data', '6. Payment and Financial Data', '<p class=\"policy-p mb-4\">Your financial security is vital to us. We adhere to the following rules:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Card Processing:</strong> All online credit/debit card payments are securely handled directly by authorized payment gateways. Kevron does not store full credit card numbers or security codes on its servers.</li>\n                               <li class=\"policy-li\"><strong>Bank Transfers:</strong> Uploaded proof-of-payment receipts and bank statements are stored in private directories and used only by our restricted finance staff to confirm bookings.</li>\n                               <li class=\"policy-li\"><strong>Refund Processing:</strong> Refund transactions and bank details provided for claims are handled under strict confidentiality protocols and role-based permissions.</li>\n                           </ul>', 6, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(7, 1, 'guest_dashboard_data', '7. Guest Dashboard Data Protection', '<p class=\"policy-p mb-4\">Registered dashboard accounts are private and highly protected. Access to your personal dashboard panel is password-encrypted. We record dashboard activity (such as login events and support tickets) solely for auditing, debugging, and preventing unauthorized account takeover. We recommend using a strong password and keeping your credentials confidential.</p>', 7, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(8, 1, 'guest_uploads_privacy', '8. Guest Documents and Uploads', '<p class=\"policy-p mb-4\">Any files you upload to our website—including bank transfer receipts, government-issued identification cards, or corporate lists—are handled with utmost privacy:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\">Documents are saved in a highly secure, non-public storage directory.</li>\n                               <li class=\"policy-li\">Only authorised reception managers and administrative supervisors can view these uploads for check-in compliance.</li>\n                               <li class=\"policy-li\">Uploaded media files for reviews are moderated and audited before publication to ensure no private guest information is exposed.</li>\n                           </ul>', 8, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(9, 1, 'security_cctv', '9. CCTV, Visitor Management and Security', '<p class=\"policy-p mb-4\">To ensure your physical security and property safety:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>CCTV Surveillance:</strong> CCTV cameras are deployed in external access zones, building perimeters, gate entrances, corridors and common lobby areas. CCTV is <strong>never</strong> used in private guest rooms, bedrooms, or suites.</li>\n                               <li class=\"policy-li\"><strong>Visitor Logs:</strong> Information collected from gate visitors is processed to prevent unauthorized access.</li>\n                               <li class=\"policy-li\"><strong>Access Audit Logs:</strong> Access records from keyless smart locks are recorded to audit room security.</li>\n                           </ul>', 9, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(10, 1, 'cookies_analytics', '10. Cookies, Analytics and Tracking', '<p class=\"policy-p mb-4\">We use cookies to analyze web traffic, optimize loading times, and remember preferences. You can adjust your consent options through our cookie banner or browser settings. For detailed information, please read our <a href=\"/policies/cookie-policy\" class=\"underline text-[#2B3192] hover:text-[#1FADEA]\">Cookie Policy</a>.</p>', 10, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(11, 1, 'who_we_share_data_with', '11. Who We Share Data With', '<p class=\"policy-p mb-4\">We do not sell or lease your personal data. We only share information with selected recipients where necessary for operations, including:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Service Providers:</strong> Payment gateways, SMS/email notifications servers, cloud hosting providers, and transport vendors (for airport pickup).</li>\n                               <li class=\"policy-li\"><strong>B2B Clients:</strong> If your stay is sponsored or booked under a corporate account, we may share billing details with your employer.</li>\n                               <li class=\"policy-li\"><strong>Regulatory Authorities:</strong> Police, government bodies, or legal advisors where strictly required by law or lawful directives.</li>\n                           </ul>', 11, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(12, 1, 'data_retention', '12. Data Retention', '<p class=\"policy-p mb-4\">We retain personal data only for as long as necessary to fulfill the purposes outlined in this policy. Retention schedules are managed according to legal, accounting, tax, operational, and safety requirements. Specific retention schedules may be updated by management and legal review. For example:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Booking and Invoice records:</strong> Retained for 7 years to satisfy corporate tax audits.</li>\n                               <li class=\"policy-li\"><strong>Guest ID documents:</strong> Deleted within 30 days post checkout unless required for active legal verification.</li>\n                               <li class=\"policy-li\"><strong>CCTV recordings:</strong> Automatically overwritten every 30 days unless flag-marked for security investigation.</li>\n                           </ul>', 12, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(13, 1, 'data_security', '13. Data Security Safeguards', '<p class=\"policy-p mb-4\">We have implemented robust technical safeguards to protect your personal information, including:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\">HTTPS encryption on all public and admin forms.</li>\n                               <li class=\"policy-li\">Role-based access permissions restricting customer data to authorized supervisors.</li>\n                               <li class=\"policy-li\">Private storage folders for all guest identification uploads and bank transfer receipts.</li>\n                               <li class=\"policy-li\">Automated security audit logging for all policy and request changes.</li>\n                           </ul>\n                           <p class=\"policy-p mb-4\">Please note that while we implement top-tier safeguards, no system or data transmission can be described as 100% secure.</p>', 13, 1, 0, '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(14, 1, 'data_subject_rights', '14. Your Privacy Rights', '<p class=\"policy-p mb-4\">Under the NDPA 2023, you hold important rights regarding your data:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2\">\n                               <li class=\"policy-li\"><strong>Right to Access:</strong> Request a copy of all personal data we hold about you.</li>\n                               <li class=\"policy-li\"><strong>Right to Rectification:</strong> Request correction of inaccurate or incomplete details.</li>\n                               <li class=\"policy-li\"><strong>Right to Erasure (Be Forgotten):</strong> Request deletion of your records where no legal retention requirement exists.</li>\n                               <li class=\"policy-li\"><strong>Right to Data Portability:</strong> Request export of your details in a machine-readable format.</li>\n                               <li class=\"policy-li\"><strong>Right to Withdraw Consent:</strong> Withdraw consent for marketing at any time.</li>\n                           </ul>\n                           <p class=\"policy-p mb-4\">To exercise these rights, please complete our secure <strong>Data Privacy Request Form</strong> located below.</p>', 14, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `privacy_requests`
--

CREATE TABLE `privacy_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `request_type` varchar(255) NOT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `request_details` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'submitted',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `verified_at` datetime DEFAULT NULL,
  `assigned_to` bigint(20) UNSIGNED DEFAULT NULL,
  `closed_at` datetime DEFAULT NULL,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `privacy_request_status_histories`
--

CREATE TABLE `privacy_request_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `privacy_request_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` bigint(20) UNSIGNED DEFAULT NULL,
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `promo_codes`
--

CREATE TABLE `promo_codes` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `code` varchar(255) NOT NULL,
  `discount_type` varchar(255) NOT NULL,
  `discount_value` decimal(12,2) NOT NULL,
  `min_booking_amount` decimal(12,2) NOT NULL DEFAULT 0.00,
  `start_date` datetime DEFAULT NULL,
  `end_date` datetime DEFAULT NULL,
  `active` tinyint(1) NOT NULL DEFAULT 1,
  `usage_limit` int(11) DEFAULT NULL,
  `usage_count` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `promo_codes`
--

INSERT INTO `promo_codes` (`id`, `code`, `discount_type`, `discount_value`, `min_booking_amount`, `start_date`, `end_date`, `active`, `usage_limit`, `usage_count`, `created_at`, `updated_at`) VALUES
(1, 'KEVRONWELCOME', 'fixed', 10000.00, 150000.00, NULL, NULL, 1, NULL, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'STAYLUXE', 'percent', 10.00, 100000.00, NULL, NULL, 1, NULL, 0, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `promo_code_redemptions`
--

CREATE TABLE `promo_code_redemptions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `promo_code_id` bigint(20) UNSIGNED NOT NULL,
  `email` varchar(255) NOT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `proof_of_payment_uploads`
--

CREATE TABLE `proof_of_payment_uploads` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `full_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `amount_paid` decimal(12,2) NOT NULL,
  `payment_method` varchar(255) NOT NULL,
  `transaction_date` date NOT NULL,
  `file_path` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `reviewed_by` varchar(255) DEFAULT NULL,
  `reviewed_at` timestamp NULL DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `property_accessibility_profiles`
--

CREATE TABLE `property_accessibility_profiles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `entrance_access` varchar(255) DEFAULT NULL,
  `lift_access` varchar(255) DEFAULT NULL,
  `stair_access` varchar(255) DEFAULT NULL,
  `parking_access` varchar(255) DEFAULT NULL,
  `door_width` varchar(255) DEFAULT NULL,
  `bathroom_accessibility` varchar(255) DEFAULT NULL,
  `bedroom_accessibility` varchar(255) DEFAULT NULL,
  `balcony_accessibility` varchar(255) DEFAULT NULL,
  `emergency_evacuation_assistance` text DEFAULT NULL,
  `elderly_guest_assistance` text DEFAULT NULL,
  `assistance_animal_note` varchar(255) DEFAULT NULL,
  `nearby_accessible_transport` varchar(255) DEFAULT NULL,
  `verification_status` varchar(255) NOT NULL DEFAULT 'pending',
  `verified_at` timestamp NULL DEFAULT NULL,
  `verified_by` varchar(255) DEFAULT NULL,
  `public_note` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `property_accessibility_profiles`
--

INSERT INTO `property_accessibility_profiles` (`id`, `location_id`, `entrance_access`, `lift_access`, `stair_access`, `parking_access`, `door_width`, `bathroom_accessibility`, `bedroom_accessibility`, `balcony_accessibility`, `emergency_evacuation_assistance`, `elderly_guest_assistance`, `assistance_animal_note`, `nearby_accessible_transport`, `verification_status`, `verified_at`, `verified_by`, `public_note`, `created_at`, `updated_at`) VALUES
(1, 1, 'Step-free ramp entry available', 'Elevator lift to all floors is active', 'Stairs equipped with continuous handrails', 'Dedicated step-free disabled parking stall', '32-inch minimum interior passage clearance', 'Selected suites feature roll-in showers & grab bars', 'Accessible master suite with wide pathway clearances', 'Step-free terrace entrance', 'Continuous emergency floor marshalls assignment', 'Dedicated arrival check-in host porter support', 'Fully allowed without surcharge', 'Accessible drop-off zone directly at the perimeter gate', 'verified', '2026-06-04 11:23:14', 'HSE Compliance Lead', 'Please confirm suite allocation requirements during your booking request.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 2, 'Ground-floor step-free access available', 'Low-floor ground-level suite fallback allocation', 'Wide stairs with handrails', 'Step-free drop-off bay directly at door', '30-inch clear passage door widths', 'Shower chairs and hand-held shower heads upon request', 'Ground-floor spacious suites', 'Low-threshold step-out seatout access', 'Individual evacuation marshalls check-in list', 'Concierge bags handling and pre-checkin support', 'Allowed upon request', 'Local drop-off zones within 5 meters of main foyer', 'verified', '2026-06-04 11:23:14', 'HSE Compliance Lead', 'We highly recommend ground floor bookings for elderly guests.', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `quality_standards`
--

CREATE TABLE `quality_standards` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `icon` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `quality_standards`
--

INSERT INTO `quality_standards` (`id`, `title`, `description`, `icon`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Cleanliness', 'Strict housekeeping checks, fresh premium linen rotations, and thorough sanitization protocols before every check-in.', 'sparkles', 1, 1, '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(2, 'Maintenance', 'Proactive asset checks and rapid maintenance dispatch systems to keep power, climate, and smart locks running perfectly.', 'wrench-screwdriver', 1, 2, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'Guest Communication', 'Immediate messaging support via custom digital forms and WhatsApp, ensuring guests are never left waiting.', 'chat-bubble-left-right', 1, 3, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'Booking Clarity', 'Absolute pricing transparency with zero hidden reservation or facility charges, supported by immediate email receipts.', 'credit-card', 1, 4, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(5, 'Safety Information', 'Exposing clear fire, exit, emergency contact, and utility guidelines in our verified in-suite safety guest manuals.', 'exclamation-triangle', 1, 5, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(6, 'Property Management', 'Professional facility managers overseing compound entry control, gated integrity, and backup generator networks.', 'building-office', 1, 6, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(7, 'Continuous Improvement', 'Actively gathering guest feedback logs to fine-tune our services, local travel guide content, and smart home utilities.', 'arrow-path', 1, 7, '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `receipts`
--

CREATE TABLE `receipts` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `payment_id` bigint(20) UNSIGNED NOT NULL,
  `receipt_number` varchar(255) NOT NULL,
  `amount` decimal(12,2) NOT NULL,
  `issued_at` datetime NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `receipts`
--

INSERT INTO `receipts` (`id`, `payment_id`, `receipt_number`, `amount`, `issued_at`, `created_at`, `updated_at`) VALUES
(1, 1, 'RCP-2026-0001', 1150000.00, '2026-05-15 12:23:05', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 2, 'RCP-2026-0002', 1100000.00, '2026-06-02 12:23:05', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `receipt_items`
--

CREATE TABLE `receipt_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `receipt_id` bigint(20) UNSIGNED NOT NULL,
  `description` varchar(255) NOT NULL,
  `quantity` int(11) NOT NULL DEFAULT 1,
  `unit_price` decimal(12,2) NOT NULL,
  `total_price` decimal(12,2) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `recommendation_requests`
--

CREATE TABLE `recommendation_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `purpose` varchar(255) NOT NULL,
  `guests_count` varchar(255) NOT NULL,
  `duration` varchar(255) NOT NULL,
  `budget` varchar(255) NOT NULL,
  `amenities` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`amenities`)),
  `recommended_apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `preferred_action` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `refund_requests`
--

CREATE TABLE `refund_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `payment_id` bigint(20) UNSIGNED DEFAULT NULL,
  `requested_amount` decimal(12,2) NOT NULL,
  `approved_amount` decimal(12,2) NOT NULL DEFAULT 0.00,
  `refund_reason` text NOT NULL,
  `refund_method` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'request_submitted',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `reviewed_by` bigint(20) UNSIGNED DEFAULT NULL,
  `reviewed_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `refund_status_histories`
--

CREATE TABLE `refund_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `refund_request_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` bigint(20) UNSIGNED DEFAULT NULL,
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `repeat_stay_requests`
--

CREATE TABLE `repeat_stay_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `previous_booking_reference` varchar(255) NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `intended_dates` varchar(255) DEFAULT NULL,
  `apartment_preference` varchar(255) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `reviews`
--

CREATE TABLE `reviews` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `display_name` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `stay_type` varchar(255) NOT NULL DEFAULT 'family',
  `overall_rating` int(11) NOT NULL,
  `review_title` varchar(255) DEFAULT NULL,
  `review_comment` text NOT NULL,
  `source_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_verified_stay` tinyint(1) NOT NULL DEFAULT 0,
  `is_featured` tinyint(1) NOT NULL DEFAULT 0,
  `is_approved` tinyint(1) NOT NULL DEFAULT 0,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `moderation_notes` text DEFAULT NULL,
  `consent_to_publish` tinyint(1) NOT NULL DEFAULT 1,
  `submitted_ip` varchar(255) DEFAULT NULL,
  `published_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `reviews`
--

INSERT INTO `reviews` (`id`, `booking_id`, `booking_reference`, `location_id`, `apartment_type_id`, `guest_name`, `display_name`, `email`, `phone`, `stay_type`, `overall_rating`, `review_title`, `review_comment`, `source_id`, `is_verified_stay`, `is_featured`, `is_approved`, `status`, `moderation_notes`, `consent_to_publish`, `submitted_ip`, `published_at`, `created_at`, `updated_at`) VALUES
(1, NULL, NULL, NULL, 4, 'Chioma Nwachukwu', NULL, NULL, NULL, 'family', 5, NULL, 'Absolutely breathtaking! The snooker table, PS5, and keyless locks made our family stay unforgettable. The power was stable throughout, and the kitchen is fully fitted. The 24h support is top-notch.', NULL, 0, 0, 1, 'pending', NULL, 1, NULL, NULL, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, NULL, NULL, NULL, 1, 'Adewale Bakare', NULL, NULL, NULL, 'family', 5, NULL, 'Outstanding solo executive stay. Excellent Wi-Fi speed (crucial for my remote work) and very close to the airport (only took 15 mins to MMIA). Highly secure and clean.', NULL, 0, 0, 1, 'pending', NULL, 1, NULL, NULL, '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `review_categories`
--

CREATE TABLE `review_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `review_categories`
--

INSERT INTO `review_categories` (`id`, `name`, `slug`, `icon`, `created_at`, `updated_at`) VALUES
(1, 'Cleanliness', 'cleanliness', 'sparkles', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Comfort', 'comfort', 'home', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Location', 'location', 'map-pin', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 'Security', 'security', 'shield', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(5, 'Service', 'service', 'concierge-bell', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(6, 'Value', 'value', 'wallet', '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `review_category_ratings`
--

CREATE TABLE `review_category_ratings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `review_id` bigint(20) UNSIGNED NOT NULL,
  `review_category_id` bigint(20) UNSIGNED NOT NULL,
  `rating` int(11) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `review_helpful_votes`
--

CREATE TABLE `review_helpful_votes` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `review_id` bigint(20) UNSIGNED NOT NULL,
  `ip_address` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `review_media`
--

CREATE TABLE `review_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `review_id` bigint(20) UNSIGNED NOT NULL,
  `media_id` bigint(20) UNSIGNED NOT NULL,
  `is_approved` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `review_moderation_logs`
--

CREATE TABLE `review_moderation_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `review_id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `action` varchar(255) NOT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `review_reports`
--

CREATE TABLE `review_reports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `review_id` bigint(20) UNSIGNED NOT NULL,
  `ip_address` varchar(255) NOT NULL,
  `reason` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `review_responses`
--

CREATE TABLE `review_responses` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `review_id` bigint(20) UNSIGNED NOT NULL,
  `response_text` text NOT NULL,
  `responder_name` varchar(255) NOT NULL DEFAULT 'Management',
  `internal_notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `review_sources`
--

CREATE TABLE `review_sources` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `review_sources`
--

INSERT INTO `review_sources` (`id`, `name`, `slug`, `created_at`, `updated_at`) VALUES
(1, 'Website Review', 'website', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Google Review', 'google', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Direct Feedback', 'direct', '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `roles`
--

CREATE TABLE `roles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `guard_name` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `roles`
--

INSERT INTO `roles` (`id`, `name`, `guard_name`, `created_at`, `updated_at`) VALUES
(1, 'Super Admin', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(2, 'Admin Manager', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(3, 'Booking Officer', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(4, 'Finance Officer', 'web', '2026-06-04 11:23:09', '2026-06-04 11:23:09'),
(5, 'Housekeeping Staff', 'web', '2026-06-04 11:23:10', '2026-06-04 11:23:10'),
(6, 'Maintenance Staff', 'web', '2026-06-04 11:23:10', '2026-06-04 11:23:10'),
(7, 'Content Manager', 'web', '2026-06-04 11:23:10', '2026-06-04 11:23:10'),
(8, 'Read-Only User', 'web', '2026-06-04 11:23:10', '2026-06-04 11:23:10');

-- --------------------------------------------------------

--
-- Table structure for table `role_has_permissions`
--

CREATE TABLE `role_has_permissions` (
  `permission_id` bigint(20) UNSIGNED NOT NULL,
  `role_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `role_has_permissions`
--

INSERT INTO `role_has_permissions` (`permission_id`, `role_id`) VALUES
(1, 1),
(1, 2),
(1, 3),
(1, 4),
(1, 8),
(2, 1),
(2, 2),
(2, 3),
(3, 1),
(3, 2),
(3, 3),
(4, 1),
(4, 2),
(5, 1),
(5, 2),
(5, 3),
(6, 1),
(6, 2),
(7, 1),
(7, 2),
(7, 3),
(8, 1),
(8, 2),
(8, 3),
(8, 8),
(9, 1),
(9, 2),
(10, 1),
(10, 2),
(11, 1),
(11, 2),
(12, 1),
(12, 2),
(13, 1),
(13, 2),
(13, 3),
(13, 8),
(14, 1),
(14, 2),
(15, 1),
(15, 2),
(16, 1),
(16, 2),
(17, 1),
(17, 2),
(18, 1),
(18, 2),
(18, 3),
(18, 5),
(18, 6),
(18, 8),
(19, 1),
(19, 2),
(20, 1),
(20, 2),
(20, 5),
(20, 6),
(21, 1),
(21, 2),
(22, 1),
(22, 2),
(23, 1),
(23, 2),
(23, 3),
(23, 8),
(24, 1),
(24, 2),
(24, 3),
(25, 1),
(25, 2),
(25, 3),
(26, 1),
(26, 2),
(26, 3),
(27, 1),
(27, 2),
(28, 1),
(28, 2),
(28, 4),
(28, 8),
(29, 1),
(29, 2),
(29, 4),
(30, 1),
(30, 2),
(30, 4),
(31, 1),
(31, 2),
(32, 1),
(32, 2),
(32, 4),
(33, 1),
(33, 2),
(33, 4),
(34, 1),
(34, 2),
(34, 4),
(34, 8),
(35, 1),
(35, 2),
(35, 4),
(36, 1),
(36, 2),
(36, 4),
(37, 1),
(37, 2),
(38, 1),
(38, 2),
(38, 4),
(39, 1),
(39, 2),
(39, 4),
(39, 8),
(40, 1),
(40, 2),
(40, 4),
(41, 1),
(41, 2),
(41, 4),
(42, 1),
(42, 2),
(43, 1),
(43, 2),
(43, 4),
(44, 1),
(44, 2),
(44, 4),
(45, 1),
(45, 2),
(45, 4),
(46, 1),
(46, 2),
(46, 4),
(47, 1),
(47, 2),
(48, 1),
(48, 2),
(48, 4),
(49, 1),
(49, 2),
(49, 4),
(50, 1),
(50, 2),
(50, 3),
(50, 4),
(50, 8),
(51, 1),
(51, 2),
(51, 3),
(52, 1),
(52, 2),
(52, 3),
(53, 1),
(53, 2),
(54, 1),
(54, 2),
(54, 3),
(55, 1),
(55, 2),
(55, 3),
(55, 4),
(56, 1),
(56, 2),
(57, 1),
(57, 2),
(58, 1),
(58, 2),
(59, 1),
(59, 2),
(60, 1),
(60, 2),
(61, 1),
(61, 2),
(62, 1),
(62, 2),
(63, 1),
(63, 2),
(64, 1),
(64, 2),
(65, 1),
(65, 2),
(65, 3),
(66, 1),
(66, 2),
(67, 1),
(67, 2),
(68, 1),
(68, 2),
(69, 1),
(69, 2),
(70, 1),
(70, 2),
(70, 3),
(71, 1),
(71, 2),
(71, 3),
(72, 1),
(72, 2),
(72, 3),
(73, 1),
(73, 2),
(74, 1),
(74, 2),
(74, 3),
(75, 1),
(75, 2),
(75, 3),
(76, 1),
(76, 2),
(76, 3),
(77, 1),
(77, 2),
(77, 3),
(78, 1),
(78, 2),
(79, 1),
(79, 2),
(79, 3),
(80, 1),
(80, 2),
(80, 5),
(81, 1),
(81, 2),
(82, 1),
(82, 2),
(82, 5),
(83, 1),
(83, 2),
(84, 1),
(84, 2),
(85, 1),
(85, 2),
(85, 6),
(86, 1),
(86, 2),
(86, 6),
(87, 1),
(87, 2),
(87, 6),
(88, 1),
(88, 2),
(89, 1),
(89, 2),
(90, 1),
(90, 2),
(90, 6),
(91, 1),
(91, 2),
(91, 6),
(92, 1),
(92, 2),
(92, 6),
(93, 1),
(93, 2),
(94, 1),
(94, 2),
(95, 1),
(95, 2),
(95, 4),
(96, 1),
(96, 2),
(96, 4),
(97, 1),
(97, 2),
(97, 4),
(98, 1),
(98, 2),
(99, 1),
(99, 2),
(99, 4),
(100, 1),
(100, 2),
(100, 3),
(101, 1),
(101, 2),
(101, 3),
(102, 1),
(102, 2),
(102, 3),
(103, 1),
(103, 2),
(104, 1),
(104, 2),
(104, 3),
(105, 1),
(105, 2),
(105, 3),
(105, 7),
(105, 8),
(106, 1),
(106, 2),
(107, 1),
(107, 2),
(108, 1),
(108, 2),
(109, 1),
(109, 2),
(109, 7),
(110, 1),
(110, 2),
(111, 1),
(111, 2),
(111, 7),
(112, 1),
(112, 2),
(112, 7),
(113, 1),
(113, 2),
(113, 7),
(114, 1),
(114, 2),
(114, 7),
(115, 1),
(115, 2),
(115, 7),
(116, 1),
(116, 2),
(116, 7),
(117, 1),
(117, 2),
(117, 7),
(118, 1),
(118, 2),
(118, 7),
(119, 1),
(119, 2),
(119, 7),
(120, 1),
(120, 2),
(120, 7),
(121, 1),
(121, 2),
(121, 7),
(122, 1),
(122, 2),
(122, 7),
(123, 1),
(123, 2),
(123, 7),
(124, 1),
(124, 2),
(124, 7),
(125, 1),
(125, 2),
(125, 7),
(126, 1),
(126, 2),
(126, 7),
(127, 1),
(127, 2),
(127, 7),
(128, 1),
(128, 2),
(128, 7),
(129, 1),
(129, 2),
(129, 7),
(130, 1),
(130, 2),
(130, 7),
(131, 1),
(131, 2),
(131, 7),
(132, 1),
(132, 2),
(132, 7),
(133, 1),
(133, 2),
(133, 7),
(134, 1),
(134, 2),
(134, 7),
(135, 1),
(135, 2),
(135, 7),
(136, 1),
(136, 2),
(136, 7),
(137, 1),
(137, 2),
(137, 7),
(138, 1),
(138, 2),
(138, 7),
(139, 1),
(139, 2),
(139, 7),
(140, 1),
(140, 2),
(140, 7),
(141, 1),
(141, 2),
(141, 7),
(142, 1),
(142, 2),
(142, 7),
(143, 1),
(143, 2),
(143, 7),
(144, 1),
(144, 2),
(144, 7),
(145, 1),
(145, 2),
(145, 7),
(146, 1),
(146, 2),
(146, 7),
(147, 1),
(147, 2),
(147, 7),
(148, 1),
(148, 2),
(148, 7),
(149, 1),
(149, 2),
(149, 7),
(150, 1),
(150, 2),
(150, 7),
(151, 1),
(151, 2),
(151, 4),
(151, 8),
(152, 1),
(152, 2),
(152, 4),
(153, 1),
(153, 2),
(153, 8),
(154, 1),
(155, 1),
(156, 1),
(157, 1),
(158, 1),
(159, 1),
(160, 1),
(161, 1),
(162, 1),
(163, 1),
(164, 1),
(165, 1),
(166, 1),
(167, 1),
(168, 1),
(169, 1),
(170, 1),
(171, 1),
(171, 2),
(171, 3),
(172, 1),
(172, 2),
(173, 1),
(174, 1),
(175, 1),
(176, 1),
(177, 1),
(178, 1),
(179, 1),
(180, 1),
(181, 1),
(182, 1),
(183, 1),
(184, 1),
(185, 1),
(186, 1),
(187, 1),
(188, 1),
(189, 1),
(190, 1),
(191, 1),
(192, 1),
(193, 1),
(194, 1),
(195, 1);

-- --------------------------------------------------------

--
-- Table structure for table `rule_breach_reports`
--

CREATE TABLE `rule_breach_reports` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `unit_id` bigint(20) UNSIGNED DEFAULT NULL,
  `breach_category` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `evidence_media_id` int(11) DEFAULT NULL,
  `reported_by` varchar(255) DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'reported',
  `guest_visible_note` text DEFAULT NULL,
  `internal_note` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `safety_device_registers`
--

CREATE TABLE `safety_device_registers` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `device_type` varchar(255) NOT NULL,
  `location_details` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `battery_status` varchar(255) DEFAULT NULL,
  `last_tested_at` date DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `safety_device_registers`
--

INSERT INTO `safety_device_registers` (`id`, `location_id`, `device_type`, `location_details`, `status`, `battery_status`, `last_tested_at`, `created_at`, `updated_at`) VALUES
(1, 1, 'Smoke Detector', 'Bedroom ceiling, Penthouse Suite 401', 'active', 'Good', '2026-05-25', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, 'Carbon Monoxide Alarm', 'Kitchen wall outlet, Unit 201', 'active', 'Good', '2026-05-20', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `safety_information_pages`
--

CREATE TABLE `safety_information_pages` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `summary` text DEFAULT NULL,
  `effective_date` date DEFAULT NULL,
  `last_updated_at` timestamp NULL DEFAULT NULL,
  `version` varchar(255) NOT NULL DEFAULT '1.0',
  `status` varchar(255) NOT NULL DEFAULT 'draft',
  `approved_by` varchar(255) DEFAULT NULL,
  `published_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `safety_information_pages`
--

INSERT INTO `safety_information_pages` (`id`, `title`, `slug`, `summary`, `effective_date`, `last_updated_at`, `version`, `status`, `approved_by`, `published_at`, `created_at`, `updated_at`) VALUES
(1, 'Safety and Emergency Information', 'safety-emergency-information', 'Important safety guidance, emergency contacts, fire evacuation procedures and secure guest support systems for your luxury stay.', '2026-06-01', '2026-06-04 11:23:14', '1.0', 'published', 'Kevron HSE & Corporate Operations Management Desk', '2026-06-04 11:23:14', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `safety_information_sections`
--

CREATE TABLE `safety_information_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `safety_information_page_id` bigint(20) UNSIGNED NOT NULL,
  `section_key` varchar(255) NOT NULL,
  `heading` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `requires_operations_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_hse_review` tinyint(1) NOT NULL DEFAULT 0,
  `requires_legal_review` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `safety_information_sections`
--

INSERT INTO `safety_information_sections` (`id`, `safety_information_page_id`, `section_key`, `heading`, `body`, `sort_order`, `is_active`, `requires_operations_review`, `requires_hse_review`, `requires_legal_review`, `created_at`, `updated_at`) VALUES
(1, 1, 'property_safety_summary', 'Property Safety Summary', '<p class=\"body-capped text-slate-600 mb-4\">At <strong>Kevron Suites and Apartments</strong>, we prioritize the secure comfort and emergency readiness of our guests at Adeniyi Jones, Ikeja, Lagos. Our facilities integrate modern keyless smart locks, video intercom systems, and CCTV monitoring in relevant common areas to support guest peace of mind. We maintain a strict policy of <strong>CCTV-free private quarters</strong> (private living areas and bedrooms) to guarantee privacy.</p>\n                           <p class=\"body-capped text-slate-600 mb-4\">While we deploy comprehensive physical, structural, and access controls where applicable, we do not claim absolute or guaranteed security. Staying guests are requested to remain vigilant, keep their access credentials secure, verify all visitors, and contact emergency services first in life-threatening situations.</p>', 1, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 1, 'fire_safety_instructions', 'Fire Safety Instructions', '<p class=\"body-capped text-slate-600 mb-4\">In sleeping accommodations, rapid response to fire or smoke signs is critical. If you observe fire, smoke, or a burning smell:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li><strong>Raise the Alarm:</strong> Shout \"FIRE\" loudly to warn nearby occupants and press any manual alarm call point where configured.</li>\n                               <li><strong>Leave Immediately:</strong> Exit the affected area without delay. Close doors behind you where safe to slow fire spread.</li>\n                               <li><strong>Do Not stop for luggage:</strong> Personal belongings are replaceable. Your life is not.</li>\n                               <li><strong>Use Exit Stairwells:</strong> Evacuate using the nearest safe staircase. Lifts/elevators must <strong>never</strong> be used during fire evacuations unless specifically cleared by emergency plan authorities or responders.</li>\n                               <li><strong>Notify Property Desk:</strong> Call our 24/7 guest support line or security desk once you are in a safe zone.</li>\n                           </ul>', 2, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 1, 'evacuation_procedure', 'Step-by-Step Evacuation Procedure', '<ol class=\"list-decimal pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li><strong>Stay Calm & Alert:</strong> Quickly gather family members or guests in your suite.</li>\n                               <li><strong>Navigate the Route:</strong> Follow the floor-level escape routes displayed in the corridor or Guest Manual.</li>\n                               <li><strong>Assist Others:</strong> Help children, elderly guests, or persons with special assistance needs where safe to do so.</li>\n                               <li><strong>Proceed to Assembly Point:</strong> Gather at the designated safe assembly zone outside the main building.</li>\n                               <li><strong>Await Instructions:</strong> Remain at the assembly point. Do not re-enter the building until the HSE coordinator or emergency services explicitly authorize it.</li>\n                           </ol>', 3, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 1, 'special_assistance', 'Assistance for Guests with Disabilities or Special Needs', '<p class=\"body-capped text-slate-600 mb-4\">We are dedicated to accommodating the safety needs of all guests. Guests with limited mobility, visual or hearing impairments, or other special evacuation needs are requested to inform our concierge desk at or before check-in.</p>\n                           <p class=\"body-capped text-slate-600 mb-4\">Any special assistance requirements are handled with strict privacy in accordance with our <a href=\"/privacy-policy\" class=\"text-[#2B3192] hover:underline\">Privacy Policy</a>, allowing us to prepare a personalized evacuation support plan where applicable.</p>', 4, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 1, 'medical_emergencies', 'Medical Emergency Guidance', '<p class=\"body-capped text-slate-600 mb-4\">For urgent or life-threatening medical emergencies, dial <strong>112</strong> immediately to access Lagos State health responders. For property-supported medical coordination:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Contact our guest support desk. Provide your name, unit number, and the nature of the emergency.</li>\n                               <li>Do not move an injured person unless they are in immediate physical danger (such as fire or structural collapse).</li>\n                               <li>A management-approved first aid box is located at the ground floor concierge desk for minor injuries.</li>\n                               <li>Nearest clinic or hospital information is listed under our location-specific safety profiles.</li>\n                           </ul>', 5, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(6, 1, 'security_incident_guidance', 'Security Incident Guidance', '<p class=\"body-capped text-slate-600 mb-4\">If you notice suspicious persons, threatening behavior, unauthorized entry attempts, or property theft:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Move to a secure, lockable room immediately.</li>\n                               <li>Contact the front desk or our dedicated security emergency number. In immediate danger, call <strong>112</strong>.</li>\n                               <li>Do not confront aggressive or suspicious individuals.</li>\n                               <li>Keep your smart lock code and gate access details strictly confidential.</li>\n                           </ul>', 6, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(7, 1, 'smart_lock_emergencies', 'Smart Lock & Access Emergencies', '<p class=\"body-capped text-slate-600 mb-4\">If your keyless smart lock code fails to unlock, or if you lose your physical back-up card:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Call the 24/7 guest support line or use the video doorbell intercom if available.</li>\n                               <li>For security purposes, our staff will verify your guest identity (matching registered pre-checkin details) before resetting access codes or granting physical key overrides.</li>\n                               <li>Access code logs are securely audited. Never share your room codes with external visitors.</li>\n                           </ul>', 7, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(8, 1, 'electrical_safety', 'Electrical & Power Safety', '<p class=\"body-capped text-slate-600 mb-4\">Our property features 24-hour power backed by stable inverter battery banks and soundproof backup generator networks. To ensure electrical safety:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Do not overload extension cords or wall sockets. Use only manufacturer-certified chargers.</li>\n                               <li>Do not tamper with distribution boards, inverters, backup batteries, solar panels, or generator panels.</li>\n                               <li>Switch off heavy high-draw appliances when not in active use.</li>\n                               <li>Report any sparking, socket heat, abnormal hum, or burning odor immediately.</li>\n                           </ul>', 8, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(9, 1, 'kitchen_cooking_safety', 'Kitchen & Cooking Safety', '<p class=\"body-capped text-slate-600 mb-4\">Our high-end kitchens feature modern cookers and appliances. Cooking must be supervised at all times:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Never leave stove burners, ovens, or microwaves running unattended.</li>\n                               <li>Keep flammable items (towels, napkins, plastic wraps) away from cooking hobs.</li>\n                               <li>Do not use charcoal, portable gas cylinders, or open-flame grills inside apartments.</li>\n                               <li>A fire blanket or extinguisher is available in the kitchen or corridor area where verified.</li>\n                           </ul>', 9, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(10, 1, 'balcony_outdoor_safety', 'Balcony, Seat-Out & Outdoor Safety', '<p class=\"body-capped text-slate-600 mb-4\">To ensure your safe enjoyment of outdoor areas and private balconies:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Do not sit on, stand on, or lean heavily over balcony railings.</li>\n                               <li>Children must be strictly supervised by an adult at all times in outdoor seating and balcony areas.</li>\n                               <li>Do not throw bottles, cigarettes, or rubbish off balconies or windows.</li>\n                               <li>Report any loose railings or unstable patio furniture immediately.</li>\n                           </ul>', 10, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(11, 1, 'water_leak_plumbing', 'Water Leak & Plumbing Response', '<p class=\"body-capped text-slate-600 mb-4\">Plumbing leaks can cause immediate damage and slip hazards. In the event of a water leak or blockage:</p>\n                           <ul class=\"list-disc pl-5 mb-4 space-y-2 body-capped text-slate-600\">\n                               <li>Turn off the localized shut-off valve under the sink or toilet if safe and instructed by maintenance.</li>\n                               <li>Move luggage, electronics, and valuable items away from water flow immediately.</li>\n                               <li>Avoid stepping in wet areas if electrical sockets or appliances are nearby.</li>\n                               <li>Report the leak immediately using our guest dashboard or WhatsApp support.</li>\n                           </ul>', 11, 1, 0, 0, 0, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `safety_information_versions`
--

CREATE TABLE `safety_information_versions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `safety_information_page_id` bigint(20) UNSIGNED NOT NULL,
  `version` varchar(255) NOT NULL,
  `changed_by` varchar(255) DEFAULT NULL,
  `change_notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `safety_information_versions`
--

INSERT INTO `safety_information_versions` (`id`, `safety_information_page_id`, `version`, `changed_by`, `change_notes`, `created_at`, `updated_at`) VALUES
(1, 1, '1.0', 'Kevron System Seeder', 'Initial deployment of management-approved safety guidance, priority emergency contacts, and compliance reporting frameworks.', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `safety_inspection_records`
--

CREATE TABLE `safety_inspection_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `location_id` bigint(20) UNSIGNED NOT NULL,
  `inspected_by` varchar(255) NOT NULL,
  `inspection_date` date NOT NULL,
  `findings` text DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'completed',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `safety_inspection_records`
--

INSERT INTO `safety_inspection_records` (`id`, `location_id`, `inspected_by`, `inspection_date`, `findings`, `status`, `created_at`, `updated_at`) VALUES
(1, 1, 'Kevron HSE Auditor', '2026-05-21', 'All fire doors checked and latching correctly. Emergency pathway lighting functional. Extinguisher seals fully intact.', 'completed', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `schema_metadata`
--

CREATE TABLE `schema_metadata` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `model_type` varchar(255) DEFAULT NULL,
  `model_id` bigint(20) UNSIGNED DEFAULT NULL,
  `schema_type` varchar(255) NOT NULL,
  `schema_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`schema_json`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `schema_metadata`
--

INSERT INTO `schema_metadata` (`id`, `model_type`, `model_id`, `schema_type`, `schema_json`, `created_at`, `updated_at`) VALUES
(1, 'Page', NULL, 'ItemList', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"ItemList\",\"name\":\"Luxury Apartments at Kevron Suites & Apartments\",\"numberOfItems\":4,\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"1 Bedroom Master Suite\",\"url\":\"https:\\/\\/kevronapartments.com\\/apartments\\/1-bedroom-master-suite-ikeja\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"2 Bedroom Luxury Apartment\",\"url\":\"https:\\/\\/kevronapartments.com\\/apartments\\/2-bedroom-luxury-apartment-ikeja\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"3 Bedroom Luxury Apartment\",\"url\":\"https:\\/\\/kevronapartments.com\\/apartments\\/3-bedroom-luxury-apartment-ikeja\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"4 Bedroom Luxury Apartment\",\"url\":\"https:\\/\\/kevronapartments.com\\/apartments\\/4-bedroom-luxury-apartment-ikeja\"}]}', '2026-06-04 11:23:00', '2026-06-04 11:23:15'),
(2, 'VirtualTour', NULL, 'WebPage', '{\"@@context\":\"https:\\/\\/schema.org\",\"@@type\":\"WebPage\",\"name\":\"3D Virtual Tour of Luxury Serviced Apartments in Ikeja | Kevron Suites\",\"description\":\"Explore Kevron Suites and Apartments in Adeniyi Jones, Ikeja through a 3D\\/360 virtual tour before booking.\",\"publisher\":{\"@@type\":\"LocalBusiness\",\"name\":\"Kevron Suites and Apartments\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/living-room.jpg\",\"address\":{\"@@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones, Ikeja\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}}}', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 'Gallery', NULL, 'ImageGallery', '{\"@@context\":\"https:\\/\\/schema.org\",\"@@type\":\"ImageGallery\",\"name\":\"Gallery of Luxury Serviced Apartments in Ikeja | Kevron Suites\",\"description\":\"Browse verified photos and walkthrough videos of Kevron Suites and Apartments in Adeniyi Jones, Ikeja, Lagos.\",\"url\":\"https:\\/\\/kevronapartments.com\\/gallery\",\"publisher\":{\"@@type\":\"LocalBusiness\",\"name\":\"Kevron Suites and Apartments\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/master-bedroom.jpg\",\"address\":{\"@@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones, Ikeja\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}}}', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 'AmenitiesPage', NULL, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Amenities and Facilities at Kevron Suites and Apartments, Ikeja\",\"description\":\"Details of luxury serviced apartment amenities in Adeniyi Jones, Ikeja, Lagos, including backup power, high-speed internet, kitchens, security, and transportation.\",\"url\":\"https:\\/\\/kevronapartments.com\\/amenities\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\/\\/kevronapartments.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Amenities\",\"item\":\"https:\\/\\/kevronapartments.com\\/amenities\"}]},\"about\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones, Ikeja\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"addressCountry\":\"Nigeria\"},\"amenityFeature\":[{\"@type\":\"LocationFeatureSpecification\",\"name\":\"24-Hour Power Supply\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"High-Speed Wi-Fi\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"Fully Equipped Kitchen\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"Smart Locks & Keyless Entry\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"Slate Snooker Table\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"PlayStation 5 Console\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"Airport Pickup & Chauffeur Services\",\"value\":true}]}}', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(5, 'GuestServicesPage', NULL, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Guest Services at Kevron Suites and Apartments, Ikeja\",\"description\":\"Dynamic page presenting guest services, check-ins, transport bookings, cleanings, and manuals at Kevron Suites in Adeniyi Jones.\",\"url\":\"https:\\/\\/kevronapartments.com\\/guest-services\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\/\\/kevronapartments.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guest Services\",\"item\":\"https:\\/\\/kevronapartments.com\\/guest-services\"}]},\"about\":{\"@type\":\"Service\",\"name\":\"Kevron Guest Concierge Services\",\"provider\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\"},\"offers\":[{\"@type\":\"Offer\",\"itemOffered\":\"Airport Pickup Coordination\"},{\"@type\":\"Offer\",\"itemOffered\":\"Digital Pre-Checkin\"},{\"@type\":\"Offer\",\"itemOffered\":\"Chauffeur Car Rental\"},{\"@type\":\"Offer\",\"itemOffered\":\"On-Demand Housekeeping\"},{\"@type\":\"Offer\",\"itemOffered\":\"Smart Lock & Wi-Fi Manuals\"}]}}', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(6, 'AirportPickupCarRentalPage', NULL, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Airport Pickup and Car Rental in Ikeja | Kevron Suites\",\"description\":\"Dedicated page presenting airport pickups and executive car hire services at Kevron Suites and Apartments in Adeniyi Jones.\",\"url\":\"https:\\/\\/kevronapartments.com\\/airport-pickup-car-rental\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\/\\/kevronapartments.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Airport Pickup & Car Rental\",\"item\":\"https:\\/\\/kevronapartments.com\\/airport-pickup-car-rental\"}]},\"about\":{\"@type\":\"Service\",\"name\":\"Kevron Airport Transit & Car Hire\",\"provider\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\"},\"offers\":[{\"@type\":\"Offer\",\"itemOffered\":\"MM1 Local Airport Pickup\"},{\"@type\":\"Offer\",\"itemOffered\":\"MM2 Local Airport Pickup\"},{\"@type\":\"Offer\",\"itemOffered\":\"Murtala Muhammed International Airport Pickup\"},{\"@type\":\"Offer\",\"itemOffered\":\"Chauffeur-Driven Car Rental\"}]}}', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(7, 'CorporateStaysPage', NULL, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Corporate Serviced Apartments in Ikeja | Kevron Suites\",\"description\":\"Corporate stays booking page presenting executive accommodation, company billing options, and group booking requests at Kevron Suites and Apartments.\",\"url\":\"https:\\/\\/kevronapartments.com\\/corporate-stays\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\/\\/kevronapartments.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Corporate Stays\",\"item\":\"https:\\/\\/kevronapartments.com\\/corporate-stays\"}]},\"about\":{\"@type\":\"Service\",\"name\":\"Kevron Corporate Accommodation & Serviced Stays\",\"provider\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\"},\"offers\":[{\"@type\":\"Offer\",\"itemOffered\":\"Executive 1 Bedroom Master Suite stays\"},{\"@type\":\"Offer\",\"itemOffered\":\"Corporate Group Bookings\"},{\"@type\":\"Offer\",\"itemOffered\":\"Company Invoice Billing Account Setup\"},{\"@type\":\"Offer\",\"itemOffered\":\"Airport Pickup Add-on\"},{\"@type\":\"Offer\",\"itemOffered\":\"Long-Stay and Expatriate Relocation Packages\"}]}}', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(8, 'LongStayPage', NULL, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Long-Stay Serviced Apartments in Ikeja | Kevron Suites\",\"description\":\"Request weekly or monthly serviced apartments at Kevron Suites and Apartments, Adeniyi Jones, Ikeja Lagos.\",\"url\":\"https:\\/\\/kevronapartments.com\\/long-stay-serviced-apartments-ikeja\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\/\\/kevronapartments.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Long Stays\",\"item\":\"https:\\/\\/kevronapartments.com\\/long-stay-serviced-apartments-ikeja\"}]},\"about\":{\"@type\":\"Service\",\"name\":\"Kevron Serviced Apartment Long-Stays & Extended Stays\",\"provider\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones, Ikeja\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}}}}', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(9, 'NeighbourhoodGuidePage', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Location Guide to Adeniyi Jones, Ikeja | Kevron Suites\",\"description\":\"Discover Kevron Suites and Apartments in Adeniyi Jones, Ikeja, with easy access to MM1, MM2, Murtala Muhammed International Airport, Ikeja City Mall, eateries, event centres and airport pickup support.\",\"url\":\"https:\\/\\/kevronapartments.com\\/location-neighbourhood-guide-ikeja\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\/\\/kevronapartments.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Location Guide\",\"item\":\"https:\\/\\/kevronapartments.com\\/location-neighbourhood-guide-ikeja\"}]},\"about\":{\"@type\":\"Place\",\"name\":\"Adeniyi Jones, Ikeja, Lagos, Nigeria\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":\"6.601234\",\"longitude\":\"3.351234\"}}}', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(10, 'SecuritySmartLivingPage', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Security and Smart Living at Kevron Suites, Ikeja\",\"description\":\"Details about security, controlled access, smart locks, visitor policies, and local support guidelines at Kevron Suites and Apartments.\",\"url\":\"https:\\/\\/kevronapartments.com\\/security-smart-living\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"Nigeria\"}}}', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(11, 'SustainabilityPage', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Sustainability at Kevron Suites and Apartments, Ikeja\",\"description\":\"Details about energy efficiency, responsible utility use, modern en-suite appliances, guest conservation guidelines, and future greener plans at Kevron Suites and Apartments.\",\"url\":\"https:\\/\\/kevronapartments.com\\/sustainability\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"Nigeria\"}}}', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(12, 'ReviewsPage', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Reviews and Testimonials | Kevron Suites and Apartments, Ikeja\",\"description\":\"Genuine approved guest feedback, ratings and experiences at Kevron Suites and Apartments, Adeniyi Jones, Ikeja, Lagos.\",\"url\":\"https:\\/\\/kevronapartments.com\\/reviews\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"Nigeria\"}}}', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(13, 'FaqsPage', 1, 'FAQPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How do I book an apartment?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"You can secure your booking directly through our secure online reservation portal by navigating to the booking page. Alternatively, you can contact our reservation desk via telephone or WhatsApp. Confirmation is immediate once payment is processed and verified.\"}},{\"@type\":\"Question\",\"name\":\"What payment methods are accepted?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"We accept direct bank transfers, credit\\/debit cards (via our secure online gateway, where configured), and corporate payment platforms. Please note that all payments must clear in our bank account before keys are issued.\"}},{\"@type\":\"Question\",\"name\":\"What time is check-in and check-out?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Our standard check-in time is from 2:00 PM, and standard check-out is by 12:00 PM (noon). Early check-in or late check-out is subject to availability and prior management approval.\"}},{\"@type\":\"Question\",\"name\":\"Is there 24-hour power and Wi-Fi?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, we provide uninterrupted 24-hour power backup supported by solar systems, soundproof backup generators, and inverter setups. Complimentary high-speed fiber-optic Wi-Fi is active throughout the entire building.\"}}]}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(14, 'App\\Models\\BlogPost', 2, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Best Places to Stay in Ikeja, Lagos: A Guide for Short-Stay Guests\",\"description\":\"Explore the premier locations, accessibility hubs, and luxury serviced suites tailored for temporary visitors in Ikeja.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/master-bedroom.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(15, 'App\\Models\\BlogPost', 3, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Where to Stay Near MM1 and MM2 Lagos Airport\",\"description\":\"A detailed guide comparing airport hotels and executive serviced suites located just minutes from Murtala Muhammed Airport.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/bedroom.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(16, 'App\\Models\\BlogPost', 4, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Why Adeniyi Jones, Ikeja Is Convenient for Lagos Airport Travellers\",\"description\":\"Understand the geographical advantages, traffic flow patterns, and security perimeter that make Adeniyi Jones a prime airport travel base.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/living-room.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(17, 'App\\Models\\BlogPost', 5, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Why Serviced Apartments Are Ideal for Business Travellers in Lagos\",\"description\":\"Discover why executive travelers choose fully serviced apartments over standard hotel rooms to maximize productivity and space.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/kitchen.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(18, 'App\\Models\\BlogPost', 6, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Best Family-Friendly Serviced Apartments in Ikeja\",\"description\":\"A comprehensive review of spacious, safe, and entertaining multi-bedroom serviced residences for families visiting Lagos.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/bedroom-2.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(19, 'App\\Models\\BlogPost', 7, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Luxury Staycation Ideas in Lagos for Couples and Families\",\"description\":\"Plan the ultimate stress-free staycation right in the heart of Ikeja, complete with premium in-suite leisure and dining.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/bedroom-3.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(20, 'App\\Models\\BlogPost', 8, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"How Companies Can Book Serviced Apartments for Staff in Ikeja\",\"description\":\"A step-by-step corporate booking guide for HR, admin, and procurement managers looking for staff accommodation solutions.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/living-room-2.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(21, 'App\\Models\\BlogPost', 9, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Corporate Accommodation in Lagos: What Companies Should Consider\",\"description\":\"Key metrics including internet speed, physical security, location transit, and billing transparency for business lodging.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/living-room-3.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(22, 'App\\Models\\BlogPost', 10, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Things to Do Near Adeniyi Jones and Ikeja City Mall\",\"description\":\"Discover the best luxury dining, high-end shopping, cinema entertainment, and local hotspots near Adeniyi Jones.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(23, 'App\\Models\\BlogPost', 11, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"How to Choose a Secure Serviced Apartment in Lagos\",\"description\":\"Essential security checks including smart door locks, perimeter safety, CCTV coverage, and neighbor proximity for travelers.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/bedroom-4.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(24, 'App\\Models\\BlogPost', 12, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Weekly and Monthly Serviced Apartments in Ikeja: What to Know\",\"description\":\"A guide to long-stay bookings, utility management, housekeeping schedules, and discounts for extended stays.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/bedroom-5.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(25, 'App\\Models\\BlogPost', 13, 'Article', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Airport Pickup and Car Rental for Serviced Apartment Guests in Lagos\",\"description\":\"Learn how to coordinate secure airport pickups and rent luxury vehicles with professional drivers for a hassle-free visit.\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/bedroom-6.jpg\",\"datePublished\":\"2026-06-04T12:23:04+01:00\",\"dateModified\":\"2026-06-04T12:23:04+01:00\",\"author\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/kevronapartments.com\\/pictures\\/dining.jpg\"}}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(26, 'BlogIndexPage', NULL, 'Blog', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"Blog\",\"name\":\"Kevron Suites and Apartments Blog & City Guide\",\"description\":\"Kevron Suites and Apartments publishes city guides and accommodation articles for guests considering serviced apartments in Adeniyi Jones, Ikeja, Lagos, including airport stay guides, business travel advice, family stay guidance, corporate accommodation information, local attraction guides and safety-comfort tips.\",\"url\":\"https:\\/\\/kevronapartments.com\\/blog\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Kevron Suites and Apartments\"}}', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(27, 'AboutPage', NULL, 'AboutPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"AboutPage\",\"name\":\"About Kevron Suites and Apartments\",\"description\":\"Kevron Suites and Apartments is a premium serviced-apartment brand starting from Adeniyi Jones, Ikeja, Lagos, offering luxury 1, 2, 3 and 4 bedroom serviced apartments with smart living, guest support, airport access and future expansion.\",\"url\":\"https:\\/\\/kevronapartments.com\\/about\",\"mainEntity\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"description\":\"Premium serviced apartments brand in Adeniyi Jones, Ikeja, Lagos.\",\"url\":\"https:\\/\\/kevronapartments.com\",\"telephone\":\"+2348131632926\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}}}', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(28, 'ContactPage', NULL, 'ContactPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"ContactPage\",\"name\":\"Contact Kevron Suites and Apartments\",\"description\":\"Contact details for serviced en-suite accommodation at Adeniyi Jones, Ikeja.\",\"url\":\"https:\\/\\/kevronapartments.com\\/contact\",\"mainEntity\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones, Ikeja \\/ No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"},\"telephone\":\"+2348131632926\",\"email\":\"info@kevronapartments.com\",\"priceRange\":\"\\u20a6150,000 - \\u20a6300,000\"}}', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(29, 'App\\Models\\PrivacyPolicy', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Kevron Suites and Apartments Privacy Policy\",\"description\":\"Read the Kevron Suites and Apartments Privacy Policy to learn how personal data is collected, used, stored, shared and protected.\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"url\":\"https:\\/\\/kevronapartments.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}},\"mainEntity\":{\"@type\":\"Legislation\",\"name\":\"Kevron Suites and Apartments Privacy Policy\",\"legislationType\":\"PrivacyPolicy\"}}', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(30, 'HouseRulesPolicy', 1, 'Legislation', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"House Rules | Kevron Suites and Apartments\",\"description\":\"Read the House Rules for Kevron Suites and Apartments, including guest conduct, visitors, noise, smoking, pets, smart access, property care, damages, security deposits, fire safety, check-in, checkout and guest responsibilities.\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"url\":\"https:\\/\\/kevronapartments.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}},\"mainEntity\":{\"@type\":\"Legislation\",\"name\":\"Kevron Suites and Apartments House Rules\",\"legislationType\":\"HouseRules\"}}', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(31, 'PaymentPolicy', 1, 'Legislation', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Payment Policy | Kevron Suites and Apartments\",\"description\":\"Read the Payment Policy for Kevron Suites and Apartments, including accepted payment methods, deposits, bank transfers, online gateway payments, invoices, receipts, security deposits and payment support.\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"url\":\"https:\\/\\/kevronapartments.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}},\"mainEntity\":{\"@type\":\"Legislation\",\"name\":\"Kevron Suites and Apartments Payment Policy\",\"legislationType\":\"PaymentPolicy\"}}', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(32, 'DamageDepositPolicy', 1, 'Legislation', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Damage and Security Deposit Policy | Kevron Suites and Apartments\",\"description\":\"Read our Damage and Security Deposit Policy, including check-in\\/out inspections, physical property damage, missing inventory items, excessive cleaning, and dispute handling.\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"url\":\"https:\\/\\/kevronapartments.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}},\"mainEntity\":{\"@type\":\"Legislation\",\"name\":\"Kevron Suites and Apartments Damage and Security Deposit Policy\",\"legislationType\":\"DamageDepositPolicy\"}}', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(33, 'App\\Models\\GuestIdentificationPolicy', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Kevron Suites and Apartments Guest Identification Policy\",\"description\":\"Official Guest Identification Policy explaining check-in verification, ID uploads, and privacy standards at Adeniyi Jones, Ikeja, Lagos.\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"url\":\"https:\\/\\/kevronapartments.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"}},\"mainEntity\":{\"@type\":\"Legislation\",\"name\":\"Kevron Suites and Apartments Guest Identification Policy\",\"legislationType\":\"PrivacyPolicy\"}}', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(34, 'App\\Models\\SafetyInformationPage', 1, 'WebPage', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"WebPage\",\"name\":\"Safety and Emergency Information\",\"description\":\"Safety and Emergency Information for guests staying in luxury serviced apartments at Adeniyi Jones, Ikeja, Lagos.\",\"publisher\":{\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"url\":\"https:\\/\\/kevronapartments.com\"}}', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(35, 'HomePage', NULL, 'LodgingBusiness', '{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"LodgingBusiness\",\"name\":\"Kevron Suites and Apartments\",\"description\":\"Luxury serviced-apartment brand in Lagos, Nigeria offering 1, 2, 3, and 4 bedroom en-suite suites with premium comfort.\",\"url\":\"https:\\/\\/kevronapartments.com\",\"telephone\":\"+2348131632926\",\"image\":\"https:\\/\\/kevronapartments.com\\/pictures\\/master-bedroom.jpg\",\"priceRange\":\"\\u20a6150000 - \\u20a6300000\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"7B Regina Coker Street, Adeniyi Jones \\/ No. 8 Ogunlowo Street, Adeniyi Jones\",\"addressLocality\":\"Ikeja\",\"addressRegion\":\"Lagos\",\"postalCode\":\"100271\",\"addressCountry\":\"NG\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":6.601234,\"longitude\":3.351234},\"amenityFeature\":[{\"@type\":\"LocationFeatureSpecification\",\"name\":\"24-Hour Power Supply\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"High-Speed Wi-Fi\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"Keyless Smart Locks\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"Professional Snooker Table\",\"value\":true},{\"@type\":\"LocationFeatureSpecification\",\"name\":\"PlayStation 5 Console\",\"value\":true}]}', '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `search_index_items`
--

CREATE TABLE `search_index_items` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL,
  `category` varchar(255) NOT NULL,
  `keywords` text DEFAULT NULL,
  `description` text DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `search_index_items`
--

INSERT INTO `search_index_items` (`id`, `title`, `url`, `category`, `keywords`, `description`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Home', '/', 'page', 'home, index, main, lounge, suites', 'Welcome to Kevron Suites & Apartments Adeniyi Jones.', 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(2, 'Apartments List', '/apartments', 'apartment', 'suites, bedrooms, kitchen, stay, price', 'Compare 1, 2, 3 and 4 bedroom options.', 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(3, '3D Virtual Tour', '/virtual-tour', 'page', '3d, tour, panoramic, visual, lounge', 'Interactive virtual walkthrough of our premises.', 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(4, 'Accessibility Statement', '/accessibility-statement', 'policy', 'accessibility, a11y, handicap, wheelchair, support', 'Our commitment to digital accessibility for all guests.', 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(5, 'Safety and Emergency', '/safety-emergency-information', 'policy', 'safety, emergency, assembly point, medical, police', 'HSE emergency and fire response plans.', 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(6, 'House Rules', '/house-rules', 'policy', 'rules, smoking, pets, checkin, checkout', 'Guest stay guidelines and regulations.', 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `search_logs`
--

CREATE TABLE `search_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `check_in` date DEFAULT NULL,
  `check_out` date DEFAULT NULL,
  `apartment_type` varchar(255) DEFAULT NULL,
  `guests_count` int(11) DEFAULT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `security_access_rules`
--

CREATE TABLE `security_access_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `cctv_common_areas` tinyint(1) NOT NULL DEFAULT 1,
  `smart_lock_entry` tinyint(1) NOT NULL DEFAULT 1,
  `code_sharing_prohibited` tinyint(1) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `security_access_rules`
--

INSERT INTO `security_access_rules` (`id`, `cctv_common_areas`, `smart_lock_entry`, `code_sharing_prohibited`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `security_deposit_transactions`
--

CREATE TABLE `security_deposit_transactions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `amount_collected` decimal(12,2) NOT NULL DEFAULT 0.00,
  `amount_deducted` decimal(12,2) NOT NULL DEFAULT 0.00,
  `amount_refunded` decimal(12,2) NOT NULL DEFAULT 0.00,
  `balance_due_to_guest` decimal(12,2) NOT NULL DEFAULT 0.00,
  `status` varchar(255) NOT NULL DEFAULT 'collected',
  `payment_id` int(11) DEFAULT NULL,
  `refund_transaction_id` int(11) DEFAULT NULL,
  `collected_at` timestamp NULL DEFAULT NULL,
  `refunded_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `security_features`
--

CREATE TABLE `security_features` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `guest_benefit` text NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `media_id` bigint(20) UNSIGNED DEFAULT NULL,
  `visibility` varchar(255) NOT NULL DEFAULT 'public',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `security_features`
--

INSERT INTO `security_features` (`id`, `title`, `slug`, `description`, `guest_benefit`, `icon`, `media_id`, `visibility`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Keyless Entry & Smart Locks', 'keyless-entry-smart-locks', 'Controlled keyless deadbolts on each apartment door with unique, temporary access codes rotated automatically after each checkout.', 'Eliminates traditional key hassles and physical handovers while maintaining secure access privileges.', 'key', NULL, 'public', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Common Access CCTV Coverage', 'cctv-coverage', 'Closed-circuit television monitoring of key entrance gates, perimeters, corridors, and exterior access points.', 'Supports security-managed premises monitoring of shared access zones. CCTV strictly excludes private apartment bedrooms or living suites.', 'eye', NULL, 'public', 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Smart Intercoms & Video Doorbells', 'smart-intercoms-video-doorbells', 'Smart video doorbells installed at apartment entrances allowing guests to verify and communicate with visitors before opening doors.', 'Ensures guests remain in control of their suite environment with direct real-time communication.', 'bell', NULL, 'public', 1, 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 'Visitor Management Protocols', 'visitor-management', 'Controlled visitor policy requiring visitor logs, pre-registration by hosts, and observance of quiet hours.', 'Protects building tranquility, reduces unauthorized facility access, and ensures a peaceful, family-friendly stay.', 'users', NULL, 'public', 1, 4, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(5, 'Controlled Facility Access', 'controlled-facility-access', 'Security personnel coordinate arrivals, vehicle parking, and credential checking at the main gates.', 'Provides organized facility movement and coordinated arrivals for ultimate comfort.', 'shield', NULL, 'public', 1, 5, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(6, 'Nearby Local Security Support', 'nearby-police-station', 'Positioned approximately 3 minutes from Memabod Police Station, subject to traffic parameters.', 'Immediate nearby local security support division within reach of the facility.', 'map-pin', NULL, 'public', 1, 6, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(7, 'Guest Safety Information Guides', 'guest-safety-information', 'A factual safety directory covering emergency contacts, check-in bounds, house rules, and secure facility access instructions.', 'Keeps guests informed with clear, actionable safety resources without causing unnecessary alarm.', 'info', NULL, 'public', 1, 7, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `seo_metadata`
--

CREATE TABLE `seo_metadata` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `model_type` varchar(255) DEFAULT NULL,
  `model_id` bigint(20) UNSIGNED DEFAULT NULL,
  `meta_title` varchar(255) NOT NULL,
  `meta_description` text NOT NULL,
  `og_title` varchar(255) DEFAULT NULL,
  `og_description` text DEFAULT NULL,
  `og_image` varchar(255) DEFAULT NULL,
  `twitter_card` varchar(255) DEFAULT NULL,
  `canonical_url` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `seo_metadata`
--

INSERT INTO `seo_metadata` (`id`, `model_type`, `model_id`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `twitter_card`, `canonical_url`, `created_at`, `updated_at`) VALUES
(1, 'Page', NULL, 'Short-Let Apartments in Ikeja Lagos | Kevron Suites and Apartments', 'Book premium serviced short-let apartments in Adeniyi Jones, Ikeja, Lagos. Fully furnished en-suite suites with 24-hour power, Wi-Fi, snooker, and airport transit.', 'Furnished Short-Let Apartments in Ikeja, Lagos | Kevron Suites', 'Compare and book luxury 1, 2, 3 and 4 bedroom en-suite serviced apartments featuring 24-hour power, high-speed Wi-Fi, and smart security locks.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/apartments', '2026-06-04 11:23:00', '2026-06-04 11:23:15'),
(2, 'App\\Models\\ApartmentType', 1, '1 Bedroom Master Suite in Ikeja, Lagos | Kevron Suites', 'Perfect for solo executives or couples seeking premium luxury. Features a king-sized master bedroom, contemporary en-suite quarters, high-speed Wi-Fi, air ', '1 Bedroom Master Suite | Kevron Suites & Apartments', 'Perfect for solo executives or couples seeking premium luxury. Features a king-sized master bedroom, contemporary en-suite quarters, high-speed Wi-Fi, air ', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/apartments/1-bedroom-master-suite-ikeja', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'App\\Models\\ApartmentType', 2, '2 Bedroom Luxury Apartment in Ikeja, Lagos | Kevron Suites', 'Ideal for business teams, staycations, or small families. Offers two elegant en-suite bedrooms, a spacious living area with luxurious seating, private balc', '2 Bedroom Luxury Apartment | Kevron Suites & Apartments', 'Ideal for business teams, staycations, or small families. Offers two elegant en-suite bedrooms, a spacious living area with luxurious seating, private balc', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/apartments/2-bedroom-luxury-apartment-ikeja', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 'App\\Models\\ApartmentType', 3, '3 Bedroom Luxury Apartment in Ikeja, Lagos | Kevron Suites', 'Uncompromising hospitality for larger families or corporate groups. Features three expansive en-suite bedrooms, massive open-concept living and dining area', '3 Bedroom Luxury Apartment | Kevron Suites & Apartments', 'Uncompromising hospitality for larger families or corporate groups. Features three expansive en-suite bedrooms, massive open-concept living and dining area', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/apartments/3-bedroom-luxury-apartment-ikeja', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 'App\\Models\\ApartmentType', 4, '4 Bedroom Luxury Apartment in Ikeja, Lagos | Kevron Suites', 'The ultimate luxury serviced residence in Ikeja. Spans four spectacular en-suite master bedrooms, highly artistic living rooms, fully loaded gourmet kitche', '4 Bedroom Luxury Apartment | Kevron Suites & Apartments', 'The ultimate luxury serviced residence in Ikeja. Spans four spectacular en-suite master bedrooms, highly artistic living rooms, fully loaded gourmet kitche', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/apartments/4-bedroom-luxury-apartment-ikeja', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 'ComparePage', NULL, 'Compare Luxury Apartments in Ikeja | Kevron Suites and Apartments', 'Compare 1, 2, 3 and 4 bedroom luxury serviced apartments at Kevron Suites and Apartments, Adeniyi Jones, Ikeja, Lagos. Review prices, amenities, best-use options and book the right apartment for your stay.', 'Compare Serviced Suites in Adeniyi Jones | Kevron Apartments', 'Side-by-side comparison of en-suite space, PS5 consoles, snooker access, and corporate pricing rules.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/compare-apartments', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(7, 'VirtualTour', NULL, '3D Virtual Tour of Luxury Serviced Apartments in Ikeja', 'Explore Kevron Suites and Apartments in Adeniyi Jones, Ikeja through a 3D/360 virtual tour. Preview luxury apartment interiors, bedrooms, kitchen, balconies, PS5, snooker, smart security and guest amenities before booking.', '3D Virtual Tour of Luxury Serviced Apartments in Ikeja | Kevron Suites', 'Take an interactive 3D/360 virtual walk inside our premium Adeniyi Jones enclaves. Explore smart en-suite lounge, gourmet kitchen, snooker arena, and bedrooms before booking.', 'pictures/living-room.jpg', 'summary_large_image', 'https://kevronapartments.com/virtual-tour', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(8, 'Gallery', NULL, 'Gallery of Luxury Serviced Apartments in Ikeja | Kevron Apartments', 'View photos, videos and visual previews of Kevron Suites and Apartments in Adeniyi Jones, Ikeja, Lagos. Explore bedrooms, living areas, kitchen, balconies, PS5, snooker, smart security and guest amenities.', 'Gallery of Luxury Serviced Apartments in Ikeja | Kevron Suites', 'Browse verified high-resolution photography and cinematic video tours of our Adeniyi Jones enclaves. Preview en-suite bedrooms, fitted quartz kitchens, and security details.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/gallery', '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(9, 'AmenitiesPage', NULL, 'Amenities and Facilities at Kevron Suites and Apartments, Ikeja', 'Explore premium amenities at Kevron Suites and Apartments in Adeniyi Jones, Ikeja, Lagos. Enjoy 24-hour backup power, fast Wi-Fi, fully fitted kitchens, private laundry, smart locks, CCTV, PS5, snooker, airport pickups, and dedicated guest concierge.', 'Luxury Serviced Apartment Amenities in Ikeja, Lagos | Kevron Suites', 'Enjoy comfort, convenience and smart living. Discover en-suite split ACs, fully fitted kitchens, keyless entries, slate snookers, and airport pickups at Kevron.', 'pictures/kitchen.jpg', 'summary_large_image', 'https://kevronapartments.com/amenities', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(10, 'GuestServicesPage', NULL, 'Guest Services at Kevron Suites and Apartments, Ikeja', 'Request guest services at Kevron Suites and Apartments in Adeniyi Jones, Ikeja, including airport pickup, rented car support, WhatsApp concierge, digital check-in, housekeeping, maintenance support, guest manual and repeat-stay offers.', 'Premium Serviced Guest Concierge in Ikeja, Lagos | Kevron Suites', 'Enjoy effortless serviced stays. Coordinate flight pickups, digital check-ins, housekeeping calls, maintenance engineers, and returning guest loyalty deals.', 'pictures/bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/guest-services', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(11, 'AirportPickupCarRentalPage', NULL, 'Airport Pickup and Car Rental in Ikeja | Kevron Suites', 'Request airport pickup from MM1, MM2 or Murtala Muhammed International Airport and car-rental support for your stay at Kevron Suites and Apartments, Adeniyi Jones, Ikeja, Lagos.', 'Airport Pickup & Car Rental Services | Kevron Apartments', 'Premium airport pickup and security car rental with driver for your luxury stay in Adeniyi Jones, Ikeja, Lagos.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/airport-pickup-car-rental', '2026-06-04 11:23:02', '2026-06-04 11:23:15'),
(12, 'CorporateStaysPage', NULL, 'Corporate Serviced Apartments in Ikeja, Lagos | Kevron Stays', 'Secure luxury corporate serviced apartments in Adeniyi Jones, Ikeja for consultants, training teams, and executives. 24h power, high-speed Wi-Fi, and airport pickup.', 'Corporate B2B Stays | Kevron Suites & Apartments', 'Host your executives, training delegates, and consultants in luxury en-suite apartments at Adeniyi Jones, Ikeja. Stable power, fast internet, keyless locks.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/corporate-stays', '2026-06-04 11:23:02', '2026-06-04 11:23:15'),
(13, 'LongStayPage', NULL, 'Long-Stay Serviced Apartments in Ikeja | Kevron Suites', 'Request weekly or monthly serviced apartments at Kevron Suites and Apartments, Adeniyi Jones, Ikeja Lagos. Uninterrupted power, high-speed Wi-Fi, snooker & PS5.', 'Long & Extended Stays | Kevron Suites & Apartments', 'Weekly and monthly executive en-suite serviced apartments in Adeniyi Jones, Ikeja, Lagos. Uninterrupted power, high-speed Wi-Fi, full concierge.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/long-stay-serviced-apartments-ikeja', '2026-06-04 11:23:02', '2026-06-04 11:23:15'),
(14, 'Page', NULL, 'Offers and Packages at Kevron Suites and Apartments, Ikeja', 'Explore current packages at Kevron Suites and Apartments, Adeniyi Jones, Ikeja, including weekend stays, long-stay discounts, corporate packages, airport pickup, family stays, and loyalty deals.', 'Offers and Packages | Kevron Suites and Apartments', 'Explore premium serviced apartment stays and seasonal packages in the heart of Adeniyi Jones, Ikeja, Lagos.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/offers', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(15, 'OffersDetailPage', NULL, 'Weekend Escape Staycation in Ikeja | Kevron Suites', 'Book your premium weekend retreat at Adeniyi Jones, Ikeja. Guaranteed 24-hour power, Wi-Fi, modern kitchen, laundry, and snooker board access.', 'Weekend Escape Staycation | Kevron Suites', 'Enjoy an exclusive weekend retreat in Adeniyi Jones, Ikeja, Lagos.', 'pictures/living-room.jpg', 'summary_large_image', 'https://kevronapartments.com/offers/weekend-escape-staycation', '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(16, 'NeighbourhoodGuidePage', 1, 'Location Guide to Adeniyi Jones, Ikeja | Kevron Suites', 'Discover Kevron Suites and Apartments in Adeniyi Jones, Ikeja, with easy access to MM1, MM2, Murtala Muhammed International Airport, Ikeja City Mall, eateries, event centres and airport pickup support.', 'Location Guide to Adeniyi Jones, Ikeja | Kevron Suites', 'Discover Kevron Suites and Apartments in Adeniyi Jones, Ikeja, with easy access to MM1, MM2, Murtala Muhammed International Airport, Ikeja City Mall, eateries, event centres and airport pickup support.', 'pictures/living-room.jpg', 'summary_large_image', 'https://kevronapartments.com/location-neighbourhood-guide-ikeja', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(17, 'SecuritySmartLivingPage', 1, 'Security and Smart Living at Kevron Suites, Ikeja', 'Learn about security and smart-living features at Kevron Suites and Apartments, Adeniyi Jones, Ikeja, including smart locks, CCTV coverage, intercom/video doorbells, visitor management, controlled facility access and guest safety information.', NULL, NULL, NULL, NULL, 'https://kevronapartments.com/security-smart-living', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(18, 'SustainabilityPage', 1, 'Sustainability at Kevron Suites and Apartments, Ikeja', 'Learn about sustainability at Kevron Suites and Apartments in Adeniyi Jones, Ikeja, including LED lighting, energy-conscious appliances, responsible power and water use, guest guidance and future greener operations planning.', NULL, NULL, NULL, NULL, 'https://kevronapartments.com/sustainability', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(19, 'ReviewsPage', 1, 'Reviews and Testimonials | Kevron Suites and Apartments, Ikeja', 'Read guest reviews and testimonials for Kevron Suites and Apartments, Adeniyi Jones, Ikeja. See feedback on cleanliness, comfort, location, security, service and value, or leave a review after checkout.', NULL, NULL, NULL, NULL, 'https://kevronapartments.com/reviews', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(20, 'FaqsPage', 1, 'FAQs | Kevron Suites and Apartments, Ikeja', 'Find answers to common questions about Kevron Suites and Apartments, Adeniyi Jones, Ikeja, including booking, payment, check-in, cancellation, location, security, amenities, airport pickup, house rules, long stays and corporate bookings.', NULL, NULL, NULL, NULL, 'https://kevronapartments.com/faqs', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(21, 'App\\Models\\BlogPost', 2, 'Best Places to Stay in Ikeja, Lagos: A Guide for Short-Stay Guests | Kevron Suites Guide', 'Explore the premier locations, accessibility hubs, and luxury serviced suites tailored for temporary visitors in Ikeja.', 'Best Places to Stay in Ikeja, Lagos: A Guide for Short-Stay Guests', 'Explore the premier locations, accessibility hubs, and luxury serviced suites tailored for temporary visitors in Ikeja.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/best-places-to-stay-in-ikeja-lagos-short-stay-guide', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(22, 'App\\Models\\BlogPost', 3, 'Where to Stay Near MM1 and MM2 Lagos Airport | Kevron Suites Guide', 'A detailed guide comparing airport hotels and executive serviced suites located just minutes from Murtala Muhammed Airport.', 'Where to Stay Near MM1 and MM2 Lagos Airport', 'A detailed guide comparing airport hotels and executive serviced suites located just minutes from Murtala Muhammed Airport.', 'pictures/bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/where-to-stay-near-mm1-and-mm2-lagos-airport', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(23, 'App\\Models\\BlogPost', 4, 'Why Adeniyi Jones, Ikeja Is Convenient for Lagos Airport Travellers | Kevron Suites Guide', 'Understand the geographical advantages, traffic flow patterns, and security perimeter that make Adeniyi Jones a prime airport travel base.', 'Why Adeniyi Jones, Ikeja Is Convenient for Lagos Airport Travellers', 'Understand the geographical advantages, traffic flow patterns, and security perimeter that make Adeniyi Jones a prime airport travel base.', 'pictures/living-room.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/why-adeniyi-jones-ikeja-convenient-airport-travellers', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(24, 'App\\Models\\BlogPost', 5, 'Why Serviced Apartments Are Ideal for Business Travellers in Lagos | Kevron Suites Guide', 'Discover why executive travelers choose fully serviced apartments over standard hotel rooms to maximize productivity and space.', 'Why Serviced Apartments Are Ideal for Business Travellers in Lagos', 'Discover why executive travelers choose fully serviced apartments over standard hotel rooms to maximize productivity and space.', 'pictures/kitchen.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/why-serviced-apartments-are-ideal-for-business-travellers', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(25, 'App\\Models\\BlogPost', 6, 'Best Family-Friendly Serviced Apartments in Ikeja | Kevron Suites Guide', 'A comprehensive review of spacious, safe, and entertaining multi-bedroom serviced residences for families visiting Lagos.', 'Best Family-Friendly Serviced Apartments in Ikeja', 'A comprehensive review of spacious, safe, and entertaining multi-bedroom serviced residences for families visiting Lagos.', 'pictures/bedroom-2.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/best-family-friendly-serviced-apartments-ikeja', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(26, 'App\\Models\\BlogPost', 7, 'Luxury Staycation Ideas in Lagos for Couples and Families | Kevron Suites Guide', 'Plan the ultimate stress-free staycation right in the heart of Ikeja, complete with premium in-suite leisure and dining.', 'Luxury Staycation Ideas in Lagos for Couples and Families', 'Plan the ultimate stress-free staycation right in the heart of Ikeja, complete with premium in-suite leisure and dining.', 'pictures/bedroom-3.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/luxury-staycation-ideas-in-lagos-couples-families', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(27, 'App\\Models\\BlogPost', 8, 'How Companies Can Book Serviced Apartments for Staff in Ikeja | Kevron Suites Guide', 'A step-by-step corporate booking guide for HR, admin, and procurement managers looking for staff accommodation solutions.', 'How Companies Can Book Serviced Apartments for Staff in Ikeja', 'A step-by-step corporate booking guide for HR, admin, and procurement managers looking for staff accommodation solutions.', 'pictures/living-room-2.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/how-companies-book-serviced-apartments-staff-ikeja', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(28, 'App\\Models\\BlogPost', 9, 'Corporate Accommodation in Lagos: What Companies Should Consider | Kevron Suites Guide', 'Key metrics including internet speed, physical security, location transit, and billing transparency for business lodging.', 'Corporate Accommodation in Lagos: What Companies Should Consider', 'Key metrics including internet speed, physical security, location transit, and billing transparency for business lodging.', 'pictures/living-room-3.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/corporate-accommodation-lagos-what-companies-consider', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(29, 'App\\Models\\BlogPost', 10, 'Things to Do Near Adeniyi Jones and Ikeja City Mall | Kevron Suites Guide', 'Discover the best luxury dining, high-end shopping, cinema entertainment, and local hotspots near Adeniyi Jones.', 'Things to Do Near Adeniyi Jones and Ikeja City Mall', 'Discover the best luxury dining, high-end shopping, cinema entertainment, and local hotspots near Adeniyi Jones.', 'pictures/dining.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/things-to-do-near-adeniyi-jones-ikeja-city-mall', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(30, 'App\\Models\\BlogPost', 11, 'How to Choose a Secure Serviced Apartment in Lagos | Kevron Suites Guide', 'Essential security checks including smart door locks, perimeter safety, CCTV coverage, and neighbor proximity for travelers.', 'How to Choose a Secure Serviced Apartment in Lagos', 'Essential security checks including smart door locks, perimeter safety, CCTV coverage, and neighbor proximity for travelers.', 'pictures/bedroom-4.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/how-to-choose-secure-serviced-apartment-lagos', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(31, 'App\\Models\\BlogPost', 12, 'Weekly and Monthly Serviced Apartments in Ikeja: What to Know | Kevron Suites Guide', 'A guide to long-stay bookings, utility management, housekeeping schedules, and discounts for extended stays.', 'Weekly and Monthly Serviced Apartments in Ikeja: What to Know', 'A guide to long-stay bookings, utility management, housekeeping schedules, and discounts for extended stays.', 'pictures/bedroom-5.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/weekly-monthly-serviced-apartments-ikeja-what-to-know', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(32, 'App\\Models\\BlogPost', 13, 'Airport Pickup and Car Rental for Serviced Apartment Guests in Lagos | Kevron Suites Guide', 'Learn how to coordinate secure airport pickups and rent luxury vehicles with professional drivers for a hassle-free visit.', 'Airport Pickup and Car Rental for Serviced Apartment Guests in Lagos', 'Learn how to coordinate secure airport pickups and rent luxury vehicles with professional drivers for a hassle-free visit.', 'pictures/bedroom-6.jpg', 'summary_large_image', 'https://kevronapartments.com/blog/airport-pickup-car-rental-serviced-apartment-guests-lagos', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(33, 'BlogIndexPage', NULL, 'Blog and Ikeja City Guide | Kevron Suites and Apartments', 'Read helpful guides from Kevron Suites and Apartments on where to stay in Ikeja, airport-access accommodation, business travel, family stays, corporate accommodation, luxury staycations and local attractions near Adeniyi Jones.', 'Blog and Ikeja City Guide | Kevron Suites & Apartments', 'Read helpful guides from Kevron Suites and Apartments on airport stays, business travel, family stays, and local attractions near Adeniyi Jones, Ikeja.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/blog', '2026-06-04 11:23:04', '2026-06-04 11:23:04'),
(34, 'AboutPage', NULL, 'About Kevron Suites and Apartments, Ikeja', 'Learn about Kevron Suites and Apartments, a premium serviced-apartment brand in Adeniyi Jones, Ikeja, offering luxury 1, 2, 3 and 4 bedroom apartments with smart living, guest support, airport access and future multi-location expansion.', 'About Kevron Suites and Apartments | Luxury Serviced Accommodation', 'Discover our premium serviced-apartment brand starting from Adeniyi Jones, Ikeja, Lagos. Enjoy en-suite spaces, snooker/PS5, and 24h power.', 'pictures/master-bedroom-2.jpg', 'summary_large_image', 'https://kevronapartments.com/about', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(35, 'ContactPage', NULL, 'Contact Kevron Suites and Apartments, Ikeja', 'Contact Kevron Suites and Apartments in Adeniyi Jones, Ikeja for bookings, availability, WhatsApp support, airport pickup, corporate stays, long stays, directions and guest enquiries.', 'Contact Executive Concierge | Kevron Suites', 'Contact Kevron Suites and Apartments in Adeniyi Jones, Ikeja for bookings, availability, WhatsApp support, airport pickup, corporate stays, and guest support.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/contact', '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(36, 'App\\Models\\PrivacyPolicy', 1, 'Privacy Policy | Kevron Suites and Apartments', 'Read the Kevron Suites and Apartments Privacy Policy to learn how personal data is collected, used, stored, shared and protected for bookings, payments, guest services, guest accounts, reviews and website use.', 'Privacy Policy | Kevron Suites & Apartments', 'Learn how we manage and protect personal information under Nigeria Data Protection Act requirements.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/privacy-policy', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(37, 'HouseRulesPolicy', 1, 'House Rules | Kevron Suites and Apartments', 'Read the House Rules for Kevron Suites and Apartments, including guest conduct, visitors, noise, smoking, pets, smart access, property care, damages, security deposits, fire safety, check-in, checkout and guest responsibilities.', 'House Rules | Kevron Suites & Apartments', 'Read the House Rules for Kevron Suites and Apartments, including guest conduct, visitors, noise, smoking, pets, smart access, property care, damages, security deposits, fire safety, check-in, checkout and guest responsibilities.', 'pictures/security-access.png', 'summary_large_image', 'https://kevronapartments.com/house-rules', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(38, 'PaymentPolicy', 1, 'Payment Policy | Kevron Suites and Apartments', 'Read the Payment Policy for Kevron Suites and Apartments, including accepted payment methods, deposits, bank transfers, online gateway payments, invoices, receipts, security deposits and payment support.', 'Payment Policy | Kevron Suites & Apartments', 'Read the Payment Policy for Kevron Suites and Apartments, including accepted payment methods, deposits, bank transfers, online gateway payments, invoices, receipts, security deposits and payment support.', 'pictures/secure-payments.png', 'summary_large_image', 'https://kevronapartments.com/payment-policy', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(39, 'DamageDepositPolicy', 1, 'Damage and Security Deposit Policy | Kevron Suites and Apartments', 'Read our Damage and Security Deposit Policy, including check-in/out inspections, physical property damage, missing inventory items, excessive cleaning, and dispute handling.', 'Damage & Security Deposit Policy | Kevron Suites & Apartments', 'Read our Damage and Security Deposit Policy, including check-in/out inspections, physical property damage, missing inventory items, excessive cleaning, and dispute handling.', 'pictures/security-deposit-banner.png', 'summary_large_image', 'https://kevronapartments.com/damage-deposit-policy', '2026-06-04 11:23:13', '2026-06-04 11:23:13'),
(40, 'App\\Models\\GuestIdentificationPolicy', 1, 'Guest Identification Policy | Kevron Suites and Apartments', 'Read the Guest Identification Policy for Kevron Suites and Apartments, including guest ID verification, digital check-in, visitor identification, corporate guest lists, ID uploads, privacy and secure check-in.', 'Guest Identification Policy | Kevron Suites & Apartments', 'Understand how we protect guest privacy and verify guest identity under NDPA 2023 guidelines.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/guest-identification-policy', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(41, 'App\\Models\\SafetyInformationPage', 1, 'Safety and Emergency Information | Kevron Suites and Apartments', 'View Safety and Emergency Information for Kevron Suites and Apartments, including emergency contacts, fire safety, evacuation guidance, medical emergencies, security incidents, access issues and incident reporting.', 'Safety and Emergency Preparedness | Kevron Apartments', 'Learn about our emergency contacts, fire evacuation, smart lock backups, and medical assistance coordination in Adeniyi Jones, Ikeja.', 'pictures/interior.jpg', 'summary_large_image', 'https://kevronapartments.com/safety-emergency-information', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(42, 'HomePage', NULL, 'Luxury Serviced Apartments in Ikeja, Lagos | Kevron Suites', 'Experience premium 1, 2, 3 and 4 bedroom luxury serviced apartments at Kevron Suites and Apartments, Adeniyi Jones, Ikeja, Lagos. Featuring 24h power, Wi-Fi, snooker, and airport pickup.', 'Luxury Serviced Apartments in Ikeja, Lagos | Kevron Suites', 'Book luxury en-suite apartments at Adeniyi Jones, Ikeja with 24-hour power supply, Wi-Fi, smart security locks, PS5, snooker, and airport transfers.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/', '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(43, 'LocationsPage', NULL, 'Serviced Apartments in Adeniyi Jones, Ikeja | Branch Locations', 'Explore Kevron Suites & Apartments premium locations in Adeniyi Jones, Ikeja, Lagos. Secure serviced apartments close to Lagos airports (MM1 & MM2) and police support.', 'Branch Locations | Kevron Suites and Apartments', 'Find secure luxury serviced apartments in Adeniyi Jones, Ikeja, Lagos. Prime location with stable power, Wi-Fi, snooker, and PS5.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/locations', '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(44, 'Location', 1, 'Luxury Serviced Apartments in Ikeja — Adeniyi Jones Branch', 'Book luxury serviced apartments at Adeniyi Jones, Ikeja. Premium en-suite suites with 24h power, Wi-Fi, keyless locks, snooker and airport pickup, 3 mins from Memabod police station.', 'Kevron Suites Adeniyi Jones, Ikeja Branch | Serviced Apartments', 'Enjoy luxury serviced short lets at Adeniyi Jones, Ikeja. Dual generators, high-speed Wi-Fi, professional snooker table, and keyless locks.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/locations/ikeja-adeniyi-jones-lagos', '2026-06-04 11:23:15', '2026-06-04 11:23:15'),
(45, 'FaqsPage', NULL, 'Frequently Asked Questions | Kevron Suites and Apartments', 'Find answers to booking rules, 24-hour power supply, airport pickup transit, security smart locks, and deposit refunds at Kevron Suites, Adeniyi Jones, Ikeja.', 'FAQs | Kevron Suites and Apartments', 'Answers regarding check-in/out, security deposit, airport pickup, 24h power and keyless security at Adeniyi Jones, Ikeja.', 'pictures/master-bedroom.jpg', 'summary_large_image', 'https://kevronapartments.com/faqs', '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `service_requests`
--

CREATE TABLE `service_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `request_type` varchar(255) NOT NULL,
  `request_details` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`request_details`)),
  `status` varchar(255) NOT NULL DEFAULT 'pending',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `service_request_status_histories`
--

CREATE TABLE `service_request_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `request_type` varchar(255) NOT NULL,
  `request_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` varchar(255) NOT NULL,
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `sessions`
--

CREATE TABLE `sessions` (
  `id` varchar(255) NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `payload` longtext NOT NULL,
  `last_activity` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sessions`
--

INSERT INTO `sessions` (`id`, `user_id`, `ip_address`, `user_agent`, `payload`, `last_activity`) VALUES
('glKTXAXSd8gkbAjFdeIG7uu6LlRR0zIBnwUgehZo', NULL, '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 'YTozOntzOjY6Il90b2tlbiI7czo0MDoidmlBaWxjUXBEak1zN0NlcDZSZDBRTTVQMkgzNlhPSUVxVUs3d1RhdiI7czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6NDg6Imh0dHA6Ly9sb2NhbGhvc3Qva2V2cm9uYXBhcnRtZW50cy9wdWJsaWMvYm9va2luZyI7czo1OiJyb3V0ZSI7czoxMzoiYm9va2luZy5pbmRleCI7fXM6NjoiX2ZsYXNoIjthOjI6e3M6Mzoib2xkIjthOjA6e31zOjM6Im5ldyI7YTowOnt9fX0=', 1780573724),
('JeJ9FOtWg3Hsio5OtApv0MVlZ6auMtx11iq0CKvk', NULL, '::1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 'YTozOntzOjY6Il90b2tlbiI7czo0MDoiSDBIclh4RU1sUE04a256dWgzVlhIYnlqS0dpWWVCWXRhWkN4OE5QYiI7czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6NDA6Imh0dHA6Ly9sb2NhbGhvc3Qva2V2cm9uYXBhcnRtZW50cy9wdWJsaWMiO3M6NToicm91dGUiO3M6NDoiaG9tZSI7fXM6NjoiX2ZsYXNoIjthOjI6e3M6Mzoib2xkIjthOjA6e31zOjM6Im5ldyI7YTowOnt9fX0=', 1780573567);

-- --------------------------------------------------------

--
-- Table structure for table `settings`
--

CREATE TABLE `settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `settings`
--

INSERT INTO `settings` (`id`, `key`, `value`, `created_at`, `updated_at`) VALUES
(1, 'brand_name', 'Kevron Suites and Apartments', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'brand_email', 'info@kevronapartments.com', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(3, 'brand_phone', '+234 813 163 2926', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(4, 'brand_whatsapp', '+234 808 213 1985', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(5, 'tax_rate', '7.5', '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(6, 'service_charge_rate', '5.0', '2026-06-04 11:23:00', '2026-06-04 11:23:00');

-- --------------------------------------------------------

--
-- Table structure for table `site_settings`
--

CREATE TABLE `site_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text DEFAULT NULL,
  `description` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `site_settings`
--

INSERT INTO `site_settings` (`id`, `key`, `value`, `description`, `created_at`, `updated_at`) VALUES
(1, 'business_name', 'Kevron Suites and Apartments', 'Official corporate business name.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(2, 'tagline', 'Luxury serviced apartments in Ikeja, Lagos. Premium comfort, 24-hour power, high-speed Wi-Fi, snooker, and top-tier smart locks security.', 'Website main corporate tagline.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(3, 'physical_address', '7B Regina Coker Street, Adeniyi Jones, Ikeja / No. 8 Ogunlowo Street, Adeniyi Jones, Ikeja, Lagos 100271, Nigeria.', 'Full corporate physical address.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(4, 'contact_phone', '+234 813 163 2926', 'Primary reservation office call line.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(5, 'whatsapp_url', 'https://wa.me/2348082131985', 'Direct concierge WhatsApp channel.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(6, 'contact_email', 'info@kevronapartments.com', 'Primary corporate support mailbox.', '2026-06-04 11:23:14', '2026-06-04 11:23:14'),
(7, 'airport_proximity', 'Near MM1/MM2 and Murtala Muhammed International Airport (~10 mins).', 'Airport distance highlight.', '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `smart_living_features`
--

CREATE TABLE `smart_living_features` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `guest_benefit` text NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `media_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `smart_living_features`
--

INSERT INTO `smart_living_features` (`id`, `title`, `slug`, `description`, `guest_benefit`, `icon`, `media_id`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'High-Speed Broadband Wi-Fi', 'high-speed-wifi', 'Unlimited high-speed broadband wireless connection accessible throughout the suite.', 'Enables seamless remote work, streaming, and corporate connectivity.', 'wifi', NULL, 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'In-Suite Smart TV', 'in-suite-smart-tv', 'Equipped with pre-installed streaming applications (Netflix, Prime) and gaming access.', 'Top-tier executive entertainment experiences right in the living room.', 'tv', NULL, 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Climate Control Air Conditioning', 'air-conditioning', 'Individually regulated smart inverter split air conditioning units inside each room.', 'Tailor your apartment climate parameters to suit your personal comfort.', 'wind', NULL, 1, 3, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 'Asynchronous Digital Check-in', 'digital-check-in', 'Pre-arrival check-in form to share arrival times and credentials.', 'Reduces check-in queues, unlocks access codes early, and supports rapid room handovers.', 'clipboard-check', NULL, 1, 4, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(5, 'WhatsApp Concierge Support Desk', 'whatsapp-support-desk', 'Direct instant-messaging link with guest support coordinators for any stay support.', 'Get immediate assistance, maintenance requests, or transport services in seconds.', 'message-circle', NULL, 1, 5, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `smoking_pet_rules`
--

CREATE TABLE `smoking_pet_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `smoking_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `vaping_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `pets_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `cleaning_fee` decimal(12,2) NOT NULL DEFAULT 100000.00,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `smoking_pet_rules`
--

INSERT INTO `smoking_pet_rules` (`id`, `smoking_allowed`, `vaping_allowed`, `pets_allowed`, `cleaning_fee`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 0, 0, 0, 100000.00, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

-- --------------------------------------------------------

--
-- Table structure for table `social_links`
--

CREATE TABLE `social_links` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `platform` varchar(255) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `social_links`
--

INSERT INTO `social_links` (`id`, `platform`, `url`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Instagram', 'https://instagram.com/kevronapartments', 1, 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'Facebook', 'https://facebook.com/kevronapartments', 1, 2, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'TikTok', 'https://tiktok.com/@kevronapartments', 1, 3, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'LinkedIn', 'https://linkedin.com/company/kevronapartments', 1, 4, '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `spam_logs`
--

CREATE TABLE `spam_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `form_name` varchar(255) NOT NULL,
  `ip_address` varchar(255) NOT NULL,
  `reason` varchar(255) NOT NULL,
  `payload` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `special_requests`
--

CREATE TABLE `special_requests` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_name` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `request_type` varchar(255) NOT NULL,
  `preferred_date` date DEFAULT NULL,
  `preferred_time` varchar(255) DEFAULT NULL,
  `details` text NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `submitted_ip` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `staff_emergency_roles`
--

CREATE TABLE `staff_emergency_roles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `role_title` varchar(255) NOT NULL,
  `responsibilities` text DEFAULT NULL,
  `is_on_duty` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `staff_emergency_roles`
--

INSERT INTO `staff_emergency_roles` (`id`, `user_id`, `role_title`, `responsibilities`, `is_on_duty`, `created_at`, `updated_at`) VALUES
(1, 1, 'Evacuation Coordinator', 'Guide guests from exit staircases to assembly muster station, conduct roll calls, and coordinate with Lagos Fire Service.', 1, '2026-06-04 11:23:14', '2026-06-04 11:23:14');

-- --------------------------------------------------------

--
-- Table structure for table `support_hours`
--

CREATE TABLE `support_hours` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `channel` varchar(255) NOT NULL,
  `hours` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `support_hours`
--

INSERT INTO `support_hours` (`id`, `channel`, `hours`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Booking Enquiries', '9:00 AM - 6:00 PM', 1, 1, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(2, 'WhatsApp Support', '24 Hours', 1, 2, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'Guest Support', '24 Hours', 1, 3, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(4, 'Corporate Enquiries', '9:00 AM - 5:00 PM', 1, 4, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(5, 'Transport Requests', '7:00 AM - 8:00 PM', 1, 5, '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `support_tickets`
--

CREATE TABLE `support_tickets` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `ticket_number` varchar(255) NOT NULL,
  `category` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'new',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `support_tickets`
--

INSERT INTO `support_tickets` (`id`, `user_id`, `booking_id`, `ticket_number`, `category`, `subject`, `status`, `created_at`, `updated_at`) VALUES
(1, 2, 2, 'TK-887162', 'general', 'Wi-Fi Speed issue in Suite 302', 'in_progress', '2026-06-04 11:23:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `support_ticket_messages`
--

CREATE TABLE `support_ticket_messages` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `support_ticket_id` bigint(20) UNSIGNED NOT NULL,
  `sender_type` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `attachment_path` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `support_ticket_messages`
--

INSERT INTO `support_ticket_messages` (`id`, `support_ticket_id`, `sender_type`, `message`, `attachment_path`, `created_at`, `updated_at`) VALUES
(1, 1, 'guest', 'Hi, the Wi-Fi speed in Suite 302 seems a bit slow today. I am trying to hop on an executive Zoom call.', NULL, '2026-06-04 09:23:05', '2026-06-04 11:23:05'),
(2, 1, 'admin', 'Hello Kevron Guest, we have rebooted the local access point for Suite 302. Could you please check the speed now?', NULL, '2026-06-04 10:23:05', '2026-06-04 11:23:05'),
(3, 1, 'guest', 'Thank you! It is much better now.', NULL, '2026-06-04 11:08:05', '2026-06-04 11:23:05');

-- --------------------------------------------------------

--
-- Table structure for table `suspicious_identity_cases`
--

CREATE TABLE `suspicious_identity_cases` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_identity_document_id` bigint(20) UNSIGNED NOT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `severity_level` varchar(255) NOT NULL DEFAULT 'medium',
  `details` text NOT NULL,
  `reported_by` varchar(255) DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'reported',
  `action_taken` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `sustainability_categories`
--

CREATE TABLE `sustainability_categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sustainability_categories`
--

INSERT INTO `sustainability_categories` (`id`, `name`, `slug`, `icon`, `created_at`, `updated_at`) VALUES
(1, 'Energy Efficiency', 'energy-efficiency', 'zap', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Responsible Utility Use', 'responsible-utility-use', 'home', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'Modern Appliances', 'modern-appliances', 'chef-hat', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(4, 'Guest Guidance', 'guest-guidance', 'users', '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(5, 'Future Plans', 'future-plans', 'sun', '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `sustainability_evidence`
--

CREATE TABLE `sustainability_evidence` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `sustainability_feature_id` bigint(20) UNSIGNED NOT NULL,
  `source` varchar(255) NOT NULL,
  `evidence_note` text NOT NULL,
  `is_verified` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `sustainability_features`
--

CREATE TABLE `sustainability_features` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `sustainability_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `guest_benefit` text NOT NULL,
  `status_type` varchar(255) NOT NULL DEFAULT 'current',
  `claim_level` varchar(255) NOT NULL DEFAULT 'factual',
  `evidence_note` text DEFAULT NULL,
  `media_id` bigint(20) UNSIGNED DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sustainability_features`
--

INSERT INTO `sustainability_features` (`id`, `sustainability_category_id`, `title`, `slug`, `description`, `guest_benefit`, `status_type`, `claim_level`, `evidence_note`, `media_id`, `icon`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 1, 'LED Lighting Systems', 'led-lighting', 'Energy-efficient LED lighting fixtures installed across relevant common, access, and en-suite apartment areas to support practical resource management.', 'Provides bright, high-fidelity illumination while significantly reducing active power draw across the property.', 'current', 'factual', 'LED bulb supply procurement invoices and installation logs verified by facility management.', NULL, 'zap', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 3, 'Energy-Conscious Appliances', 'energy-conscious-appliances', 'Serviced suites are equipped with modern laundry washing machines, heat dryers, kitchen refrigerators, and climate split units selected for balanced, energy-conscious operation where available.', 'Enables full in-apartment laundry and culinary conveniences with managed utility loads.', 'current', 'factual', 'Manufacturer specification sheets indicating energy savings for in-suite inverter climate systems and washing machines.', NULL, 'chef-hat', 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `sustainability_media`
--

CREATE TABLE `sustainability_media` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `model_type` varchar(255) NOT NULL,
  `model_id` bigint(20) UNSIGNED NOT NULL,
  `media_id` bigint(20) UNSIGNED NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `team_profiles`
--

CREATE TABLE `team_profiles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `role` varchar(255) NOT NULL,
  `bio` text NOT NULL,
  `avatar_path` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `terms_acceptances`
--

CREATE TABLE `terms_acceptances` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `policy_version_id` varchar(255) NOT NULL,
  `acceptance_context` varchar(255) NOT NULL,
  `checkbox_label` varchar(255) NOT NULL,
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `accepted_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `theme_audit_logs`
--

CREATE TABLE `theme_audit_logs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `action` varchar(255) NOT NULL,
  `model_type` varchar(255) DEFAULT NULL,
  `model_id` bigint(20) UNSIGNED DEFAULT NULL,
  `old_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`old_values`)),
  `new_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`new_values`)),
  `ip_address` varchar(255) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `theme_settings`
--

CREATE TABLE `theme_settings` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `default_mode` varchar(255) NOT NULL DEFAULT 'light',
  `default_accent` varchar(255) NOT NULL DEFAULT 'royal',
  `allow_user_switching` tinyint(1) NOT NULL DEFAULT 1,
  `enable_dark_mode` tinyint(1) NOT NULL DEFAULT 1,
  `enable_system_mode` tinyint(1) NOT NULL DEFAULT 1,
  `show_in_header` tinyint(1) NOT NULL DEFAULT 1,
  `show_in_footer` tinyint(1) NOT NULL DEFAULT 1,
  `show_in_mobile_drawer` tinyint(1) NOT NULL DEFAULT 1,
  `show_in_guest_dashboard` tinyint(1) NOT NULL DEFAULT 1,
  `transition_enabled` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `theme_settings`
--

INSERT INTO `theme_settings` (`id`, `default_mode`, `default_accent`, `allow_user_switching`, `enable_dark_mode`, `enable_system_mode`, `show_in_header`, `show_in_footer`, `show_in_mobile_drawer`, `show_in_guest_dashboard`, `transition_enabled`, `created_at`, `updated_at`) VALUES
(1, 'light', 'royal', 1, 1, 1, 1, 1, 1, 1, 1, '2026-06-04 11:23:15', '2026-06-04 11:23:15');

-- --------------------------------------------------------

--
-- Table structure for table `tour_events`
--

CREATE TABLE `tour_events` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `event_type` varchar(255) NOT NULL,
  `event_key` varchar(255) NOT NULL,
  `metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`metadata`)),
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `transport_ctas`
--

CREATE TABLE `transport_ctas` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `label` varchar(255) NOT NULL,
  `action_url` text NOT NULL,
  `type` varchar(255) NOT NULL DEFAULT 'whatsapp',
  `icon` varchar(255) DEFAULT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `transport_ctas`
--

INSERT INTO `transport_ctas` (`id`, `label`, `action_url`, `type`, `icon`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Request Airport Pickup', '/airport-pickup-car-rental', 'link', 'plane-takeoff', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Request Car Rental', '/airport-pickup-car-rental', 'link', 'car', 2, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(3, 'WhatsApp Movement Enquiry', 'https://wa.me/2348082131985?text=Hello%20Kevron%20Suites,%20I%2527m%20inquiring%20about%20transport%20pickup%20or%20local%20car%20rental%20from%20your%20Ikeja%20branch.', 'whatsapp', 'whatsapp', 3, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `transport_request_status_histories`
--

CREATE TABLE `transport_request_status_histories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `request_type` varchar(255) NOT NULL,
  `request_id` bigint(20) UNSIGNED NOT NULL,
  `status` varchar(255) NOT NULL,
  `changed_by` varchar(255) NOT NULL DEFAULT 'system',
  `comment` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `transport_services`
--

CREATE TABLE `transport_services` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `availability` varchar(255) NOT NULL DEFAULT 'on_request',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `transport_services`
--

INSERT INTO `transport_services` (`id`, `name`, `slug`, `description`, `availability`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Airport Pickup', 'airport-pickup', 'Professional airport transit coordination direct to your suite. Vetted drivers and premium air-conditioned vehicle choices.', 'on_request', 1, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'Car Rental', 'car-rental', 'Navigate Lagos in complete safety. Premium car hire packages complete with security-trained professional local drivers.', 'price_on_request', 1, 2, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `units`
--

CREATE TABLE `units` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `apartment_type_id` bigint(20) UNSIGNED NOT NULL,
  `unit_number` varchar(255) NOT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'available',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `building_id` bigint(20) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `units`
--

INSERT INTO `units` (`id`, `apartment_type_id`, `unit_number`, `status`, `created_at`, `updated_at`, `building_id`) VALUES
(1, 1, 'Suite 101', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 1),
(2, 1, 'Suite 102', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 1),
(3, 2, 'Apartment 201', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 1),
(4, 2, 'Apartment 202', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 1),
(5, 3, 'Apartment 301', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 2),
(6, 3, 'Apartment 302', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 2),
(7, 4, 'Penthouse 401', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 2),
(8, 4, 'Penthouse 402', 'available', '2026-06-04 11:23:00', '2026-06-04 11:23:00', 2);

-- --------------------------------------------------------

--
-- Table structure for table `unit_condition_checklists`
--

CREATE TABLE `unit_condition_checklists` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `items_json` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `unit_condition_records`
--

CREATE TABLE `unit_condition_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `unit_id` bigint(20) UNSIGNED NOT NULL,
  `inspector_name` varchar(255) NOT NULL,
  `inspection_type` varchar(255) NOT NULL,
  `condition_status` varchar(255) NOT NULL DEFAULT 'good',
  `checklist_results_json` text NOT NULL,
  `notes` text DEFAULT NULL,
  `inspected_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `email_verified_at` timestamp NULL DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  `remember_token` varchar(100) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `name`, `email`, `email_verified_at`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES
(1, 'Kevron Super Admin', 'admin@kevronapartments.com', '2026-06-04 11:23:00', '$2y$12$uXktMItdwuPc8AfqRUV5Ye2ef4kqmrw5BcWY3miRnwdS5hpiYNlRq', NULL, '2026-06-04 11:23:00', '2026-06-04 11:23:00'),
(2, 'Kevron Guest', 'guest@kevron.com', '2026-06-04 11:23:05', '$2y$12$tEn3kqyP4hyMlOB99xU75uRaaY60v8IvfRO9WUzX2fZmR.WJm/6qW', NULL, '2026-06-04 11:23:05', '2026-06-04 11:23:05'),
(3, 'Kevron Admin Manager', 'manager@kevronapartments.com', '2026-06-04 11:23:11', '$2y$12$gv2gGwACsLm0pDwah5.VOeLvV/CWDi2jcp.qyvjGuecxYNi21/8qW', NULL, '2026-06-04 11:23:11', '2026-06-04 11:23:11'),
(4, 'Kevron Booking Officer', 'officer@kevronapartments.com', '2026-06-04 11:23:11', '$2y$12$nh/jnRXhJ/oj52L5CE2E..y7WBoNNPA6Q3NV8A2VPm/ltH0/yTItm', NULL, '2026-06-04 11:23:11', '2026-06-04 11:23:11'),
(5, 'Kevron Finance Officer', 'finance@kevronapartments.com', '2026-06-04 11:23:11', '$2y$12$.Dwz3pAJa.l8K5Zcd0MfKuCGb57GWsRBGdvd0vwMqZbwofHsMX7pW', NULL, '2026-06-04 11:23:11', '2026-06-04 11:23:11'),
(6, 'Kevron Housekeeping Staff', 'housekeeping@kevronapartments.com', '2026-06-04 11:23:11', '$2y$12$4i4bkIeJgF2TqHeEi42yQumsuxJrFwnZzoSVqyufXXwI8U//uX31G', NULL, '2026-06-04 11:23:11', '2026-06-04 11:23:11'),
(7, 'Kevron Maintenance Staff', 'maintenance@kevronapartments.com', '2026-06-04 11:23:12', '$2y$12$8VgGIDZ2kKrLnykCYBrmceRLjqkBgHQfgPqoQ/1yFchbQJ.cEVt/K', NULL, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(8, 'Kevron Content Manager', 'content@kevronapartments.com', '2026-06-04 11:23:12', '$2y$12$jz9Y5XkZV8xbWW6YZjn/yeiOFkZqPzNqsWRDW/wdO7oD8UHT5uxEu', NULL, '2026-06-04 11:23:12', '2026-06-04 11:23:12'),
(9, 'Kevron Read-Only User', 'readonly@kevronapartments.com', '2026-06-04 11:23:12', '$2y$12$jgctVX5g8onF8Hld9G0eEukd8P3/JkIQ6rvldXEy5y/ejCKoi.ucm', NULL, '2026-06-04 11:23:12', '2026-06-04 11:23:12');

-- --------------------------------------------------------

--
-- Table structure for table `user_theme_preferences`
--

CREATE TABLE `user_theme_preferences` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `theme_mode` varchar(255) NOT NULL DEFAULT 'light',
  `accent_theme` varchar(255) NOT NULL DEFAULT 'royal',
  `source` varchar(255) NOT NULL DEFAULT 'web',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `vehicle_types`
--

CREATE TABLE `vehicle_types` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `capacity_passengers` int(11) NOT NULL DEFAULT 4,
  `capacity_luggage` int(11) NOT NULL DEFAULT 2,
  `base_rate` decimal(12,2) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `vehicle_types`
--

INSERT INTO `vehicle_types` (`id`, `name`, `slug`, `description`, `capacity_passengers`, `capacity_luggage`, `base_rate`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Standard Executive Sedan', 'standard', 'Comfortable air-conditioned sedan suitable for up to 3 passengers and 2 luggage items.', 3, 2, 15000.00, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(2, 'Luxury SUV', 'suv', 'Spacious executive SUV suitable for up to 4 passengers and 4 luggage items. Ideal for families and business executives.', 4, 4, 25000.00, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02'),
(3, 'Executive Coach/Van', 'van', 'Comfortable high-occupancy coach suitable for business teams and larger families, carrying up to 10 passengers with baggage.', 10, 10, 50000.00, 1, '2026-06-04 11:23:02', '2026-06-04 11:23:02');

-- --------------------------------------------------------

--
-- Table structure for table `video_assets`
--

CREATE TABLE `video_assets` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `media_asset_id` bigint(20) UNSIGNED NOT NULL,
  `provider` varchar(255) NOT NULL DEFAULT 'native',
  `video_id` varchar(255) DEFAULT NULL,
  `duration` int(11) DEFAULT NULL,
  `has_captions` tinyint(1) NOT NULL DEFAULT 0,
  `captions_path` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `video_assets`
--

INSERT INTO `video_assets` (`id`, `media_asset_id`, `provider`, `video_id`, `duration`, `has_captions`, `captions_path`, `created_at`, `updated_at`) VALUES
(1, 26, 'vimeo', '1186235401', 124, 1, NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(2, 27, 'vimeo', '1169265971', 98, 1, NULL, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `video_testimonials`
--

CREATE TABLE `video_testimonials` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `guest_name` varchar(255) NOT NULL,
  `stay_type` varchar(255) DEFAULT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `video_url` varchar(255) NOT NULL,
  `poster_path` varchar(255) DEFAULT NULL,
  `transcript` text DEFAULT NULL,
  `is_approved` tinyint(1) NOT NULL DEFAULT 0,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `virtual_tour_assets`
--

CREATE TABLE `virtual_tour_assets` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `tour_type` varchar(255) NOT NULL DEFAULT 'fallback_image',
  `image_path` varchar(255) DEFAULT NULL,
  `asset_path` varchar(255) DEFAULT NULL,
  `embed_url` varchar(255) DEFAULT NULL,
  `fallback_media_id` bigint(20) UNSIGNED DEFAULT NULL,
  `location_id` bigint(20) UNSIGNED DEFAULT NULL,
  `apartment_type_id` bigint(20) UNSIGNED DEFAULT NULL,
  `scene_name` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `hotspots_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`hotspots_json`)),
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `virtual_tour_assets`
--

INSERT INTO `virtual_tour_assets` (`id`, `title`, `slug`, `tour_type`, `image_path`, `asset_path`, `embed_url`, `fallback_media_id`, `location_id`, `apartment_type_id`, `scene_name`, `description`, `hotspots_json`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(2, 'Luxury Lounge & Snooker Area', 'luxury-lounge-snooker-area', 'fallback_image', 'pictures/living-room.jpg', 'pictures/living-room.jpg', NULL, NULL, 1, 1, 'Living Room', 'Explore our spacious open-plan en-suite lounge featuring a standard snooker table and smart home fixtures.', NULL, 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 'Gourmet Quartz Kitchen', 'gourmet-quartz-kitchen', 'fallback_image', 'pictures/kitchen.jpg', 'pictures/kitchen.jpg', NULL, NULL, 1, 1, 'Gourmet Kitchen', 'Fully equipped modern kitchen with premium appliances, fitted laundry wash-and-dry systems, and dining tools.', NULL, 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 'En-Suite Master Bedroom', 'en-suite-master-bedroom', 'fallback_image', 'pictures/master-bedroom.jpg', 'pictures/master-bedroom.jpg', NULL, NULL, 1, 1, 'Master Bedroom', 'Experience pure hotel-grade relaxation in our fully soundproof en-suite bedroom equipped with premium orthopedic sheets.', NULL, 1, 3, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(5, 'Scenic Outdoor Balcony', 'scenic-outdoor-balcony', 'fallback_image', 'pictures/staircase.jpg', 'pictures/staircase.jpg', NULL, NULL, 1, 1, 'Outdoor Balcony', 'Open-air ventilation balconies offering peaceful garden outlines and fresh air transits.', NULL, 1, 4, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `virtual_tour_hotspots`
--

CREATE TABLE `virtual_tour_hotspots` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `virtual_tour_asset_id` bigint(20) UNSIGNED NOT NULL,
  `label` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `icon` varchar(255) NOT NULL DEFAULT 'general',
  `x_position` decimal(8,2) NOT NULL,
  `y_position` decimal(8,2) NOT NULL,
  `z_position` decimal(8,2) DEFAULT NULL,
  `target_scene_id` bigint(20) UNSIGNED DEFAULT NULL,
  `cta_label` varchar(255) DEFAULT NULL,
  `cta_url` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `virtual_tour_hotspots`
--

INSERT INTO `virtual_tour_hotspots` (`id`, `virtual_tour_asset_id`, `label`, `description`, `icon`, `x_position`, `y_position`, `z_position`, `target_scene_id`, `cta_label`, `cta_url`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 2, 'Slate Snooker Table', 'Professional tournament grade slate snooker table for executive guest entertainment.', 'general', 25.00, 40.00, NULL, NULL, NULL, NULL, 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(2, 2, 'Smart Security Hub', 'Dual CCTV cameras and keyless access control linked straight to secure front gate logs.', 'security', 65.00, 20.00, NULL, NULL, NULL, NULL, 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(3, 3, 'Quartz Cooking Island', 'Custom en-suite layout equipped with high-end extraction and fitted burners.', 'general', 45.00, 50.00, NULL, NULL, NULL, NULL, 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(4, 4, 'Keyless Smart Lock', 'Self check-in digital lock keypad ensuring complete privacy during your stay.', 'security', 30.00, 35.00, NULL, NULL, NULL, NULL, 1, 1, '2026-06-04 11:23:01', '2026-06-04 11:23:01'),
(5, 4, 'High-Speed Wi-Fi Router', 'Uncapped gigabit fiber connection delivering 100Mbps download pipelines.', 'wifi', 75.00, 25.00, NULL, NULL, NULL, NULL, 1, 2, '2026-06-04 11:23:01', '2026-06-04 11:23:01');

-- --------------------------------------------------------

--
-- Table structure for table `visitor_identity_records`
--

CREATE TABLE `visitor_identity_records` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `booking_id` bigint(20) UNSIGNED DEFAULT NULL,
  `booking_reference` varchar(255) DEFAULT NULL,
  `guest_id` bigint(20) UNSIGNED DEFAULT NULL,
  `visitor_name` varchar(255) NOT NULL,
  `contact_phone` varchar(255) DEFAULT NULL,
  `id_document_type` varchar(255) DEFAULT NULL,
  `id_number_encrypted` text DEFAULT NULL,
  `checked_in_at` datetime DEFAULT NULL,
  `checked_out_at` datetime DEFAULT NULL,
  `status` varchar(255) NOT NULL DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `visitor_policies`
--

CREATE TABLE `visitor_policies` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `visitor_policies`
--

INSERT INTO `visitor_policies` (`id`, `title`, `slug`, `content`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(1, 'Visitor Pre-Registration Protocol', 'visitor-pre-registration-protocol', 'All non-resident visitors must be pre-registered by the primary resident guest before arrival at the gate entrance. Visitors are required to verify their identities at the security lodge.', 1, 1, '2026-06-04 11:23:03', '2026-06-04 11:23:03'),
(2, 'Visitor Overnight Stay Rules', 'visitor-overnight-stay-rules', 'Overnight visitors must be declared at the concierge desk and mapped inside guest capacity limits. Standard rates may apply to extra adult visitors exceeding the suite\'s baseline capacity limits.', 1, 2, '2026-06-04 11:23:03', '2026-06-04 11:23:03');

-- --------------------------------------------------------

--
-- Table structure for table `visitor_rules`
--

CREATE TABLE `visitor_rules` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `max_visitors_day` int(11) NOT NULL DEFAULT 2,
  `overnight_allowed` tinyint(1) NOT NULL DEFAULT 0,
  `register_required` tinyint(1) NOT NULL DEFAULT 1,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `visitor_rules`
--

INSERT INTO `visitor_rules` (`id`, `max_visitors_day`, `overnight_allowed`, `register_required`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 2, 0, 1, 1, '2026-06-04 11:23:13', '2026-06-04 11:23:13');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `abandoned_bookings`
--
ALTER TABLE `abandoned_bookings`
  ADD PRIMARY KEY (`id`),
  ADD KEY `abandoned_bookings_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `about_media`
--
ALTER TABLE `about_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `about_media_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `about_sections`
--
ALTER TABLE `about_sections`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `about_sections_section_key_unique` (`section_key`);

--
-- Indexes for table `accent_themes`
--
ALTER TABLE `accent_themes`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `accent_themes_slug_unique` (`slug`);

--
-- Indexes for table `accessibility_audits`
--
ALTER TABLE `accessibility_audits`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `accessibility_audit_findings`
--
ALTER TABLE `accessibility_audit_findings`
  ADD PRIMARY KEY (`id`),
  ADD KEY `acc_aud_find_fk` (`accessibility_audit_id`);

--
-- Indexes for table `accessibility_feedback`
--
ALTER TABLE `accessibility_feedback`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `accessibility_issues`
--
ALTER TABLE `accessibility_issues`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `accessibility_remediation_tasks`
--
ALTER TABLE `accessibility_remediation_tasks`
  ADD PRIMARY KEY (`id`),
  ADD KEY `acc_rem_task_fk` (`accessibility_issue_id`);

--
-- Indexes for table `accessibility_statements`
--
ALTER TABLE `accessibility_statements`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `accessibility_statements_slug_unique` (`slug`);

--
-- Indexes for table `accessibility_statement_sections`
--
ALTER TABLE `accessibility_statement_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `acc_page_sec_fk` (`accessibility_statement_id`);

--
-- Indexes for table `accessibility_statement_versions`
--
ALTER TABLE `accessibility_statement_versions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `acc_page_ver_fk` (`accessibility_statement_id`);

--
-- Indexes for table `accessibility_statuses`
--
ALTER TABLE `accessibility_statuses`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `accessibility_support_requests`
--
ALTER TABLE `accessibility_support_requests`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `accessibility_widget_settings`
--
ALTER TABLE `accessibility_widget_settings`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `add_on_services`
--
ALTER TABLE `add_on_services`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `add_on_services_slug_unique` (`slug`);

--
-- Indexes for table `airports`
--
ALTER TABLE `airports`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `airports_code_unique` (`code`);

--
-- Indexes for table `airport_pickup_requests`
--
ALTER TABLE `airport_pickup_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `airport_pickup_requests_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `amenities`
--
ALTER TABLE `amenities`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `amenities_slug_unique` (`slug`),
  ADD KEY `amenities_category_id_foreign` (`category_id`);

--
-- Indexes for table `amenity_categories`
--
ALTER TABLE `amenity_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `amenity_categories_slug_unique` (`slug`);

--
-- Indexes for table `amenity_comparison_fields`
--
ALTER TABLE `amenity_comparison_fields`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `amenity_comparison_fields_field_key_unique` (`field_key`);

--
-- Indexes for table `amenity_media`
--
ALTER TABLE `amenity_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `amenity_media_amenity_id_foreign` (`amenity_id`),
  ADD KEY `amenity_media_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `apartment_types`
--
ALTER TABLE `apartment_types`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `apartment_types_slug_unique` (`slug`);

--
-- Indexes for table `apartment_type_amenity`
--
ALTER TABLE `apartment_type_amenity`
  ADD PRIMARY KEY (`apartment_type_id`,`amenity_id`),
  ADD KEY `apartment_type_amenity_amenity_id_foreign` (`amenity_id`);

--
-- Indexes for table `apartment_type_media`
--
ALTER TABLE `apartment_type_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `apartment_type_media_apartment_type_id_foreign` (`apartment_type_id`),
  ADD KEY `apartment_type_media_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `arrival_time_submissions`
--
ALTER TABLE `arrival_time_submissions`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `assembly_points`
--
ALTER TABLE `assembly_points`
  ADD PRIMARY KEY (`id`),
  ADD KEY `ap_loc_fk` (`location_id`);

--
-- Indexes for table `assistive_technology_tests`
--
ALTER TABLE `assistive_technology_tests`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `audit_logs`
--
ALTER TABLE `audit_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `audit_logs_user_id_foreign` (`user_id`);

--
-- Indexes for table `availability_blocks`
--
ALTER TABLE `availability_blocks`
  ADD PRIMARY KEY (`id`),
  ADD KEY `availability_blocks_unit_id_foreign` (`unit_id`);

--
-- Indexes for table `bank_accounts`
--
ALTER TABLE `bank_accounts`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `bank_transfer_uploads`
--
ALTER TABLE `bank_transfer_uploads`
  ADD PRIMARY KEY (`id`),
  ADD KEY `bank_transfer_uploads_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `blog_authors`
--
ALTER TABLE `blog_authors`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `blog_authors_slug_unique` (`slug`);

--
-- Indexes for table `blog_categories`
--
ALTER TABLE `blog_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `blog_categories_slug_unique` (`slug`);

--
-- Indexes for table `blog_events`
--
ALTER TABLE `blog_events`
  ADD PRIMARY KEY (`id`),
  ADD KEY `blog_events_blog_post_id_foreign` (`blog_post_id`);

--
-- Indexes for table `blog_posts`
--
ALTER TABLE `blog_posts`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `blog_posts_slug_unique` (`slug`),
  ADD KEY `blog_posts_category_id_foreign` (`category_id`),
  ADD KEY `blog_posts_author_id_foreign` (`author_id`),
  ADD KEY `blog_posts_blog_author_id_foreign` (`blog_author_id`);

--
-- Indexes for table `blog_post_faqs`
--
ALTER TABLE `blog_post_faqs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `blog_post_faqs_blog_post_id_foreign` (`blog_post_id`);

--
-- Indexes for table `blog_post_redirects`
--
ALTER TABLE `blog_post_redirects`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `blog_post_redirects_old_slug_unique` (`old_slug`);

--
-- Indexes for table `blog_post_revisions`
--
ALTER TABLE `blog_post_revisions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `blog_post_revisions_blog_post_id_foreign` (`blog_post_id`),
  ADD KEY `blog_post_revisions_user_id_foreign` (`user_id`);

--
-- Indexes for table `blog_post_tag`
--
ALTER TABLE `blog_post_tag`
  ADD PRIMARY KEY (`id`),
  ADD KEY `blog_post_tag_blog_post_id_foreign` (`blog_post_id`),
  ADD KEY `blog_post_tag_blog_tag_id_foreign` (`blog_tag_id`);

--
-- Indexes for table `blog_related_posts`
--
ALTER TABLE `blog_related_posts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `blog_related_posts_blog_post_id_foreign` (`blog_post_id`),
  ADD KEY `blog_related_posts_related_post_id_foreign` (`related_post_id`);

--
-- Indexes for table `blog_search_logs`
--
ALTER TABLE `blog_search_logs`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `blog_tags`
--
ALTER TABLE `blog_tags`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `blog_tags_slug_unique` (`slug`);

--
-- Indexes for table `bookings`
--
ALTER TABLE `bookings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `bookings_booking_reference_unique` (`booking_reference`),
  ADD KEY `bookings_guest_id_foreign` (`guest_id`),
  ADD KEY `bookings_apartment_type_id_foreign` (`apartment_type_id`),
  ADD KEY `bookings_unit_id_foreign` (`unit_id`);

--
-- Indexes for table `booking_add_ons`
--
ALTER TABLE `booking_add_ons`
  ADD PRIMARY KEY (`id`),
  ADD KEY `booking_add_ons_booking_id_foreign` (`booking_id`),
  ADD KEY `booking_add_ons_add_on_service_id_foreign` (`add_on_service_id`);

--
-- Indexes for table `booking_cancellation_requests`
--
ALTER TABLE `booking_cancellation_requests`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `booking_cancellation_requests_request_reference_unique` (`request_reference`),
  ADD KEY `booking_cancellation_requests_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `booking_enquiries`
--
ALTER TABLE `booking_enquiries`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `booking_guests`
--
ALTER TABLE `booking_guests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `booking_guests_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `booking_modification_requests`
--
ALTER TABLE `booking_modification_requests`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `booking_modification_requests_request_reference_unique` (`request_reference`),
  ADD KEY `booking_modification_requests_booking_id_foreign` (`booking_id`),
  ADD KEY `booking_modification_requests_proposed_apartment_type_id_foreign` (`proposed_apartment_type_id`);

--
-- Indexes for table `booking_notifications`
--
ALTER TABLE `booking_notifications`
  ADD PRIMARY KEY (`id`),
  ADD KEY `booking_notifications_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `booking_policies`
--
ALTER TABLE `booking_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `booking_policies_slug_unique` (`slug`);

--
-- Indexes for table `booking_policy_acceptances`
--
ALTER TABLE `booking_policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `booking_policy_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `booking_policy_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `booking_policy_acceptances_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `booking_policy_sections`
--
ALTER TABLE `booking_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `booking_policy_sections_booking_policy_id_foreign` (`booking_policy_id`);

--
-- Indexes for table `booking_status_histories`
--
ALTER TABLE `booking_status_histories`
  ADD PRIMARY KEY (`id`),
  ADD KEY `booking_status_histories_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `brand_content_blocks`
--
ALTER TABLE `brand_content_blocks`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `brand_content_blocks_location_id_block_key_unique` (`location_id`,`block_key`);

--
-- Indexes for table `brand_profiles`
--
ALTER TABLE `brand_profiles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `brand_profiles_slug_unique` (`slug`),
  ADD KEY `brand_profiles_primary_location_id_foreign` (`primary_location_id`);

--
-- Indexes for table `brand_values`
--
ALTER TABLE `brand_values`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `buildings`
--
ALTER TABLE `buildings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `buildings_code_unique` (`code`),
  ADD KEY `buildings_location_id_foreign` (`location_id`);

--
-- Indexes for table `cache`
--
ALTER TABLE `cache`
  ADD PRIMARY KEY (`key`),
  ADD KEY `cache_expiration_index` (`expiration`);

--
-- Indexes for table `cache_locks`
--
ALTER TABLE `cache_locks`
  ADD PRIMARY KEY (`key`),
  ADD KEY `cache_locks_expiration_index` (`expiration`);

--
-- Indexes for table `cancellation_refund_policies`
--
ALTER TABLE `cancellation_refund_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `cancellation_refund_policies_slug_unique` (`slug`);

--
-- Indexes for table `cancellation_refund_policy_acceptances`
--
ALTER TABLE `cancellation_refund_policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cancellation_refund_policy_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `cancellation_refund_policy_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `cancellation_refund_policy_acceptances_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `cancellation_refund_policy_sections`
--
ALTER TABLE `cancellation_refund_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cr_policy_sections_policy_id_foreign` (`cancellation_refund_policy_id`);

--
-- Indexes for table `cancellation_requests`
--
ALTER TABLE `cancellation_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cancellation_requests_booking_id_foreign` (`booking_id`),
  ADD KEY `cancellation_requests_guest_id_foreign` (`guest_id`);

--
-- Indexes for table `car_rental_requests`
--
ALTER TABLE `car_rental_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `car_rental_requests_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `channel_integrations`
--
ALTER TABLE `channel_integrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `channel_sync_logs`
--
ALTER TABLE `channel_sync_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `channel_sync_logs_channel_integration_id_foreign` (`channel_integration_id`);

--
-- Indexes for table `company_billing_profiles`
--
ALTER TABLE `company_billing_profiles`
  ADD PRIMARY KEY (`id`),
  ADD KEY `company_billing_profiles_corporate_client_id_foreign` (`corporate_client_id`);

--
-- Indexes for table `comparison_fields`
--
ALTER TABLE `comparison_fields`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `comparison_fields_field_key_unique` (`field_key`);

--
-- Indexes for table `comparison_field_values`
--
ALTER TABLE `comparison_field_values`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `apt_field_unique` (`apartment_type_id`,`comparison_field_id`),
  ADD KEY `comparison_field_values_comparison_field_id_foreign` (`comparison_field_id`);

--
-- Indexes for table `consent_records`
--
ALTER TABLE `consent_records`
  ADD PRIMARY KEY (`id`),
  ADD KEY `consent_records_user_id_foreign` (`user_id`),
  ADD KEY `consent_records_guest_id_foreign` (`guest_id`),
  ADD KEY `consent_records_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `contact_enquiries`
--
ALTER TABLE `contact_enquiries`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `contact_messages`
--
ALTER TABLE `contact_messages`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `contact_settings`
--
ALTER TABLE `contact_settings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `contact_settings_key_unique` (`key`);

--
-- Indexes for table `cookie_categories`
--
ALTER TABLE `cookie_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `cookie_categories_slug_unique` (`slug`);

--
-- Indexes for table `cookie_consents`
--
ALTER TABLE `cookie_consents`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cookie_consents_user_id_foreign` (`user_id`),
  ADD KEY `cookie_consents_guest_id_foreign` (`guest_id`),
  ADD KEY `cookie_consents_anonymous_consent_id_index` (`anonymous_consent_id`);

--
-- Indexes for table `cookie_consent_events`
--
ALTER TABLE `cookie_consent_events`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cookie_consent_events_cookie_consent_id_foreign` (`cookie_consent_id`);

--
-- Indexes for table `cookie_consent_preferences`
--
ALTER TABLE `cookie_consent_preferences`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cookie_consent_preferences_cookie_consent_id_foreign` (`cookie_consent_id`),
  ADD KEY `cookie_consent_preferences_cookie_category_id_foreign` (`cookie_category_id`);

--
-- Indexes for table `cookie_items`
--
ALTER TABLE `cookie_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cookie_items_cookie_category_id_foreign` (`cookie_category_id`);

--
-- Indexes for table `cookie_policies`
--
ALTER TABLE `cookie_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `cookie_policies_slug_unique` (`slug`);

--
-- Indexes for table `cookie_policy_sections`
--
ALTER TABLE `cookie_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `cookie_policy_sections_cookie_policy_id_foreign` (`cookie_policy_id`);

--
-- Indexes for table `corporate_booking_status_histories`
--
ALTER TABLE `corporate_booking_status_histories`
  ADD PRIMARY KEY (`id`),
  ADD KEY `corporate_booking_status_histories_corporate_enquiry_id_foreign` (`corporate_enquiry_id`);

--
-- Indexes for table `corporate_clients`
--
ALTER TABLE `corporate_clients`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `corporate_contacts`
--
ALTER TABLE `corporate_contacts`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `corporate_contacts_email_unique` (`email`),
  ADD KEY `corporate_contacts_corporate_client_id_foreign` (`corporate_client_id`);

--
-- Indexes for table `corporate_deposit_rules`
--
ALTER TABLE `corporate_deposit_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `corporate_enquiries`
--
ALTER TABLE `corporate_enquiries`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `corporate_guest_lists`
--
ALTER TABLE `corporate_guest_lists`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `corporate_guest_list_items`
--
ALTER TABLE `corporate_guest_list_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `corp_guest_list_fk` (`corporate_guest_list_id`);

--
-- Indexes for table `corporate_quotes`
--
ALTER TABLE `corporate_quotes`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `corporate_quotes_quote_number_unique` (`quote_number`),
  ADD KEY `corporate_quotes_corporate_enquiry_id_foreign` (`corporate_enquiry_id`);

--
-- Indexes for table `corporate_rate_requests`
--
ALTER TABLE `corporate_rate_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `corporate_rate_requests_corporate_client_id_foreign` (`corporate_client_id`),
  ADD KEY `corporate_rate_requests_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `corporate_stay_rules`
--
ALTER TABLE `corporate_stay_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `damage_categories`
--
ALTER TABLE `damage_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `damage_categories_slug_unique` (`slug`);

--
-- Indexes for table `damage_deposit_policies`
--
ALTER TABLE `damage_deposit_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `damage_deposit_policies_slug_unique` (`slug`);

--
-- Indexes for table `damage_deposit_policy_acceptances`
--
ALTER TABLE `damage_deposit_policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `damage_deposit_policy_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `damage_deposit_policy_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `damage_deposit_policy_acceptances_booking_id_foreign` (`booking_id`),
  ADD KEY `damage_deposit_policy_acceptances_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `damage_deposit_policy_sections`
--
ALTER TABLE `damage_deposit_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `damage_deposit_policy_sections_damage_deposit_policy_id_foreign` (`damage_deposit_policy_id`);

--
-- Indexes for table `damage_evidence_media`
--
ALTER TABLE `damage_evidence_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `damage_evidence_media_damage_report_id_foreign` (`damage_report_id`);

--
-- Indexes for table `damage_reports`
--
ALTER TABLE `damage_reports`
  ADD PRIMARY KEY (`id`),
  ADD KEY `damage_reports_booking_id_foreign` (`booking_id`),
  ADD KEY `damage_reports_guest_id_foreign` (`guest_id`),
  ADD KEY `damage_reports_location_id_foreign` (`location_id`),
  ADD KEY `damage_reports_unit_id_foreign` (`unit_id`),
  ADD KEY `damage_reports_damage_category_id_foreign` (`damage_category_id`),
  ADD KEY `damage_reports_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `deposit_deductions`
--
ALTER TABLE `deposit_deductions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `deposit_deductions_security_deposit_transaction_id_foreign` (`security_deposit_transaction_id`),
  ADD KEY `deposit_deductions_damage_report_id_foreign` (`damage_report_id`);

--
-- Indexes for table `deposit_disputes`
--
ALTER TABLE `deposit_disputes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `deposit_disputes_security_deposit_transaction_id_foreign` (`security_deposit_transaction_id`),
  ADD KEY `deposit_disputes_deposit_deduction_id_foreign` (`deposit_deduction_id`),
  ADD KEY `deposit_disputes_guest_id_foreign` (`guest_id`),
  ADD KEY `deposit_disputes_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `deposit_rules`
--
ALTER TABLE `deposit_rules`
  ADD PRIMARY KEY (`id`),
  ADD KEY `deposit_rules_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `digital_checkins`
--
ALTER TABLE `digital_checkins`
  ADD PRIMARY KEY (`id`),
  ADD KEY `digital_checkins_booking_id_foreign` (`booking_id`),
  ADD KEY `digital_checkins_guest_id_foreign` (`guest_id`),
  ADD KEY `digital_checkins_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `direction_links`
--
ALTER TABLE `direction_links`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `document_accessibility_records`
--
ALTER TABLE `document_accessibility_records`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `email_attachments`
--
ALTER TABLE `email_attachments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `email_attachments_email_log_id_foreign` (`email_log_id`);

--
-- Indexes for table `email_logs`
--
ALTER TABLE `email_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `email_logs_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `email_recipients`
--
ALTER TABLE `email_recipients`
  ADD PRIMARY KEY (`id`),
  ADD KEY `email_recipients_email_log_id_foreign` (`email_log_id`);

--
-- Indexes for table `email_templates`
--
ALTER TABLE `email_templates`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email_templates_name_unique` (`name`);

--
-- Indexes for table `emergency_alerts`
--
ALTER TABLE `emergency_alerts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alert_loc_fk` (`location_id`);

--
-- Indexes for table `emergency_contacts`
--
ALTER TABLE `emergency_contacts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `em_loc_fk` (`location_id`);

--
-- Indexes for table `emergency_drill_records`
--
ALTER TABLE `emergency_drill_records`
  ADD PRIMARY KEY (`id`),
  ADD KEY `drill_loc_fk` (`location_id`);

--
-- Indexes for table `enforcement_actions`
--
ALTER TABLE `enforcement_actions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `enforcement_actions_rule_breach_report_id_foreign` (`rule_breach_report_id`);

--
-- Indexes for table `enquiry_types`
--
ALTER TABLE `enquiry_types`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `enquiry_types_slug_unique` (`slug`);

--
-- Indexes for table `evacuation_maps`
--
ALTER TABLE `evacuation_maps`
  ADD PRIMARY KEY (`id`),
  ADD KEY `evac_loc_fk` (`location_id`);

--
-- Indexes for table `excessive_cleaning_reports`
--
ALTER TABLE `excessive_cleaning_reports`
  ADD PRIMARY KEY (`id`),
  ADD KEY `excessive_cleaning_reports_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `expansion_plans`
--
ALTER TABLE `expansion_plans`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `failed_jobs`
--
ALTER TABLE `failed_jobs`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`);

--
-- Indexes for table `faqs`
--
ALTER TABLE `faqs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `faqs_category_id_foreign` (`category_id`),
  ADD KEY `faqs_slug_index` (`slug`);

--
-- Indexes for table `faq_categories`
--
ALTER TABLE `faq_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `faq_categories_slug_unique` (`slug`);

--
-- Indexes for table `faq_feedback`
--
ALTER TABLE `faq_feedback`
  ADD PRIMARY KEY (`id`),
  ADD KEY `faq_feedback_faq_id_foreign` (`faq_id`);

--
-- Indexes for table `faq_links`
--
ALTER TABLE `faq_links`
  ADD PRIMARY KEY (`id`),
  ADD KEY `faq_links_faq_id_foreign` (`faq_id`);

--
-- Indexes for table `faq_search_logs`
--
ALTER TABLE `faq_search_logs`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `faq_unanswered_questions`
--
ALTER TABLE `faq_unanswered_questions`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `fire_equipment_registers`
--
ALTER TABLE `fire_equipment_registers`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fire_eq_loc_fk` (`location_id`);

--
-- Indexes for table `floor_plans`
--
ALTER TABLE `floor_plans`
  ADD PRIMARY KEY (`id`),
  ADD KEY `floor_plans_location_id_foreign` (`location_id`),
  ADD KEY `floor_plans_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `footer_columns`
--
ALTER TABLE `footer_columns`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `footer_ctas`
--
ALTER TABLE `footer_ctas`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `footer_links`
--
ALTER TABLE `footer_links`
  ADD PRIMARY KEY (`id`),
  ADD KEY `footer_links_footer_column_id_foreign` (`footer_column_id`);

--
-- Indexes for table `future_sustainability_plans`
--
ALTER TABLE `future_sustainability_plans`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `gallery_categories`
--
ALTER TABLE `gallery_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `gallery_categories_slug_unique` (`slug`);

--
-- Indexes for table `global_policy_templates`
--
ALTER TABLE `global_policy_templates`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `global_policy_templates_slug_unique` (`slug`);

--
-- Indexes for table `global_pricing_templates`
--
ALTER TABLE `global_pricing_templates`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `global_pricing_templates_slug_unique` (`slug`),
  ADD KEY `global_pricing_templates_applies_to_apartment_type_id_foreign` (`applies_to_apartment_type_id`);

--
-- Indexes for table `google_review_integrations`
--
ALTER TABLE `google_review_integrations`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `google_review_integrations_google_review_id_unique` (`google_review_id`);

--
-- Indexes for table `group_booking_requests`
--
ALTER TABLE `group_booking_requests`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `guests`
--
ALTER TABLE `guests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guests_user_id_foreign` (`user_id`);

--
-- Indexes for table `guest_activity_logs`
--
ALTER TABLE `guest_activity_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_activity_logs_user_id_foreign` (`user_id`);

--
-- Indexes for table `guest_booking_links`
--
ALTER TABLE `guest_booking_links`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `guest_booking_links_user_id_booking_id_unique` (`user_id`,`booking_id`),
  ADD KEY `guest_booking_links_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `guest_conduct_rules`
--
ALTER TABLE `guest_conduct_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `guest_documents`
--
ALTER TABLE `guest_documents`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_documents_guest_id_foreign` (`guest_id`);

--
-- Indexes for table `guest_identification_policies`
--
ALTER TABLE `guest_identification_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `guest_identification_policies_slug_unique` (`slug`);

--
-- Indexes for table `guest_identification_policy_acceptances`
--
ALTER TABLE `guest_identification_policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_identification_policy_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `guest_identification_policy_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `guest_identification_policy_acceptances_booking_id_foreign` (`booking_id`),
  ADD KEY `guest_identification_policy_acceptances_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `guest_identification_policy_sections`
--
ALTER TABLE `guest_identification_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_id_policy_sec_fk` (`guest_identification_policy_id`);

--
-- Indexes for table `guest_identification_policy_versions`
--
ALTER TABLE `guest_identification_policy_versions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_id_policy_ver_fk` (`guest_identification_policy_id`);

--
-- Indexes for table `guest_identity_documents`
--
ALTER TABLE `guest_identity_documents`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_identity_documents_guest_id_foreign` (`guest_id`),
  ADD KEY `guest_identity_documents_booking_id_foreign` (`booking_id`),
  ADD KEY `guest_id_doc_type_fk` (`id_document_type_id`),
  ADD KEY `guest_identity_documents_rejection_reason_id_foreign` (`rejection_reason_id`),
  ADD KEY `guest_identity_documents_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `guest_identity_verifications`
--
ALTER TABLE `guest_identity_verifications`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_id_verification_doc_fk` (`guest_identity_document_id`),
  ADD KEY `guest_identity_verifications_guest_id_foreign` (`guest_id`),
  ADD KEY `guest_identity_verifications_booking_id_foreign` (`booking_id`),
  ADD KEY `guest_identity_verifications_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `guest_identity_verification_status_histories`
--
ALTER TABLE `guest_identity_verification_status_histories`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_id_verification_hist_fk` (`guest_identity_verification_id`);

--
-- Indexes for table `guest_incident_reports`
--
ALTER TABLE `guest_incident_reports`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `guest_list_uploads`
--
ALTER TABLE `guest_list_uploads`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_list_uploads_group_booking_request_id_foreign` (`group_booking_request_id`),
  ADD KEY `guest_list_uploads_corporate_enquiry_id_foreign` (`corporate_enquiry_id`),
  ADD KEY `guest_list_uploads_long_stay_enquiry_id_foreign` (`long_stay_enquiry_id`),
  ADD KEY `guest_list_uploads_offer_enquiry_id_foreign` (`offer_enquiry_id`);

--
-- Indexes for table `guest_manual_access_logs`
--
ALTER TABLE `guest_manual_access_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_manual_access_logs_user_id_foreign` (`user_id`);

--
-- Indexes for table `guest_manual_sections`
--
ALTER TABLE `guest_manual_sections`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `guest_notifications`
--
ALTER TABLE `guest_notifications`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_notifications_user_id_foreign` (`user_id`);

--
-- Indexes for table `guest_profiles`
--
ALTER TABLE `guest_profiles`
  ADD PRIMARY KEY (`id`),
  ADD KEY `guest_profiles_user_id_foreign` (`user_id`);

--
-- Indexes for table `guest_safety_information`
--
ALTER TABLE `guest_safety_information`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `guest_safety_notifications`
--
ALTER TABLE `guest_safety_notifications`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `guest_services`
--
ALTER TABLE `guest_services`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `guest_services_slug_unique` (`slug`);

--
-- Indexes for table `guest_sustainability_guidance`
--
ALTER TABLE `guest_sustainability_guidance`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `header_ctas`
--
ALTER TABLE `header_ctas`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `homepage_badges`
--
ALTER TABLE `homepage_badges`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `homepage_feature_cards`
--
ALTER TABLE `homepage_feature_cards`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `homepage_hero_slides`
--
ALTER TABLE `homepage_hero_slides`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `homepage_sections`
--
ALTER TABLE `homepage_sections`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `homepage_sections_section_key_unique` (`section_key`);

--
-- Indexes for table `hospitality_promises`
--
ALTER TABLE `hospitality_promises`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `housekeeping_requests`
--
ALTER TABLE `housekeeping_requests`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `housekeeping_tasks`
--
ALTER TABLE `housekeeping_tasks`
  ADD PRIMARY KEY (`id`),
  ADD KEY `housekeeping_tasks_unit_id_foreign` (`unit_id`);

--
-- Indexes for table `house_rules_policies`
--
ALTER TABLE `house_rules_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `house_rules_policies_slug_unique` (`slug`);

--
-- Indexes for table `house_rule_acceptances`
--
ALTER TABLE `house_rule_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `house_rule_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `house_rule_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `house_rule_acceptances_booking_id_foreign` (`booking_id`),
  ADD KEY `house_rule_acceptances_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `house_rule_categories`
--
ALTER TABLE `house_rule_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `house_rule_categories_slug_unique` (`slug`);

--
-- Indexes for table `house_rule_sections`
--
ALTER TABLE `house_rule_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `house_rule_sections_house_rules_policy_id_foreign` (`house_rules_policy_id`),
  ADD KEY `house_rule_sections_house_rule_category_id_foreign` (`house_rule_category_id`);

--
-- Indexes for table `identity_access_logs`
--
ALTER TABLE `identity_access_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `identity_access_logs_user_id_foreign` (`user_id`),
  ADD KEY `id_access_guest_doc_fk` (`guest_identity_document_id`);

--
-- Indexes for table `identity_retention_rules`
--
ALTER TABLE `identity_retention_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `id_document_types`
--
ALTER TABLE `id_document_types`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `id_document_types_slug_unique` (`slug`);

--
-- Indexes for table `id_rejection_reasons`
--
ALTER TABLE `id_rejection_reasons`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `id_rejection_reasons_reason_key_unique` (`reason_key`);

--
-- Indexes for table `incident_evidence_media`
--
ALTER TABLE `incident_evidence_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `inc_ev_rep_fk` (`guest_incident_report_id`);

--
-- Indexes for table `inventory_items`
--
ALTER TABLE `inventory_items`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `invoices`
--
ALTER TABLE `invoices`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `invoices_invoice_number_unique` (`invoice_number`),
  ADD KEY `invoices_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `invoice_items`
--
ALTER TABLE `invoice_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `invoice_items_invoice_id_foreign` (`invoice_id`);

--
-- Indexes for table `jobs`
--
ALTER TABLE `jobs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `jobs_queue_index` (`queue`);

--
-- Indexes for table `job_batches`
--
ALTER TABLE `job_batches`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `landmarks`
--
ALTER TABLE `landmarks`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `landmarks_slug_unique` (`slug`),
  ADD KEY `landmarks_landmark_category_id_foreign` (`landmark_category_id`),
  ADD KEY `landmarks_media_id_foreign` (`media_id`);

--
-- Indexes for table `landmark_categories`
--
ALTER TABLE `landmark_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `landmark_categories_slug_unique` (`slug`);

--
-- Indexes for table `legal_pages`
--
ALTER TABLE `legal_pages`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `legal_pages_slug_unique` (`slug`);

--
-- Indexes for table `legal_page_sections`
--
ALTER TABLE `legal_page_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `legal_page_sections_legal_page_id_foreign` (`legal_page_id`);

--
-- Indexes for table `locations`
--
ALTER TABLE `locations`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `locations_slug_unique` (`slug`);

--
-- Indexes for table `location_amenities`
--
ALTER TABLE `location_amenities`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `location_amenities_location_id_amenity_id_unique` (`location_id`,`amenity_id`),
  ADD KEY `location_amenities_amenity_id_foreign` (`amenity_id`);

--
-- Indexes for table `location_amenity`
--
ALTER TABLE `location_amenity`
  ADD PRIMARY KEY (`id`),
  ADD KEY `location_relationship_amenity_location_id_foreign` (`location_id`),
  ADD KEY `location_relationship_amenity_amenity_id_foreign` (`amenity_id`);

--
-- Indexes for table `location_landmarks`
--
ALTER TABLE `location_landmarks`
  ADD PRIMARY KEY (`location_id`,`landmark_id`),
  ADD KEY `location_landmarks_landmark_id_foreign` (`landmark_id`);

--
-- Indexes for table `location_media`
--
ALTER TABLE `location_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `location_media_location_id_foreign` (`location_id`),
  ADD KEY `location_media_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `location_policies`
--
ALTER TABLE `location_policies`
  ADD PRIMARY KEY (`id`),
  ADD KEY `location_policies_location_id_foreign` (`location_id`),
  ADD KEY `location_policies_global_policy_template_id_foreign` (`global_policy_template_id`);

--
-- Indexes for table `location_safety_profiles`
--
ALTER TABLE `location_safety_profiles`
  ADD PRIMARY KEY (`id`),
  ADD KEY `loc_safe_prof_fk` (`location_id`);

--
-- Indexes for table `location_settings`
--
ALTER TABLE `location_settings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `location_settings_location_id_setting_key_unique` (`location_id`,`setting_key`),
  ADD KEY `location_settings_updated_by_foreign` (`updated_by`);

--
-- Indexes for table `location_staff_assignments`
--
ALTER TABLE `location_staff_assignments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `location_staff_assignments_user_id_foreign` (`user_id`),
  ADD KEY `location_staff_assignments_location_id_foreign` (`location_id`),
  ADD KEY `location_staff_assignments_role_id_foreign` (`role_id`),
  ADD KEY `location_staff_assignments_assigned_by_foreign` (`assigned_by`);

--
-- Indexes for table `long_stay_deposit_rules`
--
ALTER TABLE `long_stay_deposit_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `long_stay_enquiries`
--
ALTER TABLE `long_stay_enquiries`
  ADD PRIMARY KEY (`id`),
  ADD KEY `long_stay_enquiries_apartment_type_id_foreign` (`apartment_type_id`),
  ADD KEY `long_stay_enquiries_location_id_foreign` (`location_id`),
  ADD KEY `long_stay_enquiries_assigned_to_foreign` (`assigned_to`);

--
-- Indexes for table `long_stay_rate_rules`
--
ALTER TABLE `long_stay_rate_rules`
  ADD PRIMARY KEY (`id`),
  ADD KEY `long_stay_rate_rules_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `long_stay_rules`
--
ALTER TABLE `long_stay_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `lost_and_found_items`
--
ALTER TABLE `lost_and_found_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `lost_and_found_items_unit_id_foreign` (`unit_id`);

--
-- Indexes for table `mail_settings`
--
ALTER TABLE `mail_settings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `mail_settings_key_unique` (`key`);

--
-- Indexes for table `maintenance_tickets`
--
ALTER TABLE `maintenance_tickets`
  ADD PRIMARY KEY (`id`),
  ADD KEY `maintenance_tickets_unit_id_foreign` (`unit_id`);

--
-- Indexes for table `map_settings`
--
ALTER TABLE `map_settings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `map_settings_key_unique` (`key`);

--
-- Indexes for table `media_accessibility_records`
--
ALTER TABLE `media_accessibility_records`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `media_assets`
--
ALTER TABLE `media_assets`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `media_assets_slug_unique` (`slug`),
  ADD KEY `media_assets_gallery_category_id_foreign` (`gallery_category_id`),
  ADD KEY `media_assets_location_id_foreign` (`location_id`),
  ADD KEY `media_assets_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `media_credits`
--
ALTER TABLE `media_credits`
  ADD PRIMARY KEY (`id`),
  ADD KEY `media_credits_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `media_events`
--
ALTER TABLE `media_events`
  ADD PRIMARY KEY (`id`),
  ADD KEY `media_events_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `media_variants`
--
ALTER TABLE `media_variants`
  ADD PRIMARY KEY (`id`),
  ADD KEY `media_variants_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `mega_menu_groups`
--
ALTER TABLE `mega_menu_groups`
  ADD PRIMARY KEY (`id`),
  ADD KEY `mega_menu_groups_navigation_menu_item_id_foreign` (`navigation_menu_item_id`);

--
-- Indexes for table `mega_menu_items`
--
ALTER TABLE `mega_menu_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `mega_menu_items_mega_menu_group_id_foreign` (`mega_menu_group_id`);

--
-- Indexes for table `mega_menu_preview_cards`
--
ALTER TABLE `mega_menu_preview_cards`
  ADD PRIMARY KEY (`id`),
  ADD KEY `mega_menu_preview_cards_mega_menu_group_id_foreign` (`mega_menu_group_id`);

--
-- Indexes for table `menu_icons`
--
ALTER TABLE `menu_icons`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `menu_icons_name_unique` (`name`);

--
-- Indexes for table `migrations`
--
ALTER TABLE `migrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `missing_item_reports`
--
ALTER TABLE `missing_item_reports`
  ADD PRIMARY KEY (`id`),
  ADD KEY `missing_item_reports_booking_id_foreign` (`booking_id`),
  ADD KEY `missing_item_reports_inventory_item_id_foreign` (`inventory_item_id`);

--
-- Indexes for table `model_has_permissions`
--
ALTER TABLE `model_has_permissions`
  ADD PRIMARY KEY (`permission_id`,`model_id`,`model_type`),
  ADD KEY `model_has_permissions_model_id_model_type_index` (`model_id`,`model_type`);

--
-- Indexes for table `model_has_roles`
--
ALTER TABLE `model_has_roles`
  ADD PRIMARY KEY (`role_id`,`model_id`,`model_type`),
  ADD KEY `model_has_roles_model_id_model_type_index` (`model_id`,`model_type`);

--
-- Indexes for table `motion_accessibility_settings`
--
ALTER TABLE `motion_accessibility_settings`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `navigation_badges`
--
ALTER TABLE `navigation_badges`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `navigation_menus`
--
ALTER TABLE `navigation_menus`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `navigation_menus_slug_unique` (`slug`);

--
-- Indexes for table `navigation_menu_items`
--
ALTER TABLE `navigation_menu_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `navigation_menu_items_navigation_menu_id_foreign` (`navigation_menu_id`);

--
-- Indexes for table `neighbourhood_guides`
--
ALTER TABLE `neighbourhood_guides`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `neighbourhood_guides_slug_unique` (`slug`);

--
-- Indexes for table `neighbourhood_guide_sections`
--
ALTER TABLE `neighbourhood_guide_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `neighbourhood_guide_sections_neighbourhood_guide_id_foreign` (`neighbourhood_guide_id`),
  ADD KEY `neighbourhood_guide_sections_media_id_foreign` (`media_id`);

--
-- Indexes for table `newsletter_subscribers`
--
ALTER TABLE `newsletter_subscribers`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `newsletter_subscribers_email_unique` (`email`);

--
-- Indexes for table `noise_rules`
--
ALTER TABLE `noise_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `offers`
--
ALTER TABLE `offers`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `offers_slug_unique` (`slug`),
  ADD KEY `offers_offer_type_id_foreign` (`offer_type_id`),
  ADD KEY `offers_promo_code_id_foreign` (`promo_code_id`);

--
-- Indexes for table `offer_apartment_type`
--
ALTER TABLE `offer_apartment_type`
  ADD PRIMARY KEY (`offer_id`,`apartment_type_id`),
  ADD KEY `offer_apartment_type_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `offer_blackout_dates`
--
ALTER TABLE `offer_blackout_dates`
  ADD PRIMARY KEY (`id`),
  ADD KEY `offer_blackout_dates_offer_id_foreign` (`offer_id`);

--
-- Indexes for table `offer_enquiries`
--
ALTER TABLE `offer_enquiries`
  ADD PRIMARY KEY (`id`),
  ADD KEY `offer_enquiries_offer_id_foreign` (`offer_id`);

--
-- Indexes for table `offer_location`
--
ALTER TABLE `offer_location`
  ADD PRIMARY KEY (`offer_id`,`location_id`),
  ADD KEY `offer_location_location_id_foreign` (`location_id`);

--
-- Indexes for table `offer_types`
--
ALTER TABLE `offer_types`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `offer_types_slug_unique` (`slug`);

--
-- Indexes for table `password_reset_tokens`
--
ALTER TABLE `password_reset_tokens`
  ADD PRIMARY KEY (`email`);

--
-- Indexes for table `payments`
--
ALTER TABLE `payments`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `payments_transaction_reference_unique` (`transaction_reference`),
  ADD UNIQUE KEY `payments_tx_ref_unique` (`tx_ref`),
  ADD KEY `payments_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `payment_attempts`
--
ALTER TABLE `payment_attempts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_attempts_payment_id_foreign` (`payment_id`),
  ADD KEY `payment_attempts_booking_id_foreign` (`booking_id`),
  ADD KEY `payment_attempts_tx_ref_index` (`tx_ref`);

--
-- Indexes for table `payment_disputes`
--
ALTER TABLE `payment_disputes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_disputes_booking_id_foreign` (`booking_id`),
  ADD KEY `payment_disputes_payment_id_foreign` (`payment_id`);

--
-- Indexes for table `payment_gateways`
--
ALTER TABLE `payment_gateways`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `payment_gateway_transactions`
--
ALTER TABLE `payment_gateway_transactions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_gateway_transactions_booking_id_foreign` (`booking_id`),
  ADD KEY `payment_gateway_transactions_payment_gateway_id_foreign` (`payment_gateway_id`),
  ADD KEY `payment_gateway_transactions_gateway_reference_index` (`gateway_reference`);

--
-- Indexes for table `payment_methods`
--
ALTER TABLE `payment_methods`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `payment_methods_slug_unique` (`slug`);

--
-- Indexes for table `payment_policies`
--
ALTER TABLE `payment_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `payment_policies_slug_unique` (`slug`);

--
-- Indexes for table `payment_policy_acceptances`
--
ALTER TABLE `payment_policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_policy_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `payment_policy_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `payment_policy_acceptances_booking_id_foreign` (`booking_id`),
  ADD KEY `payment_policy_acceptances_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `payment_policy_sections`
--
ALTER TABLE `payment_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_policy_sections_payment_policy_id_foreign` (`payment_policy_id`);

--
-- Indexes for table `payment_status_histories`
--
ALTER TABLE `payment_status_histories`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_status_histories_payment_id_foreign` (`payment_id`);

--
-- Indexes for table `payment_transactions`
--
ALTER TABLE `payment_transactions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `payment_transactions_payment_id_foreign` (`payment_id`),
  ADD KEY `payment_transactions_transaction_reference_index` (`transaction_reference`);

--
-- Indexes for table `payment_webhook_events`
--
ALTER TABLE `payment_webhook_events`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `payment_webhook_events_event_id_unique` (`event_id`);

--
-- Indexes for table `permissions`
--
ALTER TABLE `permissions`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `permissions_name_guard_name_unique` (`name`,`guard_name`);

--
-- Indexes for table `pms_integrations`
--
ALTER TABLE `pms_integrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `pms_sync_logs`
--
ALTER TABLE `pms_sync_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `pms_sync_logs_pms_integration_id_foreign` (`pms_integration_id`);

--
-- Indexes for table `policies`
--
ALTER TABLE `policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `policies_slug_unique` (`slug`);

--
-- Indexes for table `policy_acceptances`
--
ALTER TABLE `policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `policy_acceptances_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `policy_versions`
--
ALTER TABLE `policy_versions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `policy_versions_location_policy_id_foreign` (`location_policy_id`),
  ADD KEY `policy_versions_global_policy_template_id_foreign` (`global_policy_template_id`),
  ADD KEY `policy_versions_created_by_foreign` (`created_by`);

--
-- Indexes for table `pricing_rules`
--
ALTER TABLE `pricing_rules`
  ADD PRIMARY KEY (`id`),
  ADD KEY `pricing_rules_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `privacy_policies`
--
ALTER TABLE `privacy_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `privacy_policies_slug_unique` (`slug`);

--
-- Indexes for table `privacy_policy_acceptances`
--
ALTER TABLE `privacy_policy_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `privacy_policy_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `privacy_policy_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `privacy_policy_acceptances_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `privacy_policy_sections`
--
ALTER TABLE `privacy_policy_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `pr_policy_sections_policy_id_foreign` (`privacy_policy_id`);

--
-- Indexes for table `privacy_requests`
--
ALTER TABLE `privacy_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `privacy_requests_assigned_to_foreign` (`assigned_to`);

--
-- Indexes for table `privacy_request_status_histories`
--
ALTER TABLE `privacy_request_status_histories`
  ADD PRIMARY KEY (`id`),
  ADD KEY `privacy_request_status_histories_privacy_request_id_foreign` (`privacy_request_id`),
  ADD KEY `privacy_request_status_histories_changed_by_foreign` (`changed_by`);

--
-- Indexes for table `promo_codes`
--
ALTER TABLE `promo_codes`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `promo_codes_code_unique` (`code`);

--
-- Indexes for table `promo_code_redemptions`
--
ALTER TABLE `promo_code_redemptions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `promo_code_redemptions_promo_code_id_foreign` (`promo_code_id`);

--
-- Indexes for table `proof_of_payment_uploads`
--
ALTER TABLE `proof_of_payment_uploads`
  ADD PRIMARY KEY (`id`),
  ADD KEY `proof_of_payment_uploads_booking_id_foreign` (`booking_id`),
  ADD KEY `proof_of_payment_uploads_guest_id_foreign` (`guest_id`),
  ADD KEY `proof_of_payment_uploads_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `property_accessibility_profiles`
--
ALTER TABLE `property_accessibility_profiles`
  ADD PRIMARY KEY (`id`),
  ADD KEY `prop_acc_loc_fk` (`location_id`);

--
-- Indexes for table `quality_standards`
--
ALTER TABLE `quality_standards`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `receipts`
--
ALTER TABLE `receipts`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `receipts_receipt_number_unique` (`receipt_number`),
  ADD KEY `receipts_payment_id_foreign` (`payment_id`);

--
-- Indexes for table `receipt_items`
--
ALTER TABLE `receipt_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `receipt_items_receipt_id_foreign` (`receipt_id`);

--
-- Indexes for table `recommendation_requests`
--
ALTER TABLE `recommendation_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `recommendation_requests_recommended_apartment_type_id_foreign` (`recommended_apartment_type_id`);

--
-- Indexes for table `refund_requests`
--
ALTER TABLE `refund_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `refund_requests_booking_id_foreign` (`booking_id`),
  ADD KEY `refund_requests_guest_id_foreign` (`guest_id`),
  ADD KEY `refund_requests_payment_id_foreign` (`payment_id`),
  ADD KEY `refund_requests_reviewed_by_foreign` (`reviewed_by`);

--
-- Indexes for table `refund_status_histories`
--
ALTER TABLE `refund_status_histories`
  ADD PRIMARY KEY (`id`),
  ADD KEY `refund_status_histories_refund_request_id_foreign` (`refund_request_id`),
  ADD KEY `refund_status_histories_changed_by_foreign` (`changed_by`);

--
-- Indexes for table `repeat_stay_requests`
--
ALTER TABLE `repeat_stay_requests`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `reviews`
--
ALTER TABLE `reviews`
  ADD PRIMARY KEY (`id`),
  ADD KEY `reviews_booking_id_foreign` (`booking_id`),
  ADD KEY `reviews_location_id_foreign` (`location_id`),
  ADD KEY `reviews_apartment_type_id_foreign` (`apartment_type_id`),
  ADD KEY `reviews_source_id_foreign` (`source_id`),
  ADD KEY `reviews_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `review_categories`
--
ALTER TABLE `review_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `review_categories_slug_unique` (`slug`);

--
-- Indexes for table `review_category_ratings`
--
ALTER TABLE `review_category_ratings`
  ADD PRIMARY KEY (`id`),
  ADD KEY `review_category_ratings_review_id_foreign` (`review_id`),
  ADD KEY `review_category_ratings_review_category_id_foreign` (`review_category_id`);

--
-- Indexes for table `review_helpful_votes`
--
ALTER TABLE `review_helpful_votes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `review_helpful_votes_review_id_foreign` (`review_id`),
  ADD KEY `review_helpful_votes_ip_address_index` (`ip_address`);

--
-- Indexes for table `review_media`
--
ALTER TABLE `review_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `review_media_review_id_foreign` (`review_id`),
  ADD KEY `review_media_media_id_foreign` (`media_id`);

--
-- Indexes for table `review_moderation_logs`
--
ALTER TABLE `review_moderation_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `review_moderation_logs_review_id_foreign` (`review_id`),
  ADD KEY `review_moderation_logs_user_id_foreign` (`user_id`);

--
-- Indexes for table `review_reports`
--
ALTER TABLE `review_reports`
  ADD PRIMARY KEY (`id`),
  ADD KEY `review_reports_review_id_foreign` (`review_id`);

--
-- Indexes for table `review_responses`
--
ALTER TABLE `review_responses`
  ADD PRIMARY KEY (`id`),
  ADD KEY `review_responses_review_id_foreign` (`review_id`);

--
-- Indexes for table `review_sources`
--
ALTER TABLE `review_sources`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `review_sources_slug_unique` (`slug`);

--
-- Indexes for table `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `roles_name_guard_name_unique` (`name`,`guard_name`);

--
-- Indexes for table `role_has_permissions`
--
ALTER TABLE `role_has_permissions`
  ADD PRIMARY KEY (`permission_id`,`role_id`),
  ADD KEY `role_has_permissions_role_id_foreign` (`role_id`);

--
-- Indexes for table `rule_breach_reports`
--
ALTER TABLE `rule_breach_reports`
  ADD PRIMARY KEY (`id`),
  ADD KEY `rule_breach_reports_booking_id_foreign` (`booking_id`),
  ADD KEY `rule_breach_reports_guest_id_foreign` (`guest_id`),
  ADD KEY `rule_breach_reports_location_id_foreign` (`location_id`),
  ADD KEY `rule_breach_reports_unit_id_foreign` (`unit_id`),
  ADD KEY `rule_breach_reports_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `safety_device_registers`
--
ALTER TABLE `safety_device_registers`
  ADD PRIMARY KEY (`id`),
  ADD KEY `safe_dev_loc_fk` (`location_id`);

--
-- Indexes for table `safety_information_pages`
--
ALTER TABLE `safety_information_pages`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `safety_information_pages_slug_unique` (`slug`);

--
-- Indexes for table `safety_information_sections`
--
ALTER TABLE `safety_information_sections`
  ADD PRIMARY KEY (`id`),
  ADD KEY `safe_page_sec_fk` (`safety_information_page_id`);

--
-- Indexes for table `safety_information_versions`
--
ALTER TABLE `safety_information_versions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `safe_page_ver_fk` (`safety_information_page_id`);

--
-- Indexes for table `safety_inspection_records`
--
ALTER TABLE `safety_inspection_records`
  ADD PRIMARY KEY (`id`),
  ADD KEY `inspect_loc_fk` (`location_id`);

--
-- Indexes for table `schema_metadata`
--
ALTER TABLE `schema_metadata`
  ADD PRIMARY KEY (`id`),
  ADD KEY `schema_metadata_model_type_model_id_index` (`model_type`,`model_id`);

--
-- Indexes for table `search_index_items`
--
ALTER TABLE `search_index_items`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `search_logs`
--
ALTER TABLE `search_logs`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `security_access_rules`
--
ALTER TABLE `security_access_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `security_deposit_transactions`
--
ALTER TABLE `security_deposit_transactions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `security_deposit_transactions_booking_id_foreign` (`booking_id`),
  ADD KEY `security_deposit_transactions_guest_id_foreign` (`guest_id`),
  ADD KEY `security_deposit_transactions_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `security_features`
--
ALTER TABLE `security_features`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `security_features_slug_unique` (`slug`),
  ADD KEY `security_features_media_id_foreign` (`media_id`);

--
-- Indexes for table `seo_metadata`
--
ALTER TABLE `seo_metadata`
  ADD PRIMARY KEY (`id`),
  ADD KEY `seo_metadata_model_type_model_id_index` (`model_type`,`model_id`);

--
-- Indexes for table `service_requests`
--
ALTER TABLE `service_requests`
  ADD PRIMARY KEY (`id`),
  ADD KEY `service_requests_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `service_request_status_histories`
--
ALTER TABLE `service_request_status_histories`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `sessions`
--
ALTER TABLE `sessions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `sessions_user_id_index` (`user_id`),
  ADD KEY `sessions_last_activity_index` (`last_activity`);

--
-- Indexes for table `settings`
--
ALTER TABLE `settings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `settings_key_unique` (`key`);

--
-- Indexes for table `site_settings`
--
ALTER TABLE `site_settings`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `site_settings_key_unique` (`key`);

--
-- Indexes for table `smart_living_features`
--
ALTER TABLE `smart_living_features`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `smart_living_features_slug_unique` (`slug`),
  ADD KEY `smart_living_features_media_id_foreign` (`media_id`);

--
-- Indexes for table `smoking_pet_rules`
--
ALTER TABLE `smoking_pet_rules`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `social_links`
--
ALTER TABLE `social_links`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `spam_logs`
--
ALTER TABLE `spam_logs`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `special_requests`
--
ALTER TABLE `special_requests`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `staff_emergency_roles`
--
ALTER TABLE `staff_emergency_roles`
  ADD PRIMARY KEY (`id`),
  ADD KEY `staff_role_user_fk` (`user_id`);

--
-- Indexes for table `support_hours`
--
ALTER TABLE `support_hours`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `support_tickets`
--
ALTER TABLE `support_tickets`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `support_tickets_ticket_number_unique` (`ticket_number`),
  ADD KEY `support_tickets_user_id_foreign` (`user_id`),
  ADD KEY `support_tickets_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `support_ticket_messages`
--
ALTER TABLE `support_ticket_messages`
  ADD PRIMARY KEY (`id`),
  ADD KEY `support_ticket_messages_support_ticket_id_foreign` (`support_ticket_id`);

--
-- Indexes for table `suspicious_identity_cases`
--
ALTER TABLE `suspicious_identity_cases`
  ADD PRIMARY KEY (`id`),
  ADD KEY `suspicious_guest_doc_fk` (`guest_identity_document_id`),
  ADD KEY `suspicious_identity_cases_guest_id_foreign` (`guest_id`),
  ADD KEY `suspicious_identity_cases_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `sustainability_categories`
--
ALTER TABLE `sustainability_categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `sustainability_categories_slug_unique` (`slug`);

--
-- Indexes for table `sustainability_evidence`
--
ALTER TABLE `sustainability_evidence`
  ADD PRIMARY KEY (`id`),
  ADD KEY `sustainability_evidence_sustainability_feature_id_foreign` (`sustainability_feature_id`);

--
-- Indexes for table `sustainability_features`
--
ALTER TABLE `sustainability_features`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `sustainability_features_slug_unique` (`slug`),
  ADD KEY `sustainability_features_sustainability_category_id_foreign` (`sustainability_category_id`),
  ADD KEY `sustainability_features_media_id_foreign` (`media_id`);

--
-- Indexes for table `sustainability_media`
--
ALTER TABLE `sustainability_media`
  ADD PRIMARY KEY (`id`),
  ADD KEY `sustainability_media_media_id_foreign` (`media_id`);

--
-- Indexes for table `team_profiles`
--
ALTER TABLE `team_profiles`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `terms_acceptances`
--
ALTER TABLE `terms_acceptances`
  ADD PRIMARY KEY (`id`),
  ADD KEY `terms_acceptances_user_id_foreign` (`user_id`),
  ADD KEY `terms_acceptances_guest_id_foreign` (`guest_id`),
  ADD KEY `terms_acceptances_booking_id_foreign` (`booking_id`);

--
-- Indexes for table `theme_audit_logs`
--
ALTER TABLE `theme_audit_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `theme_audit_logs_user_id_foreign` (`user_id`);

--
-- Indexes for table `theme_settings`
--
ALTER TABLE `theme_settings`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `tour_events`
--
ALTER TABLE `tour_events`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `transport_ctas`
--
ALTER TABLE `transport_ctas`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `transport_request_status_histories`
--
ALTER TABLE `transport_request_status_histories`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `transport_services`
--
ALTER TABLE `transport_services`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `transport_services_slug_unique` (`slug`);

--
-- Indexes for table `units`
--
ALTER TABLE `units`
  ADD PRIMARY KEY (`id`),
  ADD KEY `units_apartment_type_id_foreign` (`apartment_type_id`),
  ADD KEY `units_building_id_foreign` (`building_id`);

--
-- Indexes for table `unit_condition_checklists`
--
ALTER TABLE `unit_condition_checklists`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `unit_condition_records`
--
ALTER TABLE `unit_condition_records`
  ADD PRIMARY KEY (`id`),
  ADD KEY `unit_condition_records_booking_id_foreign` (`booking_id`),
  ADD KEY `unit_condition_records_unit_id_foreign` (`unit_id`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `users_email_unique` (`email`);

--
-- Indexes for table `user_theme_preferences`
--
ALTER TABLE `user_theme_preferences`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_theme_preferences_user_id_foreign` (`user_id`);

--
-- Indexes for table `vehicle_types`
--
ALTER TABLE `vehicle_types`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `vehicle_types_slug_unique` (`slug`);

--
-- Indexes for table `video_assets`
--
ALTER TABLE `video_assets`
  ADD PRIMARY KEY (`id`),
  ADD KEY `video_assets_media_asset_id_foreign` (`media_asset_id`);

--
-- Indexes for table `video_testimonials`
--
ALTER TABLE `video_testimonials`
  ADD PRIMARY KEY (`id`),
  ADD KEY `video_testimonials_apartment_type_id_foreign` (`apartment_type_id`);

--
-- Indexes for table `virtual_tour_assets`
--
ALTER TABLE `virtual_tour_assets`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `virtual_tour_assets_slug_unique` (`slug`);

--
-- Indexes for table `virtual_tour_hotspots`
--
ALTER TABLE `virtual_tour_hotspots`
  ADD PRIMARY KEY (`id`),
  ADD KEY `virtual_tour_hotspots_virtual_tour_asset_id_foreign` (`virtual_tour_asset_id`),
  ADD KEY `virtual_tour_hotspots_target_scene_id_foreign` (`target_scene_id`);

--
-- Indexes for table `visitor_identity_records`
--
ALTER TABLE `visitor_identity_records`
  ADD PRIMARY KEY (`id`),
  ADD KEY `visitor_identity_records_booking_id_foreign` (`booking_id`),
  ADD KEY `visitor_identity_records_guest_id_foreign` (`guest_id`),
  ADD KEY `visitor_identity_records_booking_reference_index` (`booking_reference`);

--
-- Indexes for table `visitor_policies`
--
ALTER TABLE `visitor_policies`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `visitor_policies_slug_unique` (`slug`);

--
-- Indexes for table `visitor_rules`
--
ALTER TABLE `visitor_rules`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `abandoned_bookings`
--
ALTER TABLE `abandoned_bookings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `about_media`
--
ALTER TABLE `about_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `about_sections`
--
ALTER TABLE `about_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `accent_themes`
--
ALTER TABLE `accent_themes`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `accessibility_audits`
--
ALTER TABLE `accessibility_audits`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_audit_findings`
--
ALTER TABLE `accessibility_audit_findings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_feedback`
--
ALTER TABLE `accessibility_feedback`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_issues`
--
ALTER TABLE `accessibility_issues`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_remediation_tasks`
--
ALTER TABLE `accessibility_remediation_tasks`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_statements`
--
ALTER TABLE `accessibility_statements`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `accessibility_statement_sections`
--
ALTER TABLE `accessibility_statement_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `accessibility_statement_versions`
--
ALTER TABLE `accessibility_statement_versions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_statuses`
--
ALTER TABLE `accessibility_statuses`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `accessibility_support_requests`
--
ALTER TABLE `accessibility_support_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `accessibility_widget_settings`
--
ALTER TABLE `accessibility_widget_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `add_on_services`
--
ALTER TABLE `add_on_services`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `airports`
--
ALTER TABLE `airports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `airport_pickup_requests`
--
ALTER TABLE `airport_pickup_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `amenities`
--
ALTER TABLE `amenities`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=36;

--
-- AUTO_INCREMENT for table `amenity_categories`
--
ALTER TABLE `amenity_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `amenity_comparison_fields`
--
ALTER TABLE `amenity_comparison_fields`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `amenity_media`
--
ALTER TABLE `amenity_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `apartment_types`
--
ALTER TABLE `apartment_types`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `apartment_type_media`
--
ALTER TABLE `apartment_type_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22;

--
-- AUTO_INCREMENT for table `arrival_time_submissions`
--
ALTER TABLE `arrival_time_submissions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `assembly_points`
--
ALTER TABLE `assembly_points`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `assistive_technology_tests`
--
ALTER TABLE `assistive_technology_tests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `audit_logs`
--
ALTER TABLE `audit_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `availability_blocks`
--
ALTER TABLE `availability_blocks`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `bank_accounts`
--
ALTER TABLE `bank_accounts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `bank_transfer_uploads`
--
ALTER TABLE `bank_transfer_uploads`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `blog_authors`
--
ALTER TABLE `blog_authors`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `blog_categories`
--
ALTER TABLE `blog_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT for table `blog_events`
--
ALTER TABLE `blog_events`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `blog_posts`
--
ALTER TABLE `blog_posts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `blog_post_faqs`
--
ALTER TABLE `blog_post_faqs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=37;

--
-- AUTO_INCREMENT for table `blog_post_redirects`
--
ALTER TABLE `blog_post_redirects`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `blog_post_revisions`
--
ALTER TABLE `blog_post_revisions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `blog_post_tag`
--
ALTER TABLE `blog_post_tag`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=39;

--
-- AUTO_INCREMENT for table `blog_related_posts`
--
ALTER TABLE `blog_related_posts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;

--
-- AUTO_INCREMENT for table `blog_search_logs`
--
ALTER TABLE `blog_search_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `blog_tags`
--
ALTER TABLE `blog_tags`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `bookings`
--
ALTER TABLE `bookings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `booking_add_ons`
--
ALTER TABLE `booking_add_ons`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_cancellation_requests`
--
ALTER TABLE `booking_cancellation_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_enquiries`
--
ALTER TABLE `booking_enquiries`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_guests`
--
ALTER TABLE `booking_guests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_modification_requests`
--
ALTER TABLE `booking_modification_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_notifications`
--
ALTER TABLE `booking_notifications`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_policies`
--
ALTER TABLE `booking_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `booking_policy_acceptances`
--
ALTER TABLE `booking_policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `booking_policy_sections`
--
ALTER TABLE `booking_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `booking_status_histories`
--
ALTER TABLE `booking_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `brand_content_blocks`
--
ALTER TABLE `brand_content_blocks`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `brand_profiles`
--
ALTER TABLE `brand_profiles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `brand_values`
--
ALTER TABLE `brand_values`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `buildings`
--
ALTER TABLE `buildings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `cancellation_refund_policies`
--
ALTER TABLE `cancellation_refund_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `cancellation_refund_policy_acceptances`
--
ALTER TABLE `cancellation_refund_policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `cancellation_refund_policy_sections`
--
ALTER TABLE `cancellation_refund_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `cancellation_requests`
--
ALTER TABLE `cancellation_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `car_rental_requests`
--
ALTER TABLE `car_rental_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `channel_integrations`
--
ALTER TABLE `channel_integrations`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `channel_sync_logs`
--
ALTER TABLE `channel_sync_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `company_billing_profiles`
--
ALTER TABLE `company_billing_profiles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `comparison_fields`
--
ALTER TABLE `comparison_fields`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `comparison_field_values`
--
ALTER TABLE `comparison_field_values`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=53;

--
-- AUTO_INCREMENT for table `consent_records`
--
ALTER TABLE `consent_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `contact_enquiries`
--
ALTER TABLE `contact_enquiries`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `contact_messages`
--
ALTER TABLE `contact_messages`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `contact_settings`
--
ALTER TABLE `contact_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `cookie_categories`
--
ALTER TABLE `cookie_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `cookie_consents`
--
ALTER TABLE `cookie_consents`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `cookie_consent_events`
--
ALTER TABLE `cookie_consent_events`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `cookie_consent_preferences`
--
ALTER TABLE `cookie_consent_preferences`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `cookie_items`
--
ALTER TABLE `cookie_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `cookie_policies`
--
ALTER TABLE `cookie_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `cookie_policy_sections`
--
ALTER TABLE `cookie_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `corporate_booking_status_histories`
--
ALTER TABLE `corporate_booking_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_clients`
--
ALTER TABLE `corporate_clients`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_contacts`
--
ALTER TABLE `corporate_contacts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_deposit_rules`
--
ALTER TABLE `corporate_deposit_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_enquiries`
--
ALTER TABLE `corporate_enquiries`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_guest_lists`
--
ALTER TABLE `corporate_guest_lists`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_guest_list_items`
--
ALTER TABLE `corporate_guest_list_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_quotes`
--
ALTER TABLE `corporate_quotes`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_rate_requests`
--
ALTER TABLE `corporate_rate_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `corporate_stay_rules`
--
ALTER TABLE `corporate_stay_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `damage_categories`
--
ALTER TABLE `damage_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `damage_deposit_policies`
--
ALTER TABLE `damage_deposit_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `damage_deposit_policy_acceptances`
--
ALTER TABLE `damage_deposit_policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `damage_deposit_policy_sections`
--
ALTER TABLE `damage_deposit_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `damage_evidence_media`
--
ALTER TABLE `damage_evidence_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `damage_reports`
--
ALTER TABLE `damage_reports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `deposit_deductions`
--
ALTER TABLE `deposit_deductions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `deposit_disputes`
--
ALTER TABLE `deposit_disputes`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `deposit_rules`
--
ALTER TABLE `deposit_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `digital_checkins`
--
ALTER TABLE `digital_checkins`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `direction_links`
--
ALTER TABLE `direction_links`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `document_accessibility_records`
--
ALTER TABLE `document_accessibility_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `email_attachments`
--
ALTER TABLE `email_attachments`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `email_logs`
--
ALTER TABLE `email_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `email_recipients`
--
ALTER TABLE `email_recipients`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `email_templates`
--
ALTER TABLE `email_templates`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `emergency_alerts`
--
ALTER TABLE `emergency_alerts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `emergency_contacts`
--
ALTER TABLE `emergency_contacts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `emergency_drill_records`
--
ALTER TABLE `emergency_drill_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `enforcement_actions`
--
ALTER TABLE `enforcement_actions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `enquiry_types`
--
ALTER TABLE `enquiry_types`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `evacuation_maps`
--
ALTER TABLE `evacuation_maps`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `excessive_cleaning_reports`
--
ALTER TABLE `excessive_cleaning_reports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `expansion_plans`
--
ALTER TABLE `expansion_plans`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `failed_jobs`
--
ALTER TABLE `failed_jobs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `faqs`
--
ALTER TABLE `faqs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=209;

--
-- AUTO_INCREMENT for table `faq_categories`
--
ALTER TABLE `faq_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=36;

--
-- AUTO_INCREMENT for table `faq_feedback`
--
ALTER TABLE `faq_feedback`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `faq_links`
--
ALTER TABLE `faq_links`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `faq_search_logs`
--
ALTER TABLE `faq_search_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `faq_unanswered_questions`
--
ALTER TABLE `faq_unanswered_questions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `fire_equipment_registers`
--
ALTER TABLE `fire_equipment_registers`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `floor_plans`
--
ALTER TABLE `floor_plans`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `footer_columns`
--
ALTER TABLE `footer_columns`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `footer_ctas`
--
ALTER TABLE `footer_ctas`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `footer_links`
--
ALTER TABLE `footer_links`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT for table `future_sustainability_plans`
--
ALTER TABLE `future_sustainability_plans`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `gallery_categories`
--
ALTER TABLE `gallery_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `global_policy_templates`
--
ALTER TABLE `global_policy_templates`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `global_pricing_templates`
--
ALTER TABLE `global_pricing_templates`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `google_review_integrations`
--
ALTER TABLE `google_review_integrations`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `group_booking_requests`
--
ALTER TABLE `group_booking_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guests`
--
ALTER TABLE `guests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `guest_activity_logs`
--
ALTER TABLE `guest_activity_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `guest_booking_links`
--
ALTER TABLE `guest_booking_links`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `guest_conduct_rules`
--
ALTER TABLE `guest_conduct_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `guest_documents`
--
ALTER TABLE `guest_documents`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_identification_policies`
--
ALTER TABLE `guest_identification_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `guest_identification_policy_acceptances`
--
ALTER TABLE `guest_identification_policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_identification_policy_sections`
--
ALTER TABLE `guest_identification_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT for table `guest_identification_policy_versions`
--
ALTER TABLE `guest_identification_policy_versions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_identity_documents`
--
ALTER TABLE `guest_identity_documents`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_identity_verifications`
--
ALTER TABLE `guest_identity_verifications`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_identity_verification_status_histories`
--
ALTER TABLE `guest_identity_verification_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_incident_reports`
--
ALTER TABLE `guest_incident_reports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_list_uploads`
--
ALTER TABLE `guest_list_uploads`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_manual_access_logs`
--
ALTER TABLE `guest_manual_access_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_manual_sections`
--
ALTER TABLE `guest_manual_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `guest_notifications`
--
ALTER TABLE `guest_notifications`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `guest_profiles`
--
ALTER TABLE `guest_profiles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `guest_safety_information`
--
ALTER TABLE `guest_safety_information`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `guest_safety_notifications`
--
ALTER TABLE `guest_safety_notifications`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `guest_services`
--
ALTER TABLE `guest_services`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `guest_sustainability_guidance`
--
ALTER TABLE `guest_sustainability_guidance`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `header_ctas`
--
ALTER TABLE `header_ctas`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `homepage_badges`
--
ALTER TABLE `homepage_badges`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `homepage_feature_cards`
--
ALTER TABLE `homepage_feature_cards`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `homepage_hero_slides`
--
ALTER TABLE `homepage_hero_slides`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `homepage_sections`
--
ALTER TABLE `homepage_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `hospitality_promises`
--
ALTER TABLE `hospitality_promises`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `housekeeping_requests`
--
ALTER TABLE `housekeeping_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `housekeeping_tasks`
--
ALTER TABLE `housekeeping_tasks`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `house_rules_policies`
--
ALTER TABLE `house_rules_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `house_rule_acceptances`
--
ALTER TABLE `house_rule_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `house_rule_categories`
--
ALTER TABLE `house_rule_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;

--
-- AUTO_INCREMENT for table `house_rule_sections`
--
ALTER TABLE `house_rule_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;

--
-- AUTO_INCREMENT for table `identity_access_logs`
--
ALTER TABLE `identity_access_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `identity_retention_rules`
--
ALTER TABLE `identity_retention_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `id_document_types`
--
ALTER TABLE `id_document_types`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `id_rejection_reasons`
--
ALTER TABLE `id_rejection_reasons`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `incident_evidence_media`
--
ALTER TABLE `incident_evidence_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `inventory_items`
--
ALTER TABLE `inventory_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `invoices`
--
ALTER TABLE `invoices`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `invoice_items`
--
ALTER TABLE `invoice_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `jobs`
--
ALTER TABLE `jobs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `landmarks`
--
ALTER TABLE `landmarks`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT for table `landmark_categories`
--
ALTER TABLE `landmark_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `legal_pages`
--
ALTER TABLE `legal_pages`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `legal_page_sections`
--
ALTER TABLE `legal_page_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;

--
-- AUTO_INCREMENT for table `locations`
--
ALTER TABLE `locations`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `location_amenities`
--
ALTER TABLE `location_amenities`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `location_amenity`
--
ALTER TABLE `location_amenity`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `location_media`
--
ALTER TABLE `location_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `location_policies`
--
ALTER TABLE `location_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `location_safety_profiles`
--
ALTER TABLE `location_safety_profiles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `location_settings`
--
ALTER TABLE `location_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `location_staff_assignments`
--
ALTER TABLE `location_staff_assignments`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `long_stay_deposit_rules`
--
ALTER TABLE `long_stay_deposit_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `long_stay_enquiries`
--
ALTER TABLE `long_stay_enquiries`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `long_stay_rate_rules`
--
ALTER TABLE `long_stay_rate_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `long_stay_rules`
--
ALTER TABLE `long_stay_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `lost_and_found_items`
--
ALTER TABLE `lost_and_found_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `mail_settings`
--
ALTER TABLE `mail_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `maintenance_tickets`
--
ALTER TABLE `maintenance_tickets`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `map_settings`
--
ALTER TABLE `map_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `media_accessibility_records`
--
ALTER TABLE `media_accessibility_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `media_assets`
--
ALTER TABLE `media_assets`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=29;

--
-- AUTO_INCREMENT for table `media_credits`
--
ALTER TABLE `media_credits`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22;

--
-- AUTO_INCREMENT for table `media_events`
--
ALTER TABLE `media_events`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `media_variants`
--
ALTER TABLE `media_variants`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22;

--
-- AUTO_INCREMENT for table `mega_menu_groups`
--
ALTER TABLE `mega_menu_groups`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `mega_menu_items`
--
ALTER TABLE `mega_menu_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=29;

--
-- AUTO_INCREMENT for table `mega_menu_preview_cards`
--
ALTER TABLE `mega_menu_preview_cards`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `menu_icons`
--
ALTER TABLE `menu_icons`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `migrations`
--
ALTER TABLE `migrations`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=46;

--
-- AUTO_INCREMENT for table `missing_item_reports`
--
ALTER TABLE `missing_item_reports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `motion_accessibility_settings`
--
ALTER TABLE `motion_accessibility_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `navigation_badges`
--
ALTER TABLE `navigation_badges`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `navigation_menus`
--
ALTER TABLE `navigation_menus`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `navigation_menu_items`
--
ALTER TABLE `navigation_menu_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `neighbourhood_guides`
--
ALTER TABLE `neighbourhood_guides`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `neighbourhood_guide_sections`
--
ALTER TABLE `neighbourhood_guide_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT for table `newsletter_subscribers`
--
ALTER TABLE `newsletter_subscribers`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `noise_rules`
--
ALTER TABLE `noise_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `offers`
--
ALTER TABLE `offers`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `offer_blackout_dates`
--
ALTER TABLE `offer_blackout_dates`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `offer_enquiries`
--
ALTER TABLE `offer_enquiries`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `offer_types`
--
ALTER TABLE `offer_types`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `payments`
--
ALTER TABLE `payments`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `payment_attempts`
--
ALTER TABLE `payment_attempts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `payment_disputes`
--
ALTER TABLE `payment_disputes`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `payment_gateways`
--
ALTER TABLE `payment_gateways`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `payment_gateway_transactions`
--
ALTER TABLE `payment_gateway_transactions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `payment_methods`
--
ALTER TABLE `payment_methods`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `payment_policies`
--
ALTER TABLE `payment_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `payment_policy_acceptances`
--
ALTER TABLE `payment_policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `payment_policy_sections`
--
ALTER TABLE `payment_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `payment_status_histories`
--
ALTER TABLE `payment_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `payment_transactions`
--
ALTER TABLE `payment_transactions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `payment_webhook_events`
--
ALTER TABLE `payment_webhook_events`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `permissions`
--
ALTER TABLE `permissions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=196;

--
-- AUTO_INCREMENT for table `pms_integrations`
--
ALTER TABLE `pms_integrations`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `pms_sync_logs`
--
ALTER TABLE `pms_sync_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `policies`
--
ALTER TABLE `policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `policy_acceptances`
--
ALTER TABLE `policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `policy_versions`
--
ALTER TABLE `policy_versions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `pricing_rules`
--
ALTER TABLE `pricing_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `privacy_policies`
--
ALTER TABLE `privacy_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `privacy_policy_acceptances`
--
ALTER TABLE `privacy_policy_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `privacy_policy_sections`
--
ALTER TABLE `privacy_policy_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;

--
-- AUTO_INCREMENT for table `privacy_requests`
--
ALTER TABLE `privacy_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `privacy_request_status_histories`
--
ALTER TABLE `privacy_request_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `promo_codes`
--
ALTER TABLE `promo_codes`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `promo_code_redemptions`
--
ALTER TABLE `promo_code_redemptions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `proof_of_payment_uploads`
--
ALTER TABLE `proof_of_payment_uploads`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `property_accessibility_profiles`
--
ALTER TABLE `property_accessibility_profiles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `quality_standards`
--
ALTER TABLE `quality_standards`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `receipts`
--
ALTER TABLE `receipts`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `receipt_items`
--
ALTER TABLE `receipt_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `recommendation_requests`
--
ALTER TABLE `recommendation_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `refund_requests`
--
ALTER TABLE `refund_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `refund_status_histories`
--
ALTER TABLE `refund_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `repeat_stay_requests`
--
ALTER TABLE `repeat_stay_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `reviews`
--
ALTER TABLE `reviews`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `review_categories`
--
ALTER TABLE `review_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `review_category_ratings`
--
ALTER TABLE `review_category_ratings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `review_helpful_votes`
--
ALTER TABLE `review_helpful_votes`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `review_media`
--
ALTER TABLE `review_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `review_moderation_logs`
--
ALTER TABLE `review_moderation_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `review_reports`
--
ALTER TABLE `review_reports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `review_responses`
--
ALTER TABLE `review_responses`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `review_sources`
--
ALTER TABLE `review_sources`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `roles`
--
ALTER TABLE `roles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `rule_breach_reports`
--
ALTER TABLE `rule_breach_reports`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `safety_device_registers`
--
ALTER TABLE `safety_device_registers`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `safety_information_pages`
--
ALTER TABLE `safety_information_pages`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `safety_information_sections`
--
ALTER TABLE `safety_information_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `safety_information_versions`
--
ALTER TABLE `safety_information_versions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `safety_inspection_records`
--
ALTER TABLE `safety_inspection_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `schema_metadata`
--
ALTER TABLE `schema_metadata`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=36;

--
-- AUTO_INCREMENT for table `search_index_items`
--
ALTER TABLE `search_index_items`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `search_logs`
--
ALTER TABLE `search_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `security_access_rules`
--
ALTER TABLE `security_access_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `security_deposit_transactions`
--
ALTER TABLE `security_deposit_transactions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `security_features`
--
ALTER TABLE `security_features`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `seo_metadata`
--
ALTER TABLE `seo_metadata`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=46;

--
-- AUTO_INCREMENT for table `service_requests`
--
ALTER TABLE `service_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `service_request_status_histories`
--
ALTER TABLE `service_request_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `settings`
--
ALTER TABLE `settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `site_settings`
--
ALTER TABLE `site_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `smart_living_features`
--
ALTER TABLE `smart_living_features`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `smoking_pet_rules`
--
ALTER TABLE `smoking_pet_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `social_links`
--
ALTER TABLE `social_links`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `spam_logs`
--
ALTER TABLE `spam_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `special_requests`
--
ALTER TABLE `special_requests`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `staff_emergency_roles`
--
ALTER TABLE `staff_emergency_roles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `support_hours`
--
ALTER TABLE `support_hours`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `support_tickets`
--
ALTER TABLE `support_tickets`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `support_ticket_messages`
--
ALTER TABLE `support_ticket_messages`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `suspicious_identity_cases`
--
ALTER TABLE `suspicious_identity_cases`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `sustainability_categories`
--
ALTER TABLE `sustainability_categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `sustainability_evidence`
--
ALTER TABLE `sustainability_evidence`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `sustainability_features`
--
ALTER TABLE `sustainability_features`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `sustainability_media`
--
ALTER TABLE `sustainability_media`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `team_profiles`
--
ALTER TABLE `team_profiles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `terms_acceptances`
--
ALTER TABLE `terms_acceptances`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `theme_audit_logs`
--
ALTER TABLE `theme_audit_logs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `theme_settings`
--
ALTER TABLE `theme_settings`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `tour_events`
--
ALTER TABLE `tour_events`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `transport_ctas`
--
ALTER TABLE `transport_ctas`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `transport_request_status_histories`
--
ALTER TABLE `transport_request_status_histories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `transport_services`
--
ALTER TABLE `transport_services`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `units`
--
ALTER TABLE `units`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `unit_condition_checklists`
--
ALTER TABLE `unit_condition_checklists`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `unit_condition_records`
--
ALTER TABLE `unit_condition_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `user_theme_preferences`
--
ALTER TABLE `user_theme_preferences`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `vehicle_types`
--
ALTER TABLE `vehicle_types`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `video_assets`
--
ALTER TABLE `video_assets`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `video_testimonials`
--
ALTER TABLE `video_testimonials`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `virtual_tour_assets`
--
ALTER TABLE `virtual_tour_assets`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `virtual_tour_hotspots`
--
ALTER TABLE `virtual_tour_hotspots`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `visitor_identity_records`
--
ALTER TABLE `visitor_identity_records`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `visitor_policies`
--
ALTER TABLE `visitor_policies`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `visitor_rules`
--
ALTER TABLE `visitor_rules`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `abandoned_bookings`
--
ALTER TABLE `abandoned_bookings`
  ADD CONSTRAINT `abandoned_bookings_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `about_media`
--
ALTER TABLE `about_media`
  ADD CONSTRAINT `about_media_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `accessibility_audit_findings`
--
ALTER TABLE `accessibility_audit_findings`
  ADD CONSTRAINT `acc_aud_find_fk` FOREIGN KEY (`accessibility_audit_id`) REFERENCES `accessibility_audits` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `accessibility_remediation_tasks`
--
ALTER TABLE `accessibility_remediation_tasks`
  ADD CONSTRAINT `acc_rem_task_fk` FOREIGN KEY (`accessibility_issue_id`) REFERENCES `accessibility_issues` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `accessibility_statement_sections`
--
ALTER TABLE `accessibility_statement_sections`
  ADD CONSTRAINT `acc_page_sec_fk` FOREIGN KEY (`accessibility_statement_id`) REFERENCES `accessibility_statements` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `accessibility_statement_versions`
--
ALTER TABLE `accessibility_statement_versions`
  ADD CONSTRAINT `acc_page_ver_fk` FOREIGN KEY (`accessibility_statement_id`) REFERENCES `accessibility_statements` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `airport_pickup_requests`
--
ALTER TABLE `airport_pickup_requests`
  ADD CONSTRAINT `airport_pickup_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `amenities`
--
ALTER TABLE `amenities`
  ADD CONSTRAINT `amenities_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `amenity_categories` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `amenity_media`
--
ALTER TABLE `amenity_media`
  ADD CONSTRAINT `amenity_media_amenity_id_foreign` FOREIGN KEY (`amenity_id`) REFERENCES `amenities` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `amenity_media_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `apartment_type_amenity`
--
ALTER TABLE `apartment_type_amenity`
  ADD CONSTRAINT `apartment_type_amenity_amenity_id_foreign` FOREIGN KEY (`amenity_id`) REFERENCES `amenities` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `apartment_type_amenity_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `apartment_type_media`
--
ALTER TABLE `apartment_type_media`
  ADD CONSTRAINT `apartment_type_media_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `apartment_type_media_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `assembly_points`
--
ALTER TABLE `assembly_points`
  ADD CONSTRAINT `ap_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `audit_logs`
--
ALTER TABLE `audit_logs`
  ADD CONSTRAINT `audit_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `availability_blocks`
--
ALTER TABLE `availability_blocks`
  ADD CONSTRAINT `availability_blocks_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `bank_transfer_uploads`
--
ALTER TABLE `bank_transfer_uploads`
  ADD CONSTRAINT `bank_transfer_uploads_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `blog_events`
--
ALTER TABLE `blog_events`
  ADD CONSTRAINT `blog_events_blog_post_id_foreign` FOREIGN KEY (`blog_post_id`) REFERENCES `blog_posts` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `blog_posts`
--
ALTER TABLE `blog_posts`
  ADD CONSTRAINT `blog_posts_author_id_foreign` FOREIGN KEY (`author_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `blog_posts_blog_author_id_foreign` FOREIGN KEY (`blog_author_id`) REFERENCES `blog_authors` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `blog_posts_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `blog_categories` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `blog_post_faqs`
--
ALTER TABLE `blog_post_faqs`
  ADD CONSTRAINT `blog_post_faqs_blog_post_id_foreign` FOREIGN KEY (`blog_post_id`) REFERENCES `blog_posts` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `blog_post_revisions`
--
ALTER TABLE `blog_post_revisions`
  ADD CONSTRAINT `blog_post_revisions_blog_post_id_foreign` FOREIGN KEY (`blog_post_id`) REFERENCES `blog_posts` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `blog_post_revisions_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `blog_post_tag`
--
ALTER TABLE `blog_post_tag`
  ADD CONSTRAINT `blog_post_tag_blog_post_id_foreign` FOREIGN KEY (`blog_post_id`) REFERENCES `blog_posts` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `blog_post_tag_blog_tag_id_foreign` FOREIGN KEY (`blog_tag_id`) REFERENCES `blog_tags` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `blog_related_posts`
--
ALTER TABLE `blog_related_posts`
  ADD CONSTRAINT `blog_related_posts_blog_post_id_foreign` FOREIGN KEY (`blog_post_id`) REFERENCES `blog_posts` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `blog_related_posts_related_post_id_foreign` FOREIGN KEY (`related_post_id`) REFERENCES `blog_posts` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `bookings`
--
ALTER TABLE `bookings`
  ADD CONSTRAINT `bookings_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `bookings_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `bookings_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `booking_add_ons`
--
ALTER TABLE `booking_add_ons`
  ADD CONSTRAINT `booking_add_ons_add_on_service_id_foreign` FOREIGN KEY (`add_on_service_id`) REFERENCES `add_on_services` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `booking_add_ons_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `booking_cancellation_requests`
--
ALTER TABLE `booking_cancellation_requests`
  ADD CONSTRAINT `booking_cancellation_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `booking_guests`
--
ALTER TABLE `booking_guests`
  ADD CONSTRAINT `booking_guests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `booking_modification_requests`
--
ALTER TABLE `booking_modification_requests`
  ADD CONSTRAINT `booking_modification_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `booking_modification_requests_proposed_apartment_type_id_foreign` FOREIGN KEY (`proposed_apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `booking_notifications`
--
ALTER TABLE `booking_notifications`
  ADD CONSTRAINT `booking_notifications_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `booking_policy_acceptances`
--
ALTER TABLE `booking_policy_acceptances`
  ADD CONSTRAINT `booking_policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `booking_policy_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `booking_policy_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `booking_policy_sections`
--
ALTER TABLE `booking_policy_sections`
  ADD CONSTRAINT `booking_policy_sections_booking_policy_id_foreign` FOREIGN KEY (`booking_policy_id`) REFERENCES `booking_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `booking_status_histories`
--
ALTER TABLE `booking_status_histories`
  ADD CONSTRAINT `booking_status_histories_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `brand_content_blocks`
--
ALTER TABLE `brand_content_blocks`
  ADD CONSTRAINT `brand_content_blocks_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `brand_profiles`
--
ALTER TABLE `brand_profiles`
  ADD CONSTRAINT `brand_profiles_primary_location_id_foreign` FOREIGN KEY (`primary_location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `buildings`
--
ALTER TABLE `buildings`
  ADD CONSTRAINT `buildings_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cancellation_refund_policy_acceptances`
--
ALTER TABLE `cancellation_refund_policy_acceptances`
  ADD CONSTRAINT `cancellation_refund_policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `cancellation_refund_policy_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `cancellation_refund_policy_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cancellation_refund_policy_sections`
--
ALTER TABLE `cancellation_refund_policy_sections`
  ADD CONSTRAINT `cr_policy_sections_policy_id_foreign` FOREIGN KEY (`cancellation_refund_policy_id`) REFERENCES `cancellation_refund_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cancellation_requests`
--
ALTER TABLE `cancellation_requests`
  ADD CONSTRAINT `cancellation_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `cancellation_requests_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `car_rental_requests`
--
ALTER TABLE `car_rental_requests`
  ADD CONSTRAINT `car_rental_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `channel_sync_logs`
--
ALTER TABLE `channel_sync_logs`
  ADD CONSTRAINT `channel_sync_logs_channel_integration_id_foreign` FOREIGN KEY (`channel_integration_id`) REFERENCES `channel_integrations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `company_billing_profiles`
--
ALTER TABLE `company_billing_profiles`
  ADD CONSTRAINT `company_billing_profiles_corporate_client_id_foreign` FOREIGN KEY (`corporate_client_id`) REFERENCES `corporate_clients` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `comparison_field_values`
--
ALTER TABLE `comparison_field_values`
  ADD CONSTRAINT `comparison_field_values_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `comparison_field_values_comparison_field_id_foreign` FOREIGN KEY (`comparison_field_id`) REFERENCES `comparison_fields` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `consent_records`
--
ALTER TABLE `consent_records`
  ADD CONSTRAINT `consent_records_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `consent_records_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `consent_records_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cookie_consents`
--
ALTER TABLE `cookie_consents`
  ADD CONSTRAINT `cookie_consents_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `cookie_consents_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cookie_consent_events`
--
ALTER TABLE `cookie_consent_events`
  ADD CONSTRAINT `cookie_consent_events_cookie_consent_id_foreign` FOREIGN KEY (`cookie_consent_id`) REFERENCES `cookie_consents` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cookie_consent_preferences`
--
ALTER TABLE `cookie_consent_preferences`
  ADD CONSTRAINT `cookie_consent_preferences_cookie_category_id_foreign` FOREIGN KEY (`cookie_category_id`) REFERENCES `cookie_categories` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `cookie_consent_preferences_cookie_consent_id_foreign` FOREIGN KEY (`cookie_consent_id`) REFERENCES `cookie_consents` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cookie_items`
--
ALTER TABLE `cookie_items`
  ADD CONSTRAINT `cookie_items_cookie_category_id_foreign` FOREIGN KEY (`cookie_category_id`) REFERENCES `cookie_categories` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `cookie_policy_sections`
--
ALTER TABLE `cookie_policy_sections`
  ADD CONSTRAINT `cookie_policy_sections_cookie_policy_id_foreign` FOREIGN KEY (`cookie_policy_id`) REFERENCES `cookie_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `corporate_booking_status_histories`
--
ALTER TABLE `corporate_booking_status_histories`
  ADD CONSTRAINT `corporate_booking_status_histories_corporate_enquiry_id_foreign` FOREIGN KEY (`corporate_enquiry_id`) REFERENCES `corporate_enquiries` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `corporate_contacts`
--
ALTER TABLE `corporate_contacts`
  ADD CONSTRAINT `corporate_contacts_corporate_client_id_foreign` FOREIGN KEY (`corporate_client_id`) REFERENCES `corporate_clients` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `corporate_guest_list_items`
--
ALTER TABLE `corporate_guest_list_items`
  ADD CONSTRAINT `corp_guest_list_fk` FOREIGN KEY (`corporate_guest_list_id`) REFERENCES `corporate_guest_lists` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `corporate_quotes`
--
ALTER TABLE `corporate_quotes`
  ADD CONSTRAINT `corporate_quotes_corporate_enquiry_id_foreign` FOREIGN KEY (`corporate_enquiry_id`) REFERENCES `corporate_enquiries` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `corporate_rate_requests`
--
ALTER TABLE `corporate_rate_requests`
  ADD CONSTRAINT `corporate_rate_requests_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `corporate_rate_requests_corporate_client_id_foreign` FOREIGN KEY (`corporate_client_id`) REFERENCES `corporate_clients` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `damage_deposit_policy_acceptances`
--
ALTER TABLE `damage_deposit_policy_acceptances`
  ADD CONSTRAINT `damage_deposit_policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `damage_deposit_policy_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `damage_deposit_policy_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `damage_deposit_policy_sections`
--
ALTER TABLE `damage_deposit_policy_sections`
  ADD CONSTRAINT `damage_deposit_policy_sections_damage_deposit_policy_id_foreign` FOREIGN KEY (`damage_deposit_policy_id`) REFERENCES `damage_deposit_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `damage_evidence_media`
--
ALTER TABLE `damage_evidence_media`
  ADD CONSTRAINT `damage_evidence_media_damage_report_id_foreign` FOREIGN KEY (`damage_report_id`) REFERENCES `damage_reports` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `damage_reports`
--
ALTER TABLE `damage_reports`
  ADD CONSTRAINT `damage_reports_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `damage_reports_damage_category_id_foreign` FOREIGN KEY (`damage_category_id`) REFERENCES `damage_categories` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `damage_reports_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `damage_reports_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `damage_reports_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `deposit_deductions`
--
ALTER TABLE `deposit_deductions`
  ADD CONSTRAINT `deposit_deductions_damage_report_id_foreign` FOREIGN KEY (`damage_report_id`) REFERENCES `damage_reports` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `deposit_deductions_security_deposit_transaction_id_foreign` FOREIGN KEY (`security_deposit_transaction_id`) REFERENCES `security_deposit_transactions` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `deposit_disputes`
--
ALTER TABLE `deposit_disputes`
  ADD CONSTRAINT `deposit_disputes_deposit_deduction_id_foreign` FOREIGN KEY (`deposit_deduction_id`) REFERENCES `deposit_deductions` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `deposit_disputes_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `deposit_disputes_security_deposit_transaction_id_foreign` FOREIGN KEY (`security_deposit_transaction_id`) REFERENCES `security_deposit_transactions` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `deposit_rules`
--
ALTER TABLE `deposit_rules`
  ADD CONSTRAINT `deposit_rules_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `digital_checkins`
--
ALTER TABLE `digital_checkins`
  ADD CONSTRAINT `digital_checkins_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `digital_checkins_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `email_attachments`
--
ALTER TABLE `email_attachments`
  ADD CONSTRAINT `email_attachments_email_log_id_foreign` FOREIGN KEY (`email_log_id`) REFERENCES `email_logs` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `email_logs`
--
ALTER TABLE `email_logs`
  ADD CONSTRAINT `email_logs_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `email_recipients`
--
ALTER TABLE `email_recipients`
  ADD CONSTRAINT `email_recipients_email_log_id_foreign` FOREIGN KEY (`email_log_id`) REFERENCES `email_logs` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `emergency_alerts`
--
ALTER TABLE `emergency_alerts`
  ADD CONSTRAINT `alert_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `emergency_contacts`
--
ALTER TABLE `emergency_contacts`
  ADD CONSTRAINT `em_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `emergency_drill_records`
--
ALTER TABLE `emergency_drill_records`
  ADD CONSTRAINT `drill_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `enforcement_actions`
--
ALTER TABLE `enforcement_actions`
  ADD CONSTRAINT `enforcement_actions_rule_breach_report_id_foreign` FOREIGN KEY (`rule_breach_report_id`) REFERENCES `rule_breach_reports` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `evacuation_maps`
--
ALTER TABLE `evacuation_maps`
  ADD CONSTRAINT `evac_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `excessive_cleaning_reports`
--
ALTER TABLE `excessive_cleaning_reports`
  ADD CONSTRAINT `excessive_cleaning_reports_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `faqs`
--
ALTER TABLE `faqs`
  ADD CONSTRAINT `faqs_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `faq_categories` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `faq_feedback`
--
ALTER TABLE `faq_feedback`
  ADD CONSTRAINT `faq_feedback_faq_id_foreign` FOREIGN KEY (`faq_id`) REFERENCES `faqs` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `faq_links`
--
ALTER TABLE `faq_links`
  ADD CONSTRAINT `faq_links_faq_id_foreign` FOREIGN KEY (`faq_id`) REFERENCES `faqs` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `fire_equipment_registers`
--
ALTER TABLE `fire_equipment_registers`
  ADD CONSTRAINT `fire_eq_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `floor_plans`
--
ALTER TABLE `floor_plans`
  ADD CONSTRAINT `floor_plans_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `floor_plans_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `footer_links`
--
ALTER TABLE `footer_links`
  ADD CONSTRAINT `footer_links_footer_column_id_foreign` FOREIGN KEY (`footer_column_id`) REFERENCES `footer_columns` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `global_pricing_templates`
--
ALTER TABLE `global_pricing_templates`
  ADD CONSTRAINT `global_pricing_templates_applies_to_apartment_type_id_foreign` FOREIGN KEY (`applies_to_apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `guests`
--
ALTER TABLE `guests`
  ADD CONSTRAINT `guests_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `guest_activity_logs`
--
ALTER TABLE `guest_activity_logs`
  ADD CONSTRAINT `guest_activity_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_booking_links`
--
ALTER TABLE `guest_booking_links`
  ADD CONSTRAINT `guest_booking_links_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_booking_links_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_documents`
--
ALTER TABLE `guest_documents`
  ADD CONSTRAINT `guest_documents_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_identification_policy_acceptances`
--
ALTER TABLE `guest_identification_policy_acceptances`
  ADD CONSTRAINT `guest_identification_policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identification_policy_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identification_policy_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_identification_policy_sections`
--
ALTER TABLE `guest_identification_policy_sections`
  ADD CONSTRAINT `guest_id_policy_sec_fk` FOREIGN KEY (`guest_identification_policy_id`) REFERENCES `guest_identification_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_identification_policy_versions`
--
ALTER TABLE `guest_identification_policy_versions`
  ADD CONSTRAINT `guest_id_policy_ver_fk` FOREIGN KEY (`guest_identification_policy_id`) REFERENCES `guest_identification_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_identity_documents`
--
ALTER TABLE `guest_identity_documents`
  ADD CONSTRAINT `guest_id_doc_type_fk` FOREIGN KEY (`id_document_type_id`) REFERENCES `id_document_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identity_documents_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identity_documents_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identity_documents_rejection_reason_id_foreign` FOREIGN KEY (`rejection_reason_id`) REFERENCES `id_rejection_reasons` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `guest_identity_verifications`
--
ALTER TABLE `guest_identity_verifications`
  ADD CONSTRAINT `guest_id_verification_doc_fk` FOREIGN KEY (`guest_identity_document_id`) REFERENCES `guest_identity_documents` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identity_verifications_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_identity_verifications_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_identity_verification_status_histories`
--
ALTER TABLE `guest_identity_verification_status_histories`
  ADD CONSTRAINT `guest_id_verification_hist_fk` FOREIGN KEY (`guest_identity_verification_id`) REFERENCES `guest_identity_verifications` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_list_uploads`
--
ALTER TABLE `guest_list_uploads`
  ADD CONSTRAINT `guest_list_uploads_corporate_enquiry_id_foreign` FOREIGN KEY (`corporate_enquiry_id`) REFERENCES `corporate_enquiries` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_list_uploads_group_booking_request_id_foreign` FOREIGN KEY (`group_booking_request_id`) REFERENCES `group_booking_requests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_list_uploads_long_stay_enquiry_id_foreign` FOREIGN KEY (`long_stay_enquiry_id`) REFERENCES `long_stay_enquiries` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `guest_list_uploads_offer_enquiry_id_foreign` FOREIGN KEY (`offer_enquiry_id`) REFERENCES `offer_enquiries` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_manual_access_logs`
--
ALTER TABLE `guest_manual_access_logs`
  ADD CONSTRAINT `guest_manual_access_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_notifications`
--
ALTER TABLE `guest_notifications`
  ADD CONSTRAINT `guest_notifications_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `guest_profiles`
--
ALTER TABLE `guest_profiles`
  ADD CONSTRAINT `guest_profiles_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `housekeeping_tasks`
--
ALTER TABLE `housekeeping_tasks`
  ADD CONSTRAINT `housekeeping_tasks_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `house_rule_acceptances`
--
ALTER TABLE `house_rule_acceptances`
  ADD CONSTRAINT `house_rule_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `house_rule_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `house_rule_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `house_rule_sections`
--
ALTER TABLE `house_rule_sections`
  ADD CONSTRAINT `house_rule_sections_house_rule_category_id_foreign` FOREIGN KEY (`house_rule_category_id`) REFERENCES `house_rule_categories` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `house_rule_sections_house_rules_policy_id_foreign` FOREIGN KEY (`house_rules_policy_id`) REFERENCES `house_rules_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `identity_access_logs`
--
ALTER TABLE `identity_access_logs`
  ADD CONSTRAINT `id_access_guest_doc_fk` FOREIGN KEY (`guest_identity_document_id`) REFERENCES `guest_identity_documents` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `identity_access_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `incident_evidence_media`
--
ALTER TABLE `incident_evidence_media`
  ADD CONSTRAINT `inc_ev_rep_fk` FOREIGN KEY (`guest_incident_report_id`) REFERENCES `guest_incident_reports` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `invoices`
--
ALTER TABLE `invoices`
  ADD CONSTRAINT `invoices_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `invoice_items`
--
ALTER TABLE `invoice_items`
  ADD CONSTRAINT `invoice_items_invoice_id_foreign` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `landmarks`
--
ALTER TABLE `landmarks`
  ADD CONSTRAINT `landmarks_landmark_category_id_foreign` FOREIGN KEY (`landmark_category_id`) REFERENCES `landmark_categories` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `landmarks_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `legal_page_sections`
--
ALTER TABLE `legal_page_sections`
  ADD CONSTRAINT `legal_page_sections_legal_page_id_foreign` FOREIGN KEY (`legal_page_id`) REFERENCES `legal_pages` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_amenities`
--
ALTER TABLE `location_amenities`
  ADD CONSTRAINT `location_amenities_amenity_id_foreign` FOREIGN KEY (`amenity_id`) REFERENCES `amenities` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `location_amenities_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_amenity`
--
ALTER TABLE `location_amenity`
  ADD CONSTRAINT `location_relationship_amenity_amenity_id_foreign` FOREIGN KEY (`amenity_id`) REFERENCES `amenities` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `location_relationship_amenity_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_landmarks`
--
ALTER TABLE `location_landmarks`
  ADD CONSTRAINT `location_landmarks_landmark_id_foreign` FOREIGN KEY (`landmark_id`) REFERENCES `landmarks` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `location_landmarks_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_media`
--
ALTER TABLE `location_media`
  ADD CONSTRAINT `location_media_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `location_media_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_policies`
--
ALTER TABLE `location_policies`
  ADD CONSTRAINT `location_policies_global_policy_template_id_foreign` FOREIGN KEY (`global_policy_template_id`) REFERENCES `global_policy_templates` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `location_policies_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_safety_profiles`
--
ALTER TABLE `location_safety_profiles`
  ADD CONSTRAINT `loc_safe_prof_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `location_settings`
--
ALTER TABLE `location_settings`
  ADD CONSTRAINT `location_settings_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `location_settings_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `location_staff_assignments`
--
ALTER TABLE `location_staff_assignments`
  ADD CONSTRAINT `location_staff_assignments_assigned_by_foreign` FOREIGN KEY (`assigned_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `location_staff_assignments_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `location_staff_assignments_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `location_staff_assignments_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `long_stay_enquiries`
--
ALTER TABLE `long_stay_enquiries`
  ADD CONSTRAINT `long_stay_enquiries_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `long_stay_enquiries_assigned_to_foreign` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `long_stay_enquiries_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `long_stay_rate_rules`
--
ALTER TABLE `long_stay_rate_rules`
  ADD CONSTRAINT `long_stay_rate_rules_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `lost_and_found_items`
--
ALTER TABLE `lost_and_found_items`
  ADD CONSTRAINT `lost_and_found_items_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `maintenance_tickets`
--
ALTER TABLE `maintenance_tickets`
  ADD CONSTRAINT `maintenance_tickets_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `media_assets`
--
ALTER TABLE `media_assets`
  ADD CONSTRAINT `media_assets_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `media_assets_gallery_category_id_foreign` FOREIGN KEY (`gallery_category_id`) REFERENCES `gallery_categories` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `media_assets_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `media_credits`
--
ALTER TABLE `media_credits`
  ADD CONSTRAINT `media_credits_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `media_events`
--
ALTER TABLE `media_events`
  ADD CONSTRAINT `media_events_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `media_variants`
--
ALTER TABLE `media_variants`
  ADD CONSTRAINT `media_variants_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `mega_menu_groups`
--
ALTER TABLE `mega_menu_groups`
  ADD CONSTRAINT `mega_menu_groups_navigation_menu_item_id_foreign` FOREIGN KEY (`navigation_menu_item_id`) REFERENCES `navigation_menu_items` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `mega_menu_items`
--
ALTER TABLE `mega_menu_items`
  ADD CONSTRAINT `mega_menu_items_mega_menu_group_id_foreign` FOREIGN KEY (`mega_menu_group_id`) REFERENCES `mega_menu_groups` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `mega_menu_preview_cards`
--
ALTER TABLE `mega_menu_preview_cards`
  ADD CONSTRAINT `mega_menu_preview_cards_mega_menu_group_id_foreign` FOREIGN KEY (`mega_menu_group_id`) REFERENCES `mega_menu_groups` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `missing_item_reports`
--
ALTER TABLE `missing_item_reports`
  ADD CONSTRAINT `missing_item_reports_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `missing_item_reports_inventory_item_id_foreign` FOREIGN KEY (`inventory_item_id`) REFERENCES `inventory_items` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `model_has_permissions`
--
ALTER TABLE `model_has_permissions`
  ADD CONSTRAINT `model_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `model_has_roles`
--
ALTER TABLE `model_has_roles`
  ADD CONSTRAINT `model_has_roles_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `navigation_menu_items`
--
ALTER TABLE `navigation_menu_items`
  ADD CONSTRAINT `navigation_menu_items_navigation_menu_id_foreign` FOREIGN KEY (`navigation_menu_id`) REFERENCES `navigation_menus` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `neighbourhood_guide_sections`
--
ALTER TABLE `neighbourhood_guide_sections`
  ADD CONSTRAINT `neighbourhood_guide_sections_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `neighbourhood_guide_sections_neighbourhood_guide_id_foreign` FOREIGN KEY (`neighbourhood_guide_id`) REFERENCES `neighbourhood_guides` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `offers`
--
ALTER TABLE `offers`
  ADD CONSTRAINT `offers_offer_type_id_foreign` FOREIGN KEY (`offer_type_id`) REFERENCES `offer_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `offers_promo_code_id_foreign` FOREIGN KEY (`promo_code_id`) REFERENCES `promo_codes` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `offer_apartment_type`
--
ALTER TABLE `offer_apartment_type`
  ADD CONSTRAINT `offer_apartment_type_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `offer_apartment_type_offer_id_foreign` FOREIGN KEY (`offer_id`) REFERENCES `offers` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `offer_blackout_dates`
--
ALTER TABLE `offer_blackout_dates`
  ADD CONSTRAINT `offer_blackout_dates_offer_id_foreign` FOREIGN KEY (`offer_id`) REFERENCES `offers` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `offer_enquiries`
--
ALTER TABLE `offer_enquiries`
  ADD CONSTRAINT `offer_enquiries_offer_id_foreign` FOREIGN KEY (`offer_id`) REFERENCES `offers` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `offer_location`
--
ALTER TABLE `offer_location`
  ADD CONSTRAINT `offer_location_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `offer_location_offer_id_foreign` FOREIGN KEY (`offer_id`) REFERENCES `offers` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payments`
--
ALTER TABLE `payments`
  ADD CONSTRAINT `payments_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payment_attempts`
--
ALTER TABLE `payment_attempts`
  ADD CONSTRAINT `payment_attempts_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `payment_attempts_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payment_disputes`
--
ALTER TABLE `payment_disputes`
  ADD CONSTRAINT `payment_disputes_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `payment_disputes_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `payment_gateway_transactions`
--
ALTER TABLE `payment_gateway_transactions`
  ADD CONSTRAINT `payment_gateway_transactions_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `payment_gateway_transactions_payment_gateway_id_foreign` FOREIGN KEY (`payment_gateway_id`) REFERENCES `payment_gateways` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payment_policy_acceptances`
--
ALTER TABLE `payment_policy_acceptances`
  ADD CONSTRAINT `payment_policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `payment_policy_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `payment_policy_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payment_policy_sections`
--
ALTER TABLE `payment_policy_sections`
  ADD CONSTRAINT `payment_policy_sections_payment_policy_id_foreign` FOREIGN KEY (`payment_policy_id`) REFERENCES `payment_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payment_status_histories`
--
ALTER TABLE `payment_status_histories`
  ADD CONSTRAINT `payment_status_histories_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `payment_transactions`
--
ALTER TABLE `payment_transactions`
  ADD CONSTRAINT `payment_transactions_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pms_sync_logs`
--
ALTER TABLE `pms_sync_logs`
  ADD CONSTRAINT `pms_sync_logs_pms_integration_id_foreign` FOREIGN KEY (`pms_integration_id`) REFERENCES `pms_integrations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `policy_acceptances`
--
ALTER TABLE `policy_acceptances`
  ADD CONSTRAINT `policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `policy_versions`
--
ALTER TABLE `policy_versions`
  ADD CONSTRAINT `policy_versions_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `policy_versions_global_policy_template_id_foreign` FOREIGN KEY (`global_policy_template_id`) REFERENCES `global_policy_templates` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `policy_versions_location_policy_id_foreign` FOREIGN KEY (`location_policy_id`) REFERENCES `location_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pricing_rules`
--
ALTER TABLE `pricing_rules`
  ADD CONSTRAINT `pricing_rules_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `privacy_policy_acceptances`
--
ALTER TABLE `privacy_policy_acceptances`
  ADD CONSTRAINT `privacy_policy_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `privacy_policy_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `privacy_policy_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `privacy_policy_sections`
--
ALTER TABLE `privacy_policy_sections`
  ADD CONSTRAINT `pr_policy_sections_policy_id_foreign` FOREIGN KEY (`privacy_policy_id`) REFERENCES `privacy_policies` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `privacy_requests`
--
ALTER TABLE `privacy_requests`
  ADD CONSTRAINT `privacy_requests_assigned_to_foreign` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `privacy_request_status_histories`
--
ALTER TABLE `privacy_request_status_histories`
  ADD CONSTRAINT `privacy_request_status_histories_changed_by_foreign` FOREIGN KEY (`changed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `privacy_request_status_histories_privacy_request_id_foreign` FOREIGN KEY (`privacy_request_id`) REFERENCES `privacy_requests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `promo_code_redemptions`
--
ALTER TABLE `promo_code_redemptions`
  ADD CONSTRAINT `promo_code_redemptions_promo_code_id_foreign` FOREIGN KEY (`promo_code_id`) REFERENCES `promo_codes` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `proof_of_payment_uploads`
--
ALTER TABLE `proof_of_payment_uploads`
  ADD CONSTRAINT `proof_of_payment_uploads_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `proof_of_payment_uploads_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `property_accessibility_profiles`
--
ALTER TABLE `property_accessibility_profiles`
  ADD CONSTRAINT `prop_acc_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `receipts`
--
ALTER TABLE `receipts`
  ADD CONSTRAINT `receipts_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `receipt_items`
--
ALTER TABLE `receipt_items`
  ADD CONSTRAINT `receipt_items_receipt_id_foreign` FOREIGN KEY (`receipt_id`) REFERENCES `receipts` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `recommendation_requests`
--
ALTER TABLE `recommendation_requests`
  ADD CONSTRAINT `recommendation_requests_recommended_apartment_type_id_foreign` FOREIGN KEY (`recommended_apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `refund_requests`
--
ALTER TABLE `refund_requests`
  ADD CONSTRAINT `refund_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `refund_requests_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `refund_requests_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `refund_requests_reviewed_by_foreign` FOREIGN KEY (`reviewed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `refund_status_histories`
--
ALTER TABLE `refund_status_histories`
  ADD CONSTRAINT `refund_status_histories_changed_by_foreign` FOREIGN KEY (`changed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `refund_status_histories_refund_request_id_foreign` FOREIGN KEY (`refund_request_id`) REFERENCES `refund_requests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `reviews`
--
ALTER TABLE `reviews`
  ADD CONSTRAINT `reviews_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `reviews_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `reviews_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `reviews_source_id_foreign` FOREIGN KEY (`source_id`) REFERENCES `review_sources` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `review_category_ratings`
--
ALTER TABLE `review_category_ratings`
  ADD CONSTRAINT `review_category_ratings_review_category_id_foreign` FOREIGN KEY (`review_category_id`) REFERENCES `review_categories` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `review_category_ratings_review_id_foreign` FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `review_helpful_votes`
--
ALTER TABLE `review_helpful_votes`
  ADD CONSTRAINT `review_helpful_votes_review_id_foreign` FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `review_media`
--
ALTER TABLE `review_media`
  ADD CONSTRAINT `review_media_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `review_media_review_id_foreign` FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `review_moderation_logs`
--
ALTER TABLE `review_moderation_logs`
  ADD CONSTRAINT `review_moderation_logs_review_id_foreign` FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `review_moderation_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `review_reports`
--
ALTER TABLE `review_reports`
  ADD CONSTRAINT `review_reports_review_id_foreign` FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `review_responses`
--
ALTER TABLE `review_responses`
  ADD CONSTRAINT `review_responses_review_id_foreign` FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `role_has_permissions`
--
ALTER TABLE `role_has_permissions`
  ADD CONSTRAINT `role_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `role_has_permissions_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `rule_breach_reports`
--
ALTER TABLE `rule_breach_reports`
  ADD CONSTRAINT `rule_breach_reports_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `rule_breach_reports_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `rule_breach_reports_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `rule_breach_reports_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `safety_device_registers`
--
ALTER TABLE `safety_device_registers`
  ADD CONSTRAINT `safe_dev_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `safety_information_sections`
--
ALTER TABLE `safety_information_sections`
  ADD CONSTRAINT `safe_page_sec_fk` FOREIGN KEY (`safety_information_page_id`) REFERENCES `safety_information_pages` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `safety_information_versions`
--
ALTER TABLE `safety_information_versions`
  ADD CONSTRAINT `safe_page_ver_fk` FOREIGN KEY (`safety_information_page_id`) REFERENCES `safety_information_pages` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `safety_inspection_records`
--
ALTER TABLE `safety_inspection_records`
  ADD CONSTRAINT `inspect_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `security_deposit_transactions`
--
ALTER TABLE `security_deposit_transactions`
  ADD CONSTRAINT `security_deposit_transactions_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `security_deposit_transactions_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `security_features`
--
ALTER TABLE `security_features`
  ADD CONSTRAINT `security_features_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `service_requests`
--
ALTER TABLE `service_requests`
  ADD CONSTRAINT `service_requests_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `smart_living_features`
--
ALTER TABLE `smart_living_features`
  ADD CONSTRAINT `smart_living_features_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `staff_emergency_roles`
--
ALTER TABLE `staff_emergency_roles`
  ADD CONSTRAINT `staff_role_user_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `support_tickets`
--
ALTER TABLE `support_tickets`
  ADD CONSTRAINT `support_tickets_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `support_tickets_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `support_ticket_messages`
--
ALTER TABLE `support_ticket_messages`
  ADD CONSTRAINT `support_ticket_messages_support_ticket_id_foreign` FOREIGN KEY (`support_ticket_id`) REFERENCES `support_tickets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `suspicious_identity_cases`
--
ALTER TABLE `suspicious_identity_cases`
  ADD CONSTRAINT `suspicious_guest_doc_fk` FOREIGN KEY (`guest_identity_document_id`) REFERENCES `guest_identity_documents` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `suspicious_identity_cases_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `sustainability_evidence`
--
ALTER TABLE `sustainability_evidence`
  ADD CONSTRAINT `sustainability_evidence_sustainability_feature_id_foreign` FOREIGN KEY (`sustainability_feature_id`) REFERENCES `sustainability_features` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `sustainability_features`
--
ALTER TABLE `sustainability_features`
  ADD CONSTRAINT `sustainability_features_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `sustainability_features_sustainability_category_id_foreign` FOREIGN KEY (`sustainability_category_id`) REFERENCES `sustainability_categories` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `sustainability_media`
--
ALTER TABLE `sustainability_media`
  ADD CONSTRAINT `sustainability_media_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `terms_acceptances`
--
ALTER TABLE `terms_acceptances`
  ADD CONSTRAINT `terms_acceptances_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `terms_acceptances_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `terms_acceptances_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `theme_audit_logs`
--
ALTER TABLE `theme_audit_logs`
  ADD CONSTRAINT `theme_audit_logs_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `units`
--
ALTER TABLE `units`
  ADD CONSTRAINT `units_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `units_building_id_foreign` FOREIGN KEY (`building_id`) REFERENCES `buildings` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `unit_condition_records`
--
ALTER TABLE `unit_condition_records`
  ADD CONSTRAINT `unit_condition_records_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `unit_condition_records_unit_id_foreign` FOREIGN KEY (`unit_id`) REFERENCES `units` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `user_theme_preferences`
--
ALTER TABLE `user_theme_preferences`
  ADD CONSTRAINT `user_theme_preferences_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `video_assets`
--
ALTER TABLE `video_assets`
  ADD CONSTRAINT `video_assets_media_asset_id_foreign` FOREIGN KEY (`media_asset_id`) REFERENCES `media_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `video_testimonials`
--
ALTER TABLE `video_testimonials`
  ADD CONSTRAINT `video_testimonials_apartment_type_id_foreign` FOREIGN KEY (`apartment_type_id`) REFERENCES `apartment_types` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `virtual_tour_hotspots`
--
ALTER TABLE `virtual_tour_hotspots`
  ADD CONSTRAINT `virtual_tour_hotspots_target_scene_id_foreign` FOREIGN KEY (`target_scene_id`) REFERENCES `virtual_tour_assets` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `virtual_tour_hotspots_virtual_tour_asset_id_foreign` FOREIGN KEY (`virtual_tour_asset_id`) REFERENCES `virtual_tour_assets` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `visitor_identity_records`
--
ALTER TABLE `visitor_identity_records`
  ADD CONSTRAINT `visitor_identity_records_booking_id_foreign` FOREIGN KEY (`booking_id`) REFERENCES `bookings` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `visitor_identity_records_guest_id_foreign` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE CASCADE;
COMMIT;

/*!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 */;
