-- https://www.phpmyadmin.net/
--

START TRANSACTION;



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

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

CREATE TABLE `contact_messages` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `whatsapp_number` varchar(255) NOT NULL,
  `subject` varchar(255) DEFAULT NULL,
  `message` 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 `contact_messages`
--

INSERT INTO `contact_messages` (`id`, `name`, `email`, `whatsapp_number`, `subject`, `message`, `created_at`, `updated_at`) VALUES
(24, 'dsa', 'das@dsa.ds', '32143', 'eqeq', 'ewqe', '2025-12-30 07:42:01', '2025-12-30 07:42:01'),
(25, 'dsad', 'dsada@dsad.dasd', 'dsad', 'dsad', 'dasdasw32', '2025-12-30 07:42:24', '2025-12-30 07:42:24');

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

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

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

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

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

CREATE TABLE `faqs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `question` varchar(255) NOT NULL,
  `question_en` varchar(255) DEFAULT NULL,
  `answer` text NOT NULL,
  `answer_en` text DEFAULT NULL,
  `is_published` tinyint(1) NOT NULL DEFAULT 1,
  `order_column` int(10) UNSIGNED 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 `faqs`
--

INSERT INTO `faqs` (`id`, `question`, `question_en`, `answer`, `answer_en`, `is_published`, `order_column`, `created_at`, `updated_at`) VALUES
(3, 'Apa saja layanan yang disediakan oleh perusahaan ini?', 'What services does this company provide?', 'Kami menyediakan layanan pembuatan website, pengembangan sistem berbasis web, maintenance website, optimasi performa, serta konsultasi teknis sesuai kebutuhan bisnis Anda.', 'We provide website creation services, web-based system development, website maintenance, performance optimization, and technical consultation according to your business needs.', 1, 1, '2025-12-23 05:00:51', '2025-12-23 05:03:44'),
(6, 'Jenis kanopi apa saja yang tersedia?', 'What types of canopies do you offer?', 'Kami melayani berbagai jenis kanopi seperti kanopi baja ringan, kanopi Alderon, kanopi polycarbonate, kanopi besi hollow, kanopi carport, dan area parkir. Semua jenis kanopi dapat disesuaikan dengan desain, ukuran, dan kebutuhan bangunan Anda.', 'We offer various types of canopies including lightweight steel canopies, Alderon canopies, polycarbonate canopies, hollow steel canopies, carport canopies, and parking area canopies. All designs can be customized to your building’s needs.', 1, 1, '2026-01-06 02:11:59', '2026-01-06 02:11:59'),
(7, 'Berapa lama proses pemasangan kanopi?', 'How long does the canopy installation process take?', 'Durasi pemasangan tergantung pada ukuran dan jenis kanopi. Umumnya, pemasangan membutuhkan waktu 1–3 hari kerja setelah desain dan material disepakati. Kami selalu mengutamakan hasil yang rapi dan aman.', 'Installation time depends on the canopy size and material. Generally, the process takes 1–3 working days after the design and materials are approved. We always prioritize neat and safe workmanship.', 1, 3, '2026-01-06 02:12:26', '2026-01-06 02:12:26');

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

--
-- Table structure for table `galleries`
--

CREATE TABLE `galleries` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `title_en` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `description_en` text DEFAULT NULL,
  `thumbnail` varchar(255) DEFAULT NULL,
  `images` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`images`)),
  `is_published` tinyint(1) NOT NULL DEFAULT 0,
  `tags` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`tags`)),
  `tags_en` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`tags_en`)),
  `order_column` 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 `galleries`
--

INSERT INTO `galleries` (`id`, `title`, `title_en`, `description`, `description_en`, `thumbnail`, `images`, `is_published`, `tags`, `tags_en`, `order_column`, `created_at`, `updated_at`) VALUES
(2, 'Kanopi Baja Ringan Minimalis', 'Minimalist Lightweight Steel Canopy', 'Kanopi Alderon Premium dirancang untuk memberikan perlindungan maksimal sekaligus kenyamanan ekstra. Menggunakan material Alderon berkualitas tinggi yang kuat, tidak mudah pecah, serta mampu meredam panas dan suara hujan. Kanopi ini sangat cocok untuk teras rumah, balkon, carport, cafe, maupun area komersial yang membutuhkan perlindungan optimal dengan tampilan modern. Kami menyediakan survey GRATIS, estimasi biaya transparan, dan desain yang dapat disesuaikan dengan kebutuhan serta konsep bangunan Anda.', 'The Premium Alderon Canopy is designed to provide maximum protection while ensuring extra comfort. It uses high-quality Alderon material that is strong, impact-resistant, and capable of reducing heat and rain noise. This canopy is ideal for residential terraces, balconies, carports, cafes, and commercial areas that require optimal protection with a modern appearance. We provide a FREE site survey, transparent cost estimation, and designs tailored to your building needs and preferences.', 'galleries/thumbnails/01KE7C1EAQ22EK4WMY88WE008W.png', '[\"galleries\\/images\\/01KE7C1EAW4HGAKRRAH62NJQXA.png\",\"galleries\\/images\\/01KE7C1EAYJ9G8256C93GP4CCA.png\",\"galleries\\/images\\/01KE7C1EB0815BT76SJ4F71F7N.png\"]', 1, '[\"kanopi bandung\",\"jasa kanopi\"]', '[]', 1, '2026-01-05 15:22:33', '2026-01-05 16:23:43'),
(3, 'Perawatan & Perbaikan Kanopi Berkala', 'Periodic Canopy Care & Maintenance', 'Layanan maintenance dan perawatan kanopi kami dirancang untuk menjaga kanopi tetap kuat, aman, dan terlihat seperti baru. Sangat direkomendasikan untuk kanopi yang sudah lama terpasang agar tetap optimal dan terhindar dari kerusakan yang lebih besar.\nPerawatan meliputi pengecekan rangka, baut, sambungan, pembersihan atap kanopi, hingga perbaikan ringan bila diperlukan.', 'Our canopy care and maintenance services are designed to keep canopies strong, safe and looking like new. Highly recommended for canopies that have been installed for a long time so that they remain optimal and avoid greater damage.\nMaintenance includes checking the frame, bolts, joints, cleaning the canopy roof, and minor repairs if necessary.', 'galleries/thumbnails/01KE7GC5AK8C7QAVC0NHF6Z1NH.png', '[\"galleries\\/images\\/01KE7GC5AQST9C6K533X5R2V77.png\"]', 1, '[\"perawatan kanopi\"]', '[\"maintenance\",\"canopy\"]', 2, '2026-01-05 16:38:19', '2026-01-05 16:38:19'),
(4, 'Renovasi & Penggantian Kanopi Lama', 'Canopy Renovation & Replacement Service', 'Kanopi lama terlihat usang, bocor, atau tidak lagi sesuai dengan desain bangunan? Kami menyediakan layanan renovasi dan penggantian kanopi lama dengan konsep baru yang lebih modern, kuat, dan estetik.\nLayanan ini mencakup pembongkaran kanopi lama, perbaikan rangka, serta pemasangan kanopi baru sesuai kebutuhan Anda.\n\n✨ Keunggulan Layanan Renovasi:\n\nSurvey & estimasi biaya GRATIS\nUpgrade material & desain\nPilihan model minimalis hingga modern\nPengerjaan aman dan profesional\nCocok untuk rumah, ruko, dan area komersial\nSolusi tepat untuk memperbarui tampilan bangunan tanpa harus membangun dari awal.', 'Is your old canopy worn out, leaking, or no longer matching your building design? We offer canopy renovation and replacement services with a more modern, durable, and aesthetic concept.\nOur service includes dismantling old canopies, structural improvements, and installing new canopies based on your needs.\n✨ Renovation Service Advantages:\n\nFREE site survey and cost estimation\nMaterial and design upgrades\nMinimalist to modern design options\nSafe and professional workmanship\nSuitable for residential and commercial properties\nThe perfect solution to refresh your building’s appearance efficiently.', 'galleries/thumbnails/01KE8GSAYFV0JT6RCJ01MRV3KA.png', '[\"galleries\\/images\\/01KE8GSAYPGK5BK6HCZ867JYXX.png\"]', 1, '[]', '[]', 3, '2026-01-06 02:04:45', '2026-01-06 02:04:45');

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

--
-- Table structure for table `hero_sections`
--

CREATE TABLE `hero_sections` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `title_en` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `description_en` text DEFAULT NULL,
  `image` varchar(255) DEFAULT NULL,
  `button_text` varchar(255) DEFAULT NULL,
  `button_text_en` varchar(255) DEFAULT NULL,
  `button_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 `hero_sections`
--

INSERT INTO `hero_sections` (`id`, `title`, `title_en`, `description`, `description_en`, `image`, `button_text`, `button_text_en`, `button_url`, `created_at`, `updated_at`) VALUES
(5, 'Jasa Pemasangan Kanopi Profesional & Bergaransi', 'Professional & Guaranteed Canopy Installation Service', 'Solusi kanopi modern, kuat, dan estetik untuk rumah, ruko, kantor, hingga area komersial. Didukung tim berpengalaman, material berkualitas, dan survey GRATIS langsung ke lokasi.', 'Modern, durable, and aesthetic canopy solutions for homes, offices, shophouses, and commercial areas.\nHandled by experienced professionals with premium materials and FREE on-site survey.', 'hero/01KE7C1EAQ22EK4WMY88WE008W.png', 'Konsultasi Gratis Sekarang', 'Free Consultation', '/contacts', '2025-12-21 14:45:40', '2026-01-06 03:26:30'),
(6, 'Solusi Kanopi Berkualitas untuk Segala Kebutuhan', 'Quality Canopy Solutions for Every Need', 'Kami melayani pemasangan, renovasi, dan perawatan kanopi dengan desain custom, harga transparan, serta hasil rapi dan tahan lama.', 'We provide canopy installation, renovation, and maintenance with custom designs, transparent pricing, and long-lasting results.', 'hero/01KE8GSAYFV0JT6RCJ01MRV3KA.png', 'Lihat Layanan Kami', 'View Our Services', '/services', '2025-12-21 14:51:19', '2026-01-06 03:26:53'),
(7, 'Beragam Pilihan Kanopi Sesuai Kebutuhan Anda', 'Explore Our Wide Range of Canopy Types', 'Temukan berbagai jenis kanopi mulai dari kanopi baja ringan, Alderon, Polycarbonate, hingga kanopi carport dan area parkir. Tersedia berbagai model, warna, dan desain yang dapat disesuaikan dengan kebutuhan serta anggaran Anda.', 'Discover a wide selection of canopies including lightweight steel, Alderon, Polycarbonate, carport, and parking area canopies. Available in various models, colors, and designs tailored to your needs and budget.', 'hero/01KE7C1EAQ22EK4WMY88WE008W.png', 'Lihat Produk Kanopi', 'View Canopy Products', '/contacts', '2025-12-21 14:52:34', '2026-01-06 03:49:55');

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

--
-- 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 `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, '2025_11_06_031336_create_settings_table', 1),
(5, '2025_11_06_031402_create_pages_table', 1),
(6, '2025_11_06_032052_create_hero_sections_table', 1),
(7, '2025_11_06_032106_create_seos_table', 1),
(8, '2025_11_06_032326_create_contact_messages_table', 1),
(9, '2025_11_06_032445_create_permission_tables', 1),
(10, '2025_12_11_165115_create_testimonials_table', 2),
(11, '2025_12_12_061505_create_services_table', 3),
(12, '2025_12_12_161657_create_galleries_table', 4),
(13, '2025_12_15_034424_create_faqs_table', 5),
(14, '2025_12_16_062755_create_contact_messages_table', 6),
(15, '2025_12_19_115600_add_color_to_settings_type_enum', 7),
(16, '2025_12_21_213543_add_english_fields_to_hero_sections_table', 8),
(17, '2025_12_21_222905_alter_settings_value_to_json', 9),
(18, '2025_12_22_091800_add_category_to_settings_table', 10),
(19, '2025_12_22_154355_add_en_fields_to_services_table', 11),
(20, '2025_12_22_163847_add_english_columns_to_pages_table', 12),
(21, '2025_12_23_083926_add_english_fields_to_testimonials_table', 13),
(22, '2025_12_23_115246_add_english_fields_to_faqs_table', 14),
(23, '2025_12_23_122238_add_english_fields_to_galleries_table', 15),
(24, '2025_12_24_100509_create_products_table', 16),
(25, '2025_12_27_220128_create_our_partners_table', 17);

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

--
-- 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', 4),
(2, 'App\\Models\\User', 5);

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

--
-- Table structure for table `our_partners`
--

CREATE TABLE `our_partners` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `logo` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `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 `our_partners`
--

INSERT INTO `our_partners` (`id`, `name`, `logo`, `is_active`, `order`, `created_at`, `updated_at`) VALUES
(1, 'BCA', 'partners/01KDG5T494420VZ3F8CS7GPTFY.png', 1, 1, '2025-12-27 15:11:10', '2025-12-27 15:11:10'),
(7, 'Wika', 'partners/01KDPRHWDQ6PYBR6E4FW2359D5.png', 1, 2, '2025-12-30 04:34:09', '2025-12-30 04:34:09'),
(8, 'nindya', 'partners/01KDPRM3FMSARXBZYP8B2V6KWT.png', 1, 3, '2025-12-30 04:35:22', '2025-12-30 04:35:22'),
(9, 'waskita', 'partners/01KDPRMJ5ZMT96SKGN9TGZ3GD1.png', 1, 4, '2025-12-30 04:35:37', '2025-12-30 04:35:37'),
(10, 'id food', 'partners/01KDPRN2PQGH5Y44C42ETTV6E5.png', 1, 5, '2025-12-30 04:35:54', '2025-12-30 04:35:54');

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

--
-- Table structure for table `pages`
--

CREATE TABLE `pages` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `title` varchar(255) NOT NULL,
  `title_en` varchar(255) DEFAULT NULL,
  `slug` varchar(255) NOT NULL,
  `thumbnail` varchar(255) DEFAULT NULL,
  `content` longtext DEFAULT NULL,
  `content_en` longtext DEFAULT NULL,
  `is_published` tinyint(1) NOT NULL DEFAULT 0,
  `publish_at` timestamp NULL DEFAULT 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;

--
-- Dumping data for table `pages`
--

INSERT INTO `pages` (`id`, `title`, `title_en`, `slug`, `thumbnail`, `content`, `content_en`, `is_published`, `publish_at`, `created_by`, `created_at`, `updated_at`) VALUES
(13, 'Panduan Lengkap Memilih Kanopi yang Tepat untuk Rumah & Bangunan Komersial', 'Complete Guide to Choosing the Right Canopy for Homes & Commercial Buildings', 'panduan-lengkap-memilih-kanopi-yang-tepat-untuk-rumah-bangunan-komersial', 'pages/01KE97YT3B34CYXY31QTBR1B14.png', '<p>Kanopi bukan hanya berfungsi sebagai pelindung dari panas matahari dan hujan, tetapi juga memiliki peran penting dalam meningkatkan <strong>kenyamanan, keamanan, dan nilai estetika</strong> sebuah bangunan. Oleh karena itu, memilih jenis kanopi yang tepat menjadi langkah penting sebelum melakukan pemasangan.</p><p><strong>Mengapa Kanopi Sangat Dibutuhkan?</strong></p><p>Di Indonesia dengan kondisi cuaca yang panas dan curah hujan tinggi, kanopi menjadi solusi ideal untuk melindungi area luar seperti teras, carport, balkon, dan area parkir. Selain itu, kanopi juga membantu menjaga kendaraan, perabot, dan area bangunan tetap awet dan terlindungi.</p><p><strong>Jenis-Jenis Kanopi yang Umum Digunakan</strong></p><p>Berikut beberapa jenis kanopi yang paling banyak digunakan dan direkomendasikan:</p><p><strong>1. Kanopi Baja Ringan</strong></p><p>Kanopi baja ringan terkenal dengan kekuatan dan bobotnya yang ringan. Material ini anti karat, tahan lama, dan cocok untuk berbagai jenis bangunan seperti rumah, ruko, dan carport.</p><p><strong>2. Kanopi Alderon</strong></p><p>Kanopi Alderon memiliki keunggulan dalam meredam panas dan suara hujan. Cocok digunakan untuk area yang membutuhkan kenyamanan ekstra seperti teras rumah, cafe, dan balkon.</p><p><strong>3. Kanopi Polycarbonate</strong></p><p>Kanopi polycarbonate memberikan pencahayaan alami karena sifatnya yang transparan. Sangat cocok untuk area terbuka yang tetap membutuhkan cahaya tanpa mengorbankan perlindungan.</p><p><strong>4. Kanopi Besi Hollow</strong></p><p>Kanopi dengan rangka besi hollow memiliki struktur yang kokoh dan stabil, sangat ideal untuk carport dan area parkir kendaraan.</p><p><strong>Tips Memilih Kanopi yang Tepat</strong></p><p>Agar mendapatkan hasil maksimal, berikut beberapa tips sebelum memilih kanopi:</p><ul><li><p>Sesuaikan jenis kanopi dengan fungsi area</p></li><li><p>Pilih material berkualitas dan tahan cuaca</p></li><li><p>Pertimbangkan desain agar selaras dengan bangunan</p></li><li><p>Gunakan jasa profesional untuk hasil yang aman dan rapi</p></li></ul><p><strong>Gunakan Jasa Pemasangan Kanopi Profesional</strong></p><p>Menggunakan jasa pemasangan kanopi profesional memberikan banyak keuntungan, mulai dari hasil yang lebih rapi, struktur yang aman, hingga efisiensi waktu dan biaya.</p><p>Kami menyediakan layanan <strong>pemasangan, renovasi, dan perawatan kanopi</strong> dengan material berkualitas dan tenaga ahli berpengalaman.<br>Nikmati <strong>survey &amp; konsultasi GRATIS</strong>, estimasi biaya transparan, serta desain yang dapat disesuaikan dengan kebutuhan Anda.</p><p><strong>Kesimpulan</strong></p><p>Memilih kanopi yang tepat adalah investasi jangka panjang untuk kenyamanan dan keamanan bangunan Anda. Dengan material berkualitas dan pemasangan yang profesional, kanopi tidak hanya berfungsi sebagai pelindung, tetapi juga meningkatkan nilai estetika properti Anda.</p>', '<p>A canopy is not only a protection from sunlight and rain but also plays an important role in enhancing the <strong>comfort, safety, and aesthetic value</strong> of a building. Choosing the right type of canopy is a crucial step before installation.</p><p><strong>Why Is a Canopy Important?</strong></p><p>In Indonesia’s tropical climate with intense heat and heavy rainfall, canopies are an ideal solution for protecting outdoor areas such as terraces, carports, balconies, and parking spaces. They also help preserve vehicles, furniture, and building structures.</p><p><strong>Common Types of Canopies</strong></p><p>Here are some of the most commonly used and recommended canopy types:</p><p><strong>1. Lightweight Steel Canopy</strong></p><p>Lightweight steel canopies are known for their strength and durability. They are rust-resistant, long-lasting, and suitable for residential homes, shophouses, and carports.</p><p><strong>2. Alderon Canopy</strong></p><p>Alderon canopies excel at reducing heat and rain noise, making them ideal for terraces, cafes, and balconies where comfort is a priority.</p><p><strong>3. Polycarbonate Canopy</strong></p><p>Polycarbonate canopies allow natural light to pass through while still providing protection. Perfect for open areas that require brightness and coverage.</p><p><strong>4. Hollow Steel Canopy</strong></p><p>Hollow steel frame canopies offer a strong and stable structure, making them suitable for carports and parking areas.</p><p><strong>Tips for Choosing the Right Canopy</strong></p><p>To achieve the best results, consider the following tips:</p><ul><li><p>Match the canopy type to its intended function</p></li><li><p>Choose high-quality, weather-resistant materials</p></li><li><p>Ensure the design complements the building</p></li><li><p>Use professional installation services</p></li></ul><p><strong>Choose a Professional Canopy Installation Service</strong></p><p>Hiring a professional canopy service ensures neat workmanship, structural safety, and cost efficiency.</p><p>We provide <strong>canopy installation, renovation, and maintenance services</strong> using premium materials and experienced professionals.<br>Enjoy a <strong>FREE site survey and consultation</strong>, transparent pricing, and custom designs tailored to your needs.</p><p><strong>Conclusion</strong></p><p>Choosing the right canopy is a long-term investment for your property’s comfort and safety. With quality materials and professional installation, a canopy enhances both functionality and visual appeal.</p>', 1, '2026-01-05 15:41:54', NULL, '2026-01-05 15:41:57', '2026-01-06 08:49:42'),
(14, 'Keunggulan Menggunakan Jasa Pemasangan Kanopi Profesional', 'Advantages of Using Professional Canopy Installation Services', 'keunggulan-menggunakan-jasa-pemasangan-kanopi-profesional', 'pages/01KE97ZBMEVAYPC7FQNV3X4DA5.png', '<p>Memasang kanopi bukan sekadar menutup area luar dari panas dan hujan. Dibutuhkan perencanaan, pemilihan material, serta teknik pemasangan yang tepat agar kanopi aman, tahan lama, dan memiliki tampilan yang menarik. Inilah alasan mengapa menggunakan <strong>jasa pemasangan kanopi profesional</strong> menjadi pilihan terbaik.</p><p><strong>1. Perencanaan yang Tepat Sejak Awal</strong></p><p>Jasa profesional selalu memulai pekerjaan dengan survey lokasi dan konsultasi. Dari tahap ini, ukuran, desain, kemiringan, hingga jenis material kanopi ditentukan secara presisi sesuai kondisi bangunan.</p><p><strong>2. Material Berkualitas &amp; Sesuai Kebutuhan</strong></p><p>Setiap jenis kanopi memiliki fungsi dan karakteristik berbeda. Dengan menggunakan jasa profesional, Anda akan mendapatkan rekomendasi material terbaik seperti baja ringan, Alderon, polycarbonate, atau besi hollow sesuai kebutuhan dan anggaran.</p><p><strong>3. Pengerjaan Aman dan Rapi</strong></p><p>Kanopi yang dipasang tanpa perhitungan struktur berisiko membahayakan. Tim profesional memahami standar keamanan, teknik pemasangan, serta detail finishing agar hasil akhir rapi dan kokoh.</p><p><strong>4. Efisiensi Waktu dan Biaya</strong></p><p>Dengan tenaga ahli berpengalaman, proses pemasangan menjadi lebih cepat dan minim kesalahan. Hal ini justru menghemat biaya dibandingkan perbaikan akibat pemasangan yang kurang tepat.</p><p><strong>5. Garansi dan Layanan Purna Jual</strong></p><p>Jasa profesional umumnya memberikan garansi pekerjaan serta layanan perawatan jika dibutuhkan di kemudian hari.</p><p><strong>Kesimpulan</strong></p><p>Menggunakan jasa pemasangan kanopi profesional adalah investasi cerdas untuk jangka panjang. Anda tidak hanya mendapatkan kanopi yang kuat dan estetik, tetapi juga rasa aman dan kenyamanan maksimal.</p><p>Kami siap membantu dengan <strong>survey GRATIS</strong>, konsultasi desain, serta pemasangan kanopi berkualitas untuk rumah maupun bangunan komersial Anda.</p>', '<p>Installing a canopy is not just about covering an outdoor area from sun and rain. It requires proper planning, material selection, and correct installation techniques to ensure safety, durability, and aesthetic appeal. This is why using <strong>professional canopy installation services</strong> is the best choice.</p><p><strong>1. Proper Planning from the Start</strong></p><p>Professional services always begin with a site survey and consultation. During this stage, measurements, design, slope, and material selection are carefully planned based on the building’s condition.</p><p><strong>2. High-Quality Materials Based on Your Needs</strong></p><p>Each canopy type has different functions and characteristics. With professional services, you receive expert recommendations for materials such as lightweight steel, Alderon, polycarbonate, or hollow steel based on your needs and budget.</p><p><strong>3. Safe and Neat Installation</strong></p><p>Improperly installed canopies can pose safety risks. Professional teams follow structural standards and proper installation techniques to ensure a strong and neat final result.</p><p><strong>4. Time and Cost Efficiency</strong></p><p>Experienced professionals complete installations faster with minimal errors, helping you avoid costly repairs in the future.</p><p><strong>5. Warranty and After-Sales Service</strong></p><p>Professional services usually provide workmanship warranties and maintenance support when needed.</p><p><strong>Conclusion</strong></p><p>Using professional canopy installation services is a smart long-term investment. You gain a durable, aesthetic canopy along with safety and peace of mind.</p><p>We are ready to assist you with a <strong>FREE site survey</strong>, design consultation, and high-quality canopy installation for residential and commercial buildings.</p>', 1, '2026-01-05 15:44:17', NULL, '2026-01-05 15:44:20', '2026-01-06 08:49:59'),
(15, 'Tips Merawat Kanopi Agar Tetap Awet dan Tahan Lama', 'Tips for Maintaining Your Canopy to Stay Durable and Long-Lasting', 'tips-merawat-kanopi-agar-tetap-awet-dan-tahan-lama', 'pages/01KE97ZTX4B8EAKA9TSZ65MRQ2.png', '<p>Kanopi yang dirawat dengan baik tidak hanya terlihat lebih rapi, tetapi juga memiliki umur pakai yang lebih panjang. Perawatan rutin sangat penting untuk menjaga kekuatan struktur dan tampilan kanopi tetap optimal.</p><p><strong>1. Lakukan Pembersihan Secara Berkala</strong></p><p>Debu, kotoran, dan daun kering yang menumpuk dapat mempercepat kerusakan material. Bersihkan atap dan rangka kanopi secara rutin agar tetap bersih dan terawat.</p><p><strong>2. Periksa Rangka dan Sambungan</strong></p><p>Pastikan baut, sambungan, dan rangka dalam kondisi baik. Jika ditemukan karat atau baut longgar, segera lakukan perbaikan untuk mencegah kerusakan lebih lanjut.</p><p><strong>3. Cek Kondisi Atap Kanopi</strong></p><p>Atap kanopi seperti Alderon atau polycarbonate perlu diperiksa secara berkala untuk memastikan tidak ada retak, bocor, atau perubahan bentuk.</p><p><strong>4. Hindari Beban Berlebih</strong></p><p>Jangan meletakkan benda berat di atas kanopi karena dapat merusak struktur dan mengurangi kekuatannya.</p><p><strong>5. Gunakan Jasa Maintenance Profesional</strong></p><p>Untuk hasil maksimal, gunakan jasa perawatan kanopi profesional yang memahami struktur dan material kanopi dengan baik.</p><p><strong>Kesimpulan</strong></p><p>Perawatan rutin adalah kunci agar kanopi tetap awet, aman, dan nyaman digunakan. Dengan perawatan yang tepat, kanopi dapat bertahan dalam jangka waktu yang lama dan tetap terlihat menarik.</p><p>Kami menyediakan layanan <strong>maintenance kanopi dengan survey GRATIS</strong>, pengecekan menyeluruh, dan perbaikan profesional sesuai kebutuhan Anda.</p>', '<p>Properly maintained canopies not only look neater but also last much longer. Routine maintenance is essential to preserve structural strength and overall appearance.</p><p><strong>1. Perform Regular Cleaning</strong></p><p>Dust, dirt, and fallen leaves can accelerate material deterioration. Clean the canopy roof and frame regularly to keep it in good condition.</p><p><strong>2. Inspect the Frame and Connections</strong></p><p>Ensure that bolts, joints, and frames are secure. If rust or loose bolts are found, address them immediately to prevent further damage.</p><p><strong>3. Check the Canopy Roofing Condition</strong></p><p>Roofing materials such as Alderon or polycarbonate should be inspected periodically to detect cracks, leaks, or deformation.</p><p><strong>4. Avoid Excessive Loads</strong></p><p>Do not place heavy objects on the canopy, as this can damage the structure and reduce its strength.</p><p><strong>5. Use Professional Maintenance Services</strong></p><p>For optimal results, use professional canopy maintenance services that understand canopy structures and materials.</p><p><strong>Conclusion</strong></p><p>Routine maintenance is the key to keeping your canopy durable, safe, and comfortable. With proper care, your canopy will last longer and maintain its aesthetic appeal.</p><p>We offer <strong>professional canopy maintenance services with a FREE site survey</strong>, thorough inspections, and reliable repairs based on your needs.</p>', 1, '2026-01-05 15:47:02', NULL, '2026-01-05 15:47:06', '2026-01-06 08:50:15');

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

--
-- 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, 'manage pages', 'web', '2025-11-05 21:27:14', '2025-11-05 22:51:41'),
(2, 'manage settings', 'web', '2025-11-05 21:27:14', '2025-11-05 22:51:41'),
(3, 'view contact messages', 'web', '2025-11-05 21:27:14', '2025-11-05 22:51:41'),
(4, 'ViewAny:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(5, 'View:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(6, 'Create:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(7, 'Update:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(8, 'Delete:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(9, 'Restore:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(10, 'ForceDelete:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(11, 'ForceDeleteAny:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(12, 'RestoreAny:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(13, 'Replicate:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(14, 'Reorder:Role', 'web', '2025-11-05 21:30:33', '2025-11-05 22:51:41'),
(15, 'ViewAny:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(16, 'View:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(17, 'Create:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(18, 'Update:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(19, 'Delete:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(20, 'Restore:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(21, 'ForceDelete:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(22, 'ForceDeleteAny:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(23, 'RestoreAny:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(24, 'Replicate:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(25, 'Reorder:Page', 'web', '2025-11-05 21:54:49', '2025-11-05 22:51:41'),
(26, 'ViewAny:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(27, 'View:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(28, 'Create:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(29, 'Update:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(30, 'Delete:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(31, 'Restore:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(32, 'ForceDelete:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(33, 'ForceDeleteAny:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(34, 'RestoreAny:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(35, 'Replicate:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(36, 'Reorder:ContactMessage', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(37, 'ViewAny:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(38, 'View:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(39, 'Create:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(40, 'Update:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(41, 'Delete:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(42, 'Restore:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(43, 'ForceDelete:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(44, 'ForceDeleteAny:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(45, 'RestoreAny:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(46, 'Replicate:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(47, 'Reorder:HeroSection', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(48, 'ViewAny:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(49, 'View:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(50, 'Create:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(51, 'Update:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(52, 'Delete:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(53, 'Restore:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(54, 'ForceDelete:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(55, 'ForceDeleteAny:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(56, 'RestoreAny:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(57, 'Replicate:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(58, 'Reorder:Seo', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(59, 'ViewAny:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(60, 'View:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(61, 'Create:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(62, 'Update:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(63, 'Delete:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(64, 'Restore:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(65, 'ForceDelete:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(66, 'ForceDeleteAny:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(67, 'RestoreAny:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(68, 'Replicate:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(69, 'Reorder:Setting', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(70, 'ViewAny:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(71, 'View:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(72, 'Create:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(73, 'Update:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(74, 'Delete:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(75, 'Restore:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(76, 'ForceDelete:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(77, 'ForceDeleteAny:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(78, 'RestoreAny:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(79, 'Replicate:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(80, 'Reorder:User', 'web', '2025-11-05 22:06:15', '2025-11-05 22:51:41'),
(81, 'ViewAny:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(82, 'View:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(83, 'Create:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(84, 'Update:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(85, 'Delete:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(86, 'Restore:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(87, 'ForceDelete:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(88, 'ForceDeleteAny:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(89, 'RestoreAny:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(90, 'Replicate:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(91, 'Reorder:Testimonial', 'web', '2025-12-11 10:29:39', '2025-12-11 10:29:39'),
(92, 'ViewAny:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(93, 'View:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(94, 'Create:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(95, 'Update:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(96, 'Delete:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(97, 'Restore:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(98, 'ForceDelete:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(99, 'ForceDeleteAny:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(100, 'RestoreAny:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(101, 'Replicate:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(102, 'Reorder:Service', 'web', '2025-12-11 23:36:21', '2025-12-11 23:36:21'),
(103, 'ViewAny:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(104, 'View:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(105, 'Create:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(106, 'Update:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(107, 'Delete:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(108, 'Restore:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(109, 'ForceDelete:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(110, 'ForceDeleteAny:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(111, 'RestoreAny:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(112, 'Replicate:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(113, 'Reorder:Gallery', 'web', '2025-12-12 09:18:06', '2025-12-12 09:18:06'),
(114, 'ViewAny:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(115, 'View:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(116, 'Create:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(117, 'Update:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(118, 'Delete:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(119, 'Restore:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(120, 'ForceDelete:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(121, 'ForceDeleteAny:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(122, 'RestoreAny:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(123, 'Replicate:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(124, 'Reorder:Faq', 'web', '2025-12-14 20:47:55', '2025-12-14 20:47:55'),
(125, 'ViewAny:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(126, 'View:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(127, 'Create:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(128, 'Update:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(129, 'Delete:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(130, 'Restore:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(131, 'ForceDelete:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(132, 'ForceDeleteAny:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(133, 'RestoreAny:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(134, 'Replicate:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(135, 'Reorder:Product', 'web', '2025-12-24 03:07:54', '2025-12-24 03:07:54'),
(136, 'View:DashboardOverview', 'web', '2025-12-24 03:53:14', '2025-12-24 03:53:14'),
(137, 'ViewAny:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(138, 'View:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(139, 'Create:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(140, 'Update:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(141, 'Delete:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(142, 'Restore:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(143, 'ForceDelete:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(144, 'ForceDeleteAny:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(145, 'RestoreAny:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(146, 'Replicate:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38'),
(147, 'Reorder:OurPartner', 'web', '2025-12-27 15:14:38', '2025-12-27 15:14:38');

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

--
-- Table structure for table `products`
--

CREATE TABLE `products` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `slug` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  `name_id` varchar(255) NOT NULL,
  `name_en` varchar(255) DEFAULT NULL,
  `description_id` longtext DEFAULT NULL,
  `description_en` longtext DEFAULT NULL,
  `price` decimal(15,2) NOT NULL DEFAULT 0.00,
  `sale_price` decimal(15,2) DEFAULT NULL,
  `images` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`images`)),
  `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 `products`
--

INSERT INTO `products` (`id`, `slug`, `is_active`, `sort_order`, `name_id`, `name_en`, `description_id`, `description_en`, `price`, `sale_price`, `images`, `created_at`, `updated_at`) VALUES
(4, 'kanopi-baja-ringan-minimalis', 1, 1, 'Kanopi Baja Ringan Minimalis', 'Minimalist Lightweight Steel Canopy', '<p>Kanopi Baja Ringan Minimalis adalah solusi kanopi modern yang mengutamakan <strong>kekuatan, ketahanan, dan tampilan estetik</strong>. Menggunakan rangka baja ringan berkualitas tinggi yang anti karat dan tahan terhadap cuaca ekstrem, kanopi ini sangat cocok untuk penggunaan jangka panjang.</p><p>Desain minimalis membuat kanopi terlihat rapi, modern, dan menyatu dengan berbagai konsep bangunan, baik rumah tinggal, carport, teras, maupun ruko.</p><p>Layanan kami sudah termasuk <strong>survey GRATIS ke lokasi</strong>, konsultasi desain, serta pengerjaan oleh tenaga profesional berpengalaman.</p><p><strong>Keunggulan Produk:</strong></p><ul><li><p>Rangka baja ringan berkualitas &amp; anti karat</p></li><li><p>Desain minimalis modern</p></li><li><p>Tahan panas dan hujan</p></li><li><p>Cocok untuk rumah, carport, dan ruko</p></li><li><p>Custom ukuran dan model</p></li><li><p><strong>Gratis survey &amp; konsultasi</strong></p></li></ul>', '<p>The Minimalist Lightweight Steel Canopy is a modern canopy solution that prioritizes strength, durability, and aesthetic appearance. Built using high-quality lightweight steel that is rust-resistant and weatherproof, this canopy is ideal for long-term use.\nIts minimalist design creates a clean and modern look that blends seamlessly with various building concepts, including residential homes, carports, terraces, and shophouses.\nOur service includes a FREE on-site survey, design consultation, and installation by experienced professional technicians.\nProduct Advantages:\n* High-quality, rust-resistant lightweight steel frame\n* Modern minimalist design\n* Resistant to heat and rain\n* Suitable for homes, carports, and shophouses\n* Custom size and design available\n* Free survey &amp; consultation</p>', 3500000.00, 3000000.00, '[\"products\\/01KE7B9TQT864206ZQXWBPK224.png\"]', '2026-01-05 15:09:39', '2026-01-05 15:34:21'),
(5, 'kanopi-alderon-premium', 1, 2, 'Kanopi Alderon Premium', 'Premium Alderon Canopy', '<p>Kanopi Alderon Premium dirancang untuk memberikan <strong>perlindungan maksimal sekaligus kenyamanan ekstra</strong>. Menggunakan material Alderon berkualitas tinggi yang kuat, tidak mudah pecah, serta mampu meredam panas dan suara hujan.</p><p>Kanopi ini sangat cocok untuk teras rumah, balkon, carport, cafe, maupun area komersial yang membutuhkan perlindungan optimal dengan tampilan modern.</p><p>Kami menyediakan <strong>survey GRATIS</strong>, estimasi biaya transparan, dan desain yang dapat disesuaikan dengan kebutuhan serta konsep bangunan Anda.</p><p><strong>Keunggulan Produk:</strong></p><ul><li><p>Material Alderon premium</p></li><li><p>Meredam panas dan kebisingan</p></li><li><p>Tampilan modern dan elegan</p></li><li><p>Cocok untuk rumah dan bangunan komersial</p></li><li><p>Custom warna dan ukuran</p></li><li><p><strong>Gratis survey &amp; estimasi biaya</strong></p></li></ul>', '<p>The Premium Alderon Canopy is designed to provide <strong>maximum protection while ensuring extra comfort</strong>. It uses high-quality Alderon material that is strong, impact-resistant, and capable of reducing heat and rain noise.</p><p>This canopy is ideal for residential terraces, balconies, carports, cafes, and commercial areas that require optimal protection with a modern appearance.</p><p>We provide a <strong>FREE site survey</strong>, transparent cost estimation, and designs tailored to your building needs and preferences.</p><p><strong>Product Advantages:</strong></p><ul><li><p>Premium Alderon material</p></li><li><p>Reduces heat and rain noise</p></li><li><p>Modern and elegant appearance</p></li><li><p>Suitable for residential and commercial buildings</p></li><li><p>Custom colors and sizes available</p></li><li><p><strong>Free survey &amp; cost estimation</strong></p></li></ul>', 5000000.00, 4500000.00, '[\"products\\/01KE7BKJ5GET42CBG3MC0G91PJ.jpg\"]', '2026-01-05 15:14:58', '2026-01-05 15:38:18'),
(6, 'kanopi-polycarbonate-transparan', 1, 3, 'Kanopi Polycarbonate Transparan', 'Transparent Polycarbonate Canopy', '<p>Kanopi Polycarbonate Transparan menawarkan solusi perlindungan area terbuka dengan <strong>pencahayaan alami maksimal</strong>. Material polycarbonate dikenal kuat, tahan benturan, serta tahan panas dan cuaca ekstrem.</p><p>Kanopi ini sangat cocok untuk carport, taman, balkon, dan area parkir yang tetap membutuhkan cahaya alami tanpa mengorbankan fungsi perlindungan.</p><p>Layanan kami mencakup <strong>survey GRATIS ke lokasi</strong>, konsultasi desain, dan pemasangan profesional.</p><p><strong>Keunggulan Produk:</strong></p><ul><li><p>Material polycarbonate berkualitas tinggi</p></li><li><p>Transparan dengan tampilan modern</p></li><li><p>Tahan panas dan cuaca ekstrem</p></li><li><p>Cocok untuk berbagai jenis bangunan</p></li><li><p>Custom ukuran dan desain</p></li><li><p><strong>Gratis survey &amp; konsultasi</strong></p></li></ul>', '<p>The Transparent Polycarbonate Canopy provides protection for outdoor areas while allowing <strong>maximum natural light</strong>. Polycarbonate material is known for its strength, impact resistance, and durability against heat and extreme weather.</p><p>This canopy is ideal for carports, gardens, balconies, and parking areas that require brightness without sacrificing protection.</p><p>Our service includes a <strong>FREE on-site survey</strong>, design consultation, and professional installation.</p><p><strong>Product Advantages:</strong></p><ul><li><p>High-quality polycarbonate material</p></li><li><p>Transparent with a modern look</p></li><li><p>Resistant to heat and extreme weather</p></li><li><p>Suitable for various building types</p></li><li><p>Custom size and design available</p></li><li><p><strong>Free survey &amp; consultation</strong></p></li></ul>', 4500000.00, 3000000.00, '[\"products\\/01KE7BSNSXKFMDY7TWES85TTCR.png\"]', '2026-01-05 15:18:19', '2026-01-05 15:39:08');

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

--
-- Table structure for table `roles`
--

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

--
-- Dumping data for table `roles`
--

INSERT INTO `roles` (`id`, `name`, `guard_name`, `created_at`, `updated_at`) VALUES
(1, 'admin', 'web', '2025-11-05 21:27:14', '2025-11-05 21:27:14'),
(2, 'editor', 'web', '2025-11-05 21:27:14', '2025-11-05 21:27:14');

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

--
-- Table structure for table `role_has_permissions`
--

CREATE TABLE `role_has_permissions` (
  `permission_id` bigint(20) UNSIGNED NOT NULL,
  `role_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `role_has_permissions`
--

INSERT INTO `role_has_permissions` (`permission_id`, `role_id`) VALUES
(4, 1),
(5, 1),
(6, 1),
(7, 1),
(8, 1),
(9, 1),
(10, 1),
(11, 1),
(12, 1),
(13, 1),
(14, 1),
(15, 1),
(15, 2),
(16, 1),
(16, 2),
(17, 1),
(17, 2),
(18, 1),
(18, 2),
(19, 1),
(19, 2),
(20, 1),
(20, 2),
(21, 1),
(21, 2),
(22, 1),
(22, 2),
(23, 1),
(23, 2),
(24, 1),
(24, 2),
(25, 1),
(25, 2),
(26, 1),
(26, 2),
(27, 1),
(27, 2),
(28, 1),
(28, 2),
(29, 1),
(29, 2),
(30, 1),
(30, 2),
(31, 1),
(31, 2),
(32, 1),
(32, 2),
(33, 1),
(33, 2),
(34, 1),
(34, 2),
(35, 1),
(35, 2),
(36, 1),
(36, 2),
(37, 1),
(37, 2),
(38, 1),
(38, 2),
(39, 1),
(39, 2),
(40, 1),
(40, 2),
(41, 1),
(41, 2),
(42, 1),
(42, 2),
(43, 1),
(43, 2),
(44, 1),
(44, 2),
(45, 1),
(45, 2),
(46, 1),
(46, 2),
(47, 1),
(47, 2),
(48, 1),
(48, 2),
(49, 1),
(49, 2),
(50, 1),
(50, 2),
(51, 1),
(51, 2),
(52, 1),
(52, 2),
(53, 1),
(53, 2),
(54, 1),
(54, 2),
(55, 1),
(55, 2),
(56, 1),
(56, 2),
(57, 1),
(57, 2),
(58, 1),
(58, 2),
(59, 1),
(60, 1),
(61, 1),
(62, 1),
(63, 1),
(64, 1),
(65, 1),
(66, 1),
(67, 1),
(68, 1),
(69, 1),
(70, 1),
(71, 1),
(72, 1),
(73, 1),
(74, 1),
(75, 1),
(76, 1),
(77, 1),
(78, 1),
(79, 1),
(80, 1),
(81, 1),
(81, 2),
(82, 1),
(82, 2),
(83, 1),
(83, 2),
(84, 1),
(84, 2),
(85, 1),
(85, 2),
(86, 1),
(86, 2),
(87, 1),
(87, 2),
(88, 1),
(88, 2),
(89, 1),
(89, 2),
(90, 1),
(90, 2),
(91, 1),
(91, 2),
(92, 1),
(92, 2),
(93, 1),
(93, 2),
(94, 1),
(94, 2),
(95, 1),
(95, 2),
(96, 1),
(96, 2),
(97, 1),
(97, 2),
(98, 1),
(98, 2),
(99, 1),
(99, 2),
(100, 1),
(100, 2),
(101, 1),
(101, 2),
(102, 1),
(102, 2),
(103, 1),
(103, 2),
(104, 1),
(104, 2),
(105, 1),
(105, 2),
(106, 1),
(106, 2),
(107, 1),
(107, 2),
(108, 1),
(108, 2),
(109, 1),
(109, 2),
(110, 1),
(110, 2),
(111, 1),
(111, 2),
(112, 1),
(112, 2),
(113, 1),
(113, 2),
(114, 1),
(114, 2),
(115, 1),
(115, 2),
(116, 1),
(116, 2),
(117, 1),
(117, 2),
(118, 1),
(118, 2),
(119, 1),
(119, 2),
(120, 1),
(120, 2),
(121, 1),
(121, 2),
(122, 1),
(122, 2),
(123, 1),
(123, 2),
(124, 1),
(124, 2),
(125, 1),
(126, 1),
(127, 1),
(128, 1),
(129, 1),
(130, 1),
(131, 1),
(132, 1),
(133, 1),
(134, 1),
(135, 1),
(136, 1),
(137, 1),
(138, 1),
(139, 1),
(140, 1),
(141, 1),
(142, 1),
(143, 1),
(144, 1),
(145, 1),
(146, 1),
(147, 1);

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

--
-- Table structure for table `seos`
--

CREATE TABLE `seos` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `page` varchar(255) NOT NULL,
  `meta_title` varchar(255) DEFAULT NULL,
  `meta_description` text DEFAULT NULL,
  `og_image` 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 `seos`
--

INSERT INTO `seos` (`id`, `page`, `meta_title`, `meta_description`, `og_image`, `created_at`, `updated_at`) VALUES
(1, 'Home', 'Jasa Website Terbaik di Bandung', 'Kami adlah agensi jasa pembuatan website terbaik dikota bandung & Cimahi', 'seo/pexels-canvastudio-3194521.jpg', '2025-11-05 21:23:15', '2025-12-15 02:34:52');

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

--
-- Table structure for table `services`
--

CREATE TABLE `services` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `name_en` varchar(255) DEFAULT NULL,
  `slug` varchar(255) NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `image` varchar(255) DEFAULT NULL,
  `description` longtext DEFAULT NULL,
  `description_en` longtext 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 `services`
--

INSERT INTO `services` (`id`, `name`, `name_en`, `slug`, `icon`, `image`, `description`, `description_en`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES
(5, 'Pemasangan Kanopi Baru untuk Rumah & Bangunan Komersial', 'New Canopy Installation for Residential & Commercial Buildings', 'pemasangan-kanopi-baru-untuk-rumah-bangunan-komersial', 'services/icons/01KE78DS6A1SE8V7RPQCSQ8RP0.png', 'services/01KE78DS6E2T01GDC8K78KJK0Z.png', '<p>Kami menyediakan layanan <strong>pemasangan kanopi baru</strong> dengan desain modern, kokoh, dan disesuaikan dengan kebutuhan bangunan Anda. Layanan ini cocok untuk rumah tinggal, ruko, kantor, cafe, gudang, hingga area komersial lainnya.</p><p>Didukung oleh tim profesional berpengalaman, kami menggunakan material berkualitas seperti <strong>baja ringan, besi hollow, Alderon, Polycarbonate, dan Spandek</strong> yang terbukti kuat, tahan lama, serta minim perawatan.</p><p><strong>Keunggulan Layanan Kami:</strong></p><ol start=\"1\"><li><p><strong>Survey &amp; konsultasi GRATIS</strong> langsung ke lokasi</p></li><li><p>Desain custom sesuai kebutuhan dan konsep bangunan</p></li><li><p>Material berkualitas &amp; bergaransi</p></li><li><p>Pengerjaan rapi, cepat, dan profesional</p></li><li><p>Harga transparan &amp; kompetitif</p></li><li><p>Cocok untuk carport, teras, balkon, dan area parkir</p></li></ol><p>Kami berkomitmen menghadirkan kanopi yang tidak hanya berfungsi sebagai pelindung, tetapi juga meningkatkan nilai estetika dan kenyamanan properti Anda</p>', '<p>We provide <strong>professional new canopy installation services</strong> with modern, durable, and customized designs tailored to your building needs. Our services are suitable for residential houses, shophouses, offices, cafes, warehouses, and other commercial areas.</p><p>Supported by an experienced professional team, we use high-quality materials such as <strong>lightweight steel, hollow steel, Alderon, Polycarbonate, and Spandek roofing</strong>, ensuring long-lasting performance and minimal maintenance.</p><p><strong>Our Service Advantages:</strong></p><ol start=\"1\"><li><p><strong>FREE on-site survey and consultation</strong></p></li><li><p>Custom design based on your needs and building style</p></li><li><p>High-quality materials with warranty</p></li><li><p>Neat, fast, and professional workmanship</p></li><li><p>Transparent and competitive pricing</p></li><li><p>Ideal for carports, terraces, balconies, and parking areas</p></li></ol><p>We are committed to delivering canopies that provide protection while enhancing the aesthetics and value of your property.</p>', 1, 1, '2026-01-05 14:19:23', '2026-01-05 14:40:39'),
(6, 'Jasa Perawatan & Maintenance Kanopi Berkala', 'Canopy Maintenance & Periodic Inspection Service', 'jasa-perawatan-maintenance-kanopi-berkala', 'services/icons/01KE7A2X4YEND9SH35XEWPHPTR.png', 'services/01KE7A2X520E14HMCTEEQX9RGW.png', '<p>Layanan <strong>maintenance dan perawatan kanopi</strong> kami dirancang untuk menjaga kanopi tetap kuat, aman, dan terlihat seperti baru. Sangat direkomendasikan untuk kanopi yang sudah lama terpasang agar tetap optimal dan terhindar dari kerusakan yang lebih besar.</p><p>Perawatan meliputi pengecekan rangka, baut, sambungan, pembersihan atap kanopi, hingga perbaikan ringan bila diperlukan.</p><p>✨ <strong>Manfaat Maintenance Kanopi:</strong></p><ul><li><p>Memperpanjang umur kanopi</p></li><li><p>Mencegah karat dan kerusakan struktur</p></li><li><p>Menjaga tampilan tetap rapi &amp; bersih</p></li><li><p>Lebih hemat biaya dibandingkan perbaikan besar</p></li><li><p>Cocok untuk rumah, ruko, kantor, dan gedung komersial</p></li></ul><p>Kami menyediakan <strong>survey GRATIS</strong> untuk pengecekan awal kondisi kanopi Anda.</p>', '<p>Our <strong>canopy maintenance and inspection service</strong> is designed to keep your canopy strong, safe, and looking like new. This service is highly recommended for long-installed canopies to prevent major damage and maintain optimal performance.</p><p>Maintenance includes structure inspection, bolt tightening, joint checking, roof cleaning, and minor repairs if necessary.</p><p><strong>Maintenance Benefits:</strong></p><ol start=\"1\"><li><p>Extends canopy lifespan</p></li><li><p>Prevents rust and structural damage</p></li><li><p>Keeps the canopy clean and neat</p></li><li><p>More cost-effective than major repairs</p></li><li><p>Suitable for residential and commercial buildings</p></li></ol><p>We provide a <strong>FREE initial inspection and consultation</strong>.</p>', 1, 2, '2026-01-05 14:48:24', '2026-01-05 14:48:24'),
(7, 'Renovasi & Penggantian Kanopi Lama', 'Canopy Renovation & Replacement Service', 'renovasi-penggantian-kanopi-lama', 'services/icons/01KE7A858YQJ3C064A2S5NZHQJ.png', 'services/01KE7A8590NYP9W8PCG2AR95XW.png', '<p>Kanopi lama terlihat usang, bocor, atau tidak lagi sesuai dengan desain bangunan? Kami menyediakan layanan <strong>renovasi dan penggantian kanopi lama</strong> dengan konsep baru yang lebih modern, kuat, dan estetik.</p><p>Layanan ini mencakup pembongkaran kanopi lama, perbaikan rangka, serta pemasangan kanopi baru sesuai kebutuhan Anda.</p><p>✨ <strong>Keunggulan Layanan Renovasi:</strong></p><ul><li><p>Survey &amp; estimasi biaya GRATIS</p></li><li><p>Upgrade material &amp; desain</p></li><li><p>Pilihan model minimalis hingga modern</p></li><li><p>Pengerjaan aman dan profesional</p></li><li><p>Cocok untuk rumah, ruko, dan area komersial</p></li></ul><p>Solusi tepat untuk memperbarui tampilan bangunan tanpa harus membangun dari awal.</p>', '<p>Is your old canopy worn out, leaking, or no longer matching your building design? We offer <strong>canopy renovation and replacement services</strong> with a more modern, durable, and aesthetic concept.</p><p>Our service includes dismantling old canopies, structural improvements, and installing new canopies based on your needs.</p><p>✨ <strong>Renovation Service Advantages:</strong></p><ul><li><p>FREE site survey and cost estimation</p></li><li><p>Material and design upgrades</p></li><li><p>Minimalist to modern design options</p></li><li><p>Safe and professional workmanship</p></li><li><p>Suitable for residential and commercial properties</p></li></ul><p>The perfect solution to refresh your building’s appearance efficiently.</p>', 1, 3, '2026-01-05 14:51:16', '2026-01-05 14:51:16');

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

--
-- Table structure for table `sessions`
--

CREATE TABLE `sessions` (
  `id` varchar(255) NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `payload` longtext NOT NULL,
  `last_activity` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sessions`
--

INSERT INTO `sessions` (`id`, `user_id`, `ip_address`, `user_agent`, `payload`, `last_activity`) VALUES
('NYOSCeMXLH5CKwI5lb8tQrkNOHxtlEX7gwoBer5a', 4, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36', 'YTo4OntzOjY6Il90b2tlbiI7czo0MDoiajdOd09OS1ltTGRFY3BJdmNRTDh5MlI4Znk3bDludUE3QVNxN3NnRCI7czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6MjE6Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7czo1OiJyb3V0ZSI7czo0OiJob21lIjt9czo2OiJfZmxhc2giO2E6Mjp7czozOiJvbGQiO2E6MDp7fXM6MzoibmV3IjthOjA6e319czozOiJ1cmwiO2E6MDp7fXM6NTA6ImxvZ2luX3dlYl81OWJhMzZhZGRjMmIyZjk0MDE1ODBmMDE0YzdmNThlYTRlMzA5ODlkIjtpOjQ7czoxNzoicGFzc3dvcmRfaGFzaF93ZWIiO3M6NjA6IiQyeSQxMiRsLlF5S1YwNXR0MXlJQ21McWtPVm1lSksyTWpSZGRLSUV1bFhHTmFRNERXdmRoazNEd2pGbSI7czo2OiJ0YWJsZXMiO2E6ODp7czo0MDoiZTI4YTYwMjY0YTI4YTBmYzU5YzdkYzg2YmZmZDgyNDhfY29sdW1ucyI7YTo3OntpOjA7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6Mjoibm8iO3M6NToibGFiZWwiO3M6MjoiTm8iO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aToxO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjM6ImtleSI7czo1OiJsYWJlbCI7czozOiJLZXkiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aToyO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjg6ImNhdGVnb3J5IjtzOjU6ImxhYmVsIjtzOjg6IkNhdGVnb3J5IjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6MzthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo0OiJ0eXBlIjtzOjU6ImxhYmVsIjtzOjQ6IlR5cGUiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTo0O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjU6InZhbHVlIjtzOjU6ImxhYmVsIjtzOjU6IlZhbHVlIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6NTthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoiY3JlYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiQ3JlYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fWk6NjthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoidXBkYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiVXBkYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fX1zOjQwOiJiZGVmZTJjM2FmZGRhMjg2YTczN2VlNTU3M2FjZWIxNl9jb2x1bW5zIjthOjk6e2k6MDthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo1OiJpbWFnZSI7czo1OiJsYWJlbCI7czo1OiJJbWFnZSI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjE7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjA7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtOO31pOjE7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6NToidGl0bGUiO3M6NToibGFiZWwiO3M6MTA6IlRpdGxlIChJRCkiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aToyO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjg6InRpdGxlX2VuIjtzOjU6ImxhYmVsIjtzOjEwOiJUaXRsZSAoRU4pIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MDtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MTtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO2I6MTt9aTozO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjExOiJidXR0b25fdGV4dCI7czo1OiJsYWJlbCI7czoxMToiQnV0dG9uIChJRCkiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTo0O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjE0OiJidXR0b25fdGV4dF9lbiI7czo1OiJsYWJlbCI7czoxMToiQnV0dG9uIChFTikiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjowO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjoxO31pOjU7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6MTA6ImJ1dHRvbl91cmwiO3M6NToibGFiZWwiO3M6MzoiVVJMIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6NjthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoiY3JlYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiQ3JlYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fWk6NzthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoidXBkYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiVXBkYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fWk6ODthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo5OiJlbl9zdGF0dXMiO3M6NToibGFiZWwiO3M6MjoiRU4iO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9fXM6NDA6IjQ3M2FkYmM5NmZiYjU2M2MxOWU0MTNkMDViYzA1MDYxX2NvbHVtbnMiO2E6Njp7aTowO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjQ6Im5hbWUiO3M6NToibGFiZWwiO3M6NDoiTmFtZSI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjE7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjA7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtOO31pOjE7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6NToiZW1haWwiO3M6NToibGFiZWwiO3M6MTM6IkVtYWlsIGFkZHJlc3MiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aToyO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjE1OiJ3aGF0c2FwcF9udW1iZXIiO3M6NToibGFiZWwiO3M6MTU6IldoYXRzQXBwIG51bWJlciI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjE7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjA7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtOO31pOjM7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6Nzoic3ViamVjdCI7czo1OiJsYWJlbCI7czo3OiJTdWJqZWN0IjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6NDthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoiY3JlYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiQ3JlYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fWk6NTthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoidXBkYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiVXBkYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fX1zOjQwOiI5NzkyYjZkZTU3MzE1NmVjMDQ1ZWE4MTg4MWJlM2QzZF9jb2x1bW5zIjthOjk6e2k6MDthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo5OiJ0aHVtYm5haWwiO3M6NToibGFiZWwiO3M6OToiVGh1bWJuYWlsIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MTtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO2I6MDt9aToxO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjU6InRpdGxlIjtzOjU6ImxhYmVsIjtzOjEwOiJUaXRsZSAoSUQpIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6MjthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo4OiJ0aXRsZV9lbiI7czo1OiJsYWJlbCI7czoxMDoiVGl0bGUgKEVOKSI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fWk6MzthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo0OiJzbHVnIjtzOjU6ImxhYmVsIjtzOjQ6IlNsdWciO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjowO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjoxO31pOjQ7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6MTI6ImlzX3B1Ymxpc2hlZCI7czo1OiJsYWJlbCI7czo5OiJQdWJsaXNoZWQiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTo1O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjEwOiJwdWJsaXNoX2F0IjtzOjU6ImxhYmVsIjtzOjEwOiJQdWJsaXNoIEF0IjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6NjthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMjoiY3JlYXRvci5uYW1lIjtzOjU6ImxhYmVsIjtzOjEwOiJDcmVhdGVkIEJ5IjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MDtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MTtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO2I6MTt9aTo3O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjEwOiJjcmVhdGVkX2F0IjtzOjU6ImxhYmVsIjtzOjEwOiJDcmVhdGVkIGF0IjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MDtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MTtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO2I6MTt9aTo4O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjEwOiJ1cGRhdGVkX2F0IjtzOjU6ImxhYmVsIjtzOjEwOiJVcGRhdGVkIGF0IjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MDtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MTtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO2I6MTt9fXM6NDA6ImNhMWU2YzgxZTNhMzJmNDViNmY5YjhjMDZkMGYzM2UyX2NvbHVtbnMiO2E6Njp7aTowO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjg6InF1ZXN0aW9uIjtzOjU6ImxhYmVsIjtzOjEzOiJRdWVzdGlvbiAoSUQpIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6MTthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMToicXVlc3Rpb25fZW4iO3M6NToibGFiZWwiO3M6MTM6IlF1ZXN0aW9uIChFTikiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjowO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjoxO31pOjI7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6MTI6ImlzX3B1Ymxpc2hlZCI7czo1OiJsYWJlbCI7czo5OiJQdWJsaXNoZWQiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTozO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjEyOiJvcmRlcl9jb2x1bW4iO3M6NToibGFiZWwiO3M6NToiT3JkZXIiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTo0O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjEwOiJjcmVhdGVkX2F0IjtzOjU6ImxhYmVsIjtzOjc6IkNyZWF0ZWQiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjowO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjoxO31pOjU7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6MTA6InVwZGF0ZWRfYXQiO3M6NToibGFiZWwiO3M6NzoiVXBkYXRlZCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fX1zOjQwOiI4ZmFjNmViMWNlYzI2ODAzYjNmN2ZiNDQwYTI3MTExYl9jb2x1bW5zIjthOjk6e2k6MDthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo2OiJpbWFnZXMiO3M6NToibGFiZWwiO3M6NToiSW1hZ2UiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aToxO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjc6Im5hbWVfaWQiO3M6NToibGFiZWwiO3M6MTE6Ik5hbWEgUHJvZHVrIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6MjthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo0OiJzbHVnIjtzOjU6ImxhYmVsIjtzOjQ6IlNsdWciO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjowO31pOjM7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6NToicHJpY2UiO3M6NToibGFiZWwiO3M6NToiSGFyZ2EiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTo0O2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjEwOiJzYWxlX3ByaWNlIjtzOjU6ImxhYmVsIjtzOjExOiJIYXJnYSBQcm9tbyI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjE7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjA7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtOO31pOjU7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6OToiaXNfYWN0aXZlIjtzOjU6ImxhYmVsIjtzOjY6IkFjdGl2ZSI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjE7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjA7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtOO31pOjY7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6MTA6InNvcnRfb3JkZXIiO3M6NToibGFiZWwiO3M6NjoiVXJ1dGFuIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6NzthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoiY3JlYXRlZF9hdCI7czo1OiJsYWJlbCI7czo2OiJEaWJ1YXQiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjowO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjoxO31pOjg7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6MTA6InVwZGF0ZWRfYXQiO3M6NToibGFiZWwiO3M6ODoiRGl1cGRhdGUiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjowO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjoxO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7YjoxO319czo0MDoiMTYwYmJhMmE2Y2JjZTY4YWYzYjc3NTY2ZTVmMTE3MzBfY29sdW1ucyI7YTo2OntpOjA7YTo3OntzOjQ6InR5cGUiO3M6NjoiY29sdW1uIjtzOjQ6Im5hbWUiO3M6NDoibG9nbyI7czo1OiJsYWJlbCI7czo0OiJMb2dvIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6MTthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czo0OiJuYW1lIjtzOjU6ImxhYmVsIjtzOjEyOiJQYXJ0bmVyIE5hbWUiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aToyO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjk6ImlzX2FjdGl2ZSI7czo1OiJsYWJlbCI7czo2OiJBY3RpdmUiO3M6ODoiaXNIaWRkZW4iO2I6MDtzOjk6ImlzVG9nZ2xlZCI7YjoxO3M6MTI6ImlzVG9nZ2xlYWJsZSI7YjowO3M6MjQ6ImlzVG9nZ2xlZEhpZGRlbkJ5RGVmYXVsdCI7Tjt9aTozO2E6Nzp7czo0OiJ0eXBlIjtzOjY6ImNvbHVtbiI7czo0OiJuYW1lIjtzOjU6Im9yZGVyIjtzOjU6ImxhYmVsIjtzOjU6Ik9yZGVyIjtzOjg6ImlzSGlkZGVuIjtiOjA7czo5OiJpc1RvZ2dsZWQiO2I6MTtzOjEyOiJpc1RvZ2dsZWFibGUiO2I6MDtzOjI0OiJpc1RvZ2dsZWRIaWRkZW5CeURlZmF1bHQiO047fWk6NDthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoiY3JlYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiQ3JlYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fWk6NTthOjc6e3M6NDoidHlwZSI7czo2OiJjb2x1bW4iO3M6NDoibmFtZSI7czoxMDoidXBkYXRlZF9hdCI7czo1OiJsYWJlbCI7czoxMDoiVXBkYXRlZCBhdCI7czo4OiJpc0hpZGRlbiI7YjowO3M6OToiaXNUb2dnbGVkIjtiOjA7czoxMjoiaXNUb2dnbGVhYmxlIjtiOjE7czoyNDoiaXNUb2dnbGVkSGlkZGVuQnlEZWZhdWx0IjtiOjE7fX1zOjQxOiJlMjhhNjAyNjRhMjhhMGZjNTljN2RjODZiZmZkODI0OF9wZXJfcGFnZSI7czoyOiI1MCI7fXM6ODoiZmlsYW1lbnQiO2E6MDp7fX0=', 1767689427);

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

--
-- Table structure for table `testimonials`
--

CREATE TABLE `testimonials` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `message_en` text DEFAULT NULL,
  `rating` tinyint(4) DEFAULT NULL,
  `status` enum('pending','published','non_active') NOT NULL DEFAULT 'pending',
  `submitted_at` timestamp NULL DEFAULT NULL,
  `published_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `testimonials`
--

INSERT INTO `testimonials` (`id`, `name`, `message`, `message_en`, `rating`, `status`, `submitted_at`, `published_at`, `created_at`, `updated_at`) VALUES
(4, 'Budi Santoso', 'Saya sangat puas menggunakan jasa pemasangan kanopi ini. Dari awal konsultasi hingga proses pemasangan, semuanya dijelaskan dengan sangat jelas dan profesional. Tim datang tepat waktu untuk melakukan survey dan memberikan rekomendasi desain serta material yang sesuai dengan kebutuhan rumah saya.', NULL, 5, 'published', NULL, NULL, '2026-01-05 16:41:42', '2026-01-05 16:41:42'),
(5, 'Andi Pratama', 'Pelayanan yang diberikan benar-benar memuaskan. Saya menggunakan jasa ini untuk pemasangan kanopi Alderon di teras rumah. Tim memberikan banyak pilihan desain dan warna yang bisa disesuaikan dengan konsep bangunan.', NULL, 4, 'published', NULL, NULL, '2026-01-05 16:42:15', '2026-01-05 16:42:15'),
(6, 'Rina Wijayanti', 'Awalnya saya ragu memilih jasa pemasangan kanopi, tetapi setelah menggunakan layanan ini, saya benar-benar merasa puas. Tim sangat ramah, komunikatif, dan berpengalaman. Survey dilakukan tanpa biaya, lalu diberikan estimasi harga yang jelas dan masuk akal.', NULL, 5, 'published', NULL, NULL, '2026-01-05 16:42:34', '2026-01-05 16:42:34');

--
-- Indexes for table `contact_messages`
--
ALTER TABLE `contact_messages`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `failed_jobs`
--
ALTER TABLE `failed_jobs`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`);

--
-- Indexes for table `faqs`
--
ALTER TABLE `faqs`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `galleries`
--
ALTER TABLE `galleries`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `hero_sections`
--
ALTER TABLE `hero_sections`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `jobs`
--
ALTER TABLE `jobs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `jobs_queue_index` (`queue`);

--
-- Indexes for table `job_batches`
--
ALTER TABLE `job_batches`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `migrations`
--
ALTER TABLE `migrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `model_has_permissions`
--
ALTER TABLE `model_has_permissions`
  ADD PRIMARY KEY (`permission_id`,`model_id`,`model_type`),
  ADD KEY `model_has_permissions_model_id_model_type_index` (`model_id`,`model_type`);

--
-- Indexes for table `model_has_roles`
--
ALTER TABLE `model_has_roles`
  ADD PRIMARY KEY (`role_id`,`model_id`,`model_type`),
  ADD KEY `model_has_roles_model_id_model_type_index` (`model_id`,`model_type`);

--
-- Indexes for table `our_partners`
--
ALTER TABLE `our_partners`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `pages`
--
ALTER TABLE `pages`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pages_slug_unique` (`slug`),
  ADD KEY `pages_created_by_foreign` (`created_by`);

--
-- Indexes for table `permissions`
--
ALTER TABLE `permissions`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `permissions_name_guard_name_unique` (`name`,`guard_name`);

--
-- Indexes for table `products`
--
ALTER TABLE `products`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `products_slug_unique` (`slug`);

--
-- Indexes for table `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `roles_name_guard_name_unique` (`name`,`guard_name`);

--
-- Indexes for table `role_has_permissions`
--
ALTER TABLE `role_has_permissions`
  ADD PRIMARY KEY (`permission_id`,`role_id`),
  ADD KEY `role_has_permissions_role_id_foreign` (`role_id`);

--
-- Indexes for table `seos`
--
ALTER TABLE `seos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `seos_page_unique` (`page`);

--
-- Indexes for table `services`
--
ALTER TABLE `services`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `services_slug_unique` (`slug`);

--
-- Indexes for table `sessions`
--
ALTER TABLE `sessions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `sessions_user_id_index` (`user_id`),
  ADD KEY `sessions_last_activity_index` (`last_activity`);

--
-- Indexes for table `testimonials`
--
ALTER TABLE `testimonials`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `contact_messages`
--
ALTER TABLE `contact_messages`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT for table `failed_jobs`
--
ALTER TABLE `failed_jobs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `faqs`
--
ALTER TABLE `faqs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `galleries`
--
ALTER TABLE `galleries`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `hero_sections`
--
ALTER TABLE `hero_sections`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `jobs`
--
ALTER TABLE `jobs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `migrations`
--
ALTER TABLE `migrations`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT for table `our_partners`
--
ALTER TABLE `our_partners`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT for table `pages`
--
ALTER TABLE `pages`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;

--
-- AUTO_INCREMENT for table `permissions`
--
ALTER TABLE `permissions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=148;

--
-- AUTO_INCREMENT for table `products`
--
ALTER TABLE `products`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `roles`
--
ALTER TABLE `roles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `seos`
--
ALTER TABLE `seos`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `services`
--
ALTER TABLE `services`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `testimonials`
--
ALTER TABLE `testimonials`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `model_has_permissions`
--
ALTER TABLE `model_has_permissions`
  ADD CONSTRAINT `model_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `model_has_roles`
--
ALTER TABLE `model_has_roles`
  ADD CONSTRAINT `model_has_roles_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pages`
--
ALTER TABLE `pages`
  ADD CONSTRAINT `pages_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `role_has_permissions`
--
ALTER TABLE `role_has_permissions`
  ADD CONSTRAINT `role_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `role_has_permissions_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;
COMMIT;

