-- 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;

--
