-- ==============================================================
-- AV Marketplace Paywall - Live MySQL Database Schema & Seed Data
-- Auto-Generated on Config / Operator / Voucher Save for phpMyAdmin Import
-- Database: ujggz888865mart_av91 | Server: 220.158.235.210
-- ==============================================================

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- 1. Configuration & Settings Table
CREATE TABLE IF NOT EXISTS `paywall_settings` (
  `id` INT NOT NULL DEFAULT 1,
  `main_site_url` VARCHAR(255) NOT NULL DEFAULT 'https://av.av91.online',
  `admin_email` VARCHAR(255) NOT NULL DEFAULT 'chhayasor3@gmail.com',
  `gateway_provider` VARCHAR(50) NOT NULL DEFAULT 'khpay',
  `khpay_api_key` VARCHAR(255) DEFAULT '',
  `khpay_api_url` VARCHAR(255) DEFAULT 'https://khpay.site/api/v1/qr/generate',
  `khpay_check_api_url` VARCHAR(255) DEFAULT 'https://khpay.site/api/v1/qr/check',
  `khpay_merchant_id` VARCHAR(100) DEFAULT '',
  `aba_api_url` VARCHAR(255) DEFAULT 'https://khmer-system.com/aba-api/generate-qr',
  `aba_check_api_url` VARCHAR(255) DEFAULT 'https://khmer-system.com/aba-api/check-payment',
  `aba_mark_credited_api_url` VARCHAR(255) DEFAULT 'https://khmer-system.com/aba-api/mark-credited',
  `aba_api_key` VARCHAR(255) DEFAULT '',
  `aba_merchant_id` VARCHAR(100) DEFAULT '',
  `aba_merchant_name` VARCHAR(255) DEFAULT 'AV Paywall Services',
  `currency` VARCHAR(10) NOT NULL DEFAULT 'USD',
  `default_price` DECIMAL(10,2) NOT NULL DEFAULT 1.00,
  `free_preview_seconds` INT NOT NULL DEFAULT 10,
  `free_views_per_24h` INT NOT NULL DEFAULT 3,
  `enable_khpay` TINYINT(1) NOT NULL DEFAULT 1,
  `enable_khmer_system` TINYINT(1) NOT NULL DEFAULT 1,
  `enable_stripe` TINYINT(1) NOT NULL DEFAULT 1,
  `stripe_secret_key` VARCHAR(255) DEFAULT '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',
  `stripe_publishable_key` VARCHAR(255) DEFAULT 'pk_live_51PTHseKfW02An8znB5ABxUh9W7NYhAjIWTcO7dqgS6D7q8kGmlI9h27Rc8FxWcjoxrHcsOZiaWayjbpXibcmybU600eriM36zr',
  `enable_nowpayments` TINYINT(1) NOT NULL DEFAULT 1,
  `nowpayments_api_key` VARCHAR(255) DEFAULT '',
  `nowpayments_ipn_secret` VARCHAR(255) DEFAULT '',
  `admin_otp_secret` VARCHAR(64) DEFAULT '',
  `enable_admin_otp` TINYINT(1) NOT NULL DEFAULT 0,
  `allow_voucher_codes` TINYINT(1) NOT NULL DEFAULT 1,
  `default_operator_cut_percent` DECIMAL(5,2) NOT NULL DEFAULT 20.00,
  `plan_options_json` LONGTEXT,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `paywall_settings` (
  `id`, `main_site_url`, `admin_email`, `gateway_provider`,
  `khpay_api_key`, `khpay_api_url`, `khpay_check_api_url`, `khpay_merchant_id`,
  `aba_api_url`, `aba_check_api_url`, `aba_mark_credited_api_url`,
  `aba_api_key`, `aba_merchant_id`, `aba_merchant_name`,
  `currency`, `default_price`, `free_preview_seconds`, `free_views_per_24h`,
  `enable_khpay`, `enable_khmer_system`, `enable_stripe`, `stripe_secret_key`, `stripe_publishable_key`,
  `enable_nowpayments`, `nowpayments_api_key`, `nowpayments_ipn_secret`,
  `admin_otp_secret`, `enable_admin_otp`,
  `allow_voucher_codes`, `default_operator_cut_percent`, `plan_options_json`
) VALUES (
  1,
  'https://av.av91.online',
  'chhayasor3@gmail.com',
  'nowpayments',
  'ak_18a77baaa74f94950befcdbff396454559f6b18ce9477557',
  'https://khpay.site/api/v1/qr/generate',
  'https://khpay.site/api/v1/qr/check',
  'mch_c3b2f7c5ebd0699b',
  'https://khmer-system.com/aba-api/generate-qr',
  'https://khmer-system.com/aba-api/check-payment',
  'https://khmer-system.com/aba-api/mark-credited',
  'PK_8782a6706bdd2ae2aa105c2489a4af861d39da4a',
  'd7txQH',
  'AV Paywall Services',
  'USD',
  1,
  10,
  4,
  1,
  1,
  1,
  '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',
  'pk_live_51PTHseKfW02An8znB5ABxUh9W7NYhAjIWTcO7dqgS6D7q8kGmlI9h27Rc8FxWcjoxrHcsOZiaWayjbpXibcmybU600eriM36zr',
  1,
  'MMCT8Q0-69NMZDP-G09GD4A-XGK539C',
  'vfqcx8MhwwUGltrpS6znTIHvsDVEXWmG',
  '5QNBDQOO77FXDVBKTTXGONPUXLNQ47DN',
  0,
  1,
  20.0,
  '[{"id": "1d", "name": "1 ថ្ងៃ (24 Hours)", "price": 1, "durationHours": 24}, {"id": "7d", "name": "7 ថ្ងៃ (1 Week)", "price": 3.5, "durationHours": 168}, {"id": "1m", "name": "1 ខែ (1 Month)", "price": 9.99, "durationHours": 720}, {"id": "lifetime", "name": "​ចុចត្រង់នេះ 25$​  ប្រើប្រាស់រហូត (កញ្ចប់នេះអាចជួបមូដែលផ្ទាល់ណាត់ជួបដោយផ្ទាល់បាន)", "price": 25, "durationHours": 999999}]'
) ON DUPLICATE KEY UPDATE
  `main_site_url` = VALUES(`main_site_url`),
  `admin_email` = VALUES(`admin_email`),
  `gateway_provider` = VALUES(`gateway_provider`),
  `khpay_api_key` = VALUES(`khpay_api_key`),
  `khpay_merchant_id` = VALUES(`khpay_merchant_id`),
  `free_views_per_24h` = VALUES(`free_views_per_24h`),
  `enable_khpay` = VALUES(`enable_khpay`),
  `enable_khmer_system` = VALUES(`enable_khmer_system`),
  `enable_stripe` = VALUES(`enable_stripe`),
  `stripe_secret_key` = VALUES(`stripe_secret_key`),
  `stripe_publishable_key` = VALUES(`stripe_publishable_key`),
  `enable_nowpayments` = VALUES(`enable_nowpayments`),
  `nowpayments_api_key` = VALUES(`nowpayments_api_key`),
  `nowpayments_ipn_secret` = VALUES(`nowpayments_ipn_secret`),
  `admin_otp_secret` = VALUES(`admin_otp_secret`),
  `enable_admin_otp` = VALUES(`enable_admin_otp`),
  `allow_voucher_codes` = VALUES(`allow_voucher_codes`),
  `default_operator_cut_percent` = VALUES(`default_operator_cut_percent`),
  `plan_options_json` = VALUES(`plan_options_json`);

-- 2. Pass Codes & Vouchers Table
CREATE TABLE IF NOT EXISTS `paywall_vouchers` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `code` VARCHAR(100) NOT NULL UNIQUE,
  `duration_hours` INT NOT NULL DEFAULT 24,
  `note` VARCHAR(255) DEFAULT '',
  `max_uses` INT NOT NULL DEFAULT 1,
  `uses` INT NOT NULL DEFAULT 0,
  `status` ENUM('ACTIVE', 'USED', 'EXPIRED', 'REVOKED') NOT NULL DEFAULT 'ACTIVE',
  `used_at` DATETIME NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX `idx_voucher_code` (`code`),
  INDEX `idx_voucher_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Inserting 500 vouchers into paywall_vouchers
INSERT IGNORE INTO `paywall_vouchers` (`code`, `duration_hours`, `note`, `max_uses`, `uses`, `status`) VALUES
('VIP_2026_SF0KSP', 72, 'Batch 500 Pass #3', 1, 0, 'ACTIVE'),
('VIP_2026_EMDG0A', 72, 'Batch 500 Pass #4', 1, 0, 'ACTIVE'),
('VIP_2026_YLR0NB', 72, 'Batch 500 Pass #5', 1, 0, 'ACTIVE'),
('VIP_2026_NSXMTD', 72, 'Batch 500 Pass #6', 1, 0, 'ACTIVE'),
('VIP_2026_UVLBXD', 72, 'Batch 500 Pass #7', 1, 0, 'ACTIVE'),
('VIP_2026_ACF3ZX', 72, 'Batch 500 Pass #8', 1, 0, 'ACTIVE'),
('VIP_2026_5GLP31', 72, 'Batch 500 Pass #9', 1, 0, 'ACTIVE'),
('VIP_2026_FUEVGS', 72, 'Batch 500 Pass #10', 1, 0, 'ACTIVE'),
('VIP_2026_NNTAJJ', 72, 'Batch 500 Pass #11', 1, 0, 'ACTIVE'),
('VIP_2026_GTW5HA', 72, 'Batch 500 Pass #12', 1, 0, 'ACTIVE'),
('VIP_2026_W68E8O', 72, 'Batch 500 Pass #13', 1, 0, 'ACTIVE'),
('VIP_2026_3BY0D3', 72, 'Batch 500 Pass #14', 1, 0, 'ACTIVE'),
('VIP_2026_WKQ8RP', 72, 'Batch 500 Pass #15', 1, 0, 'ACTIVE'),
('VIP_2026_5NO785', 72, 'Batch 500 Pass #16', 1, 0, 'ACTIVE'),
('VIP_2026_H6QTX5', 72, 'Batch 500 Pass #17', 1, 0, 'ACTIVE'),
('VIP_2026_M9GO67', 72, 'Batch 500 Pass #18', 1, 0, 'ACTIVE'),
('VIP_2026_XFC7AY', 72, 'Batch 500 Pass #19', 1, 0, 'ACTIVE'),
('VIP_2026_HNCUBJ', 72, 'Batch 500 Pass #20', 1, 0, 'ACTIVE'),
('VIP_2026_JK4DY4', 72, 'Batch 500 Pass #21', 1, 0, 'ACTIVE'),
('VIP_2026_PWALXW', 72, 'Batch 500 Pass #22', 1, 0, 'ACTIVE'),
('VIP_2026_KUFCTE', 72, 'Batch 500 Pass #23', 1, 0, 'ACTIVE'),
('VIP_2026_HEUMHS', 72, 'Batch 500 Pass #24', 1, 0, 'ACTIVE'),
('VIP_2026_0HOWWW', 72, 'Batch 500 Pass #25', 1, 0, 'ACTIVE'),
('VIP_2026_WK3VLV', 72, 'Batch 500 Pass #26', 1, 0, 'ACTIVE'),
('VIP_2026_V7R412', 72, 'Batch 500 Pass #27', 1, 0, 'ACTIVE'),
('VIP_2026_Z6V9X9', 72, 'Batch 500 Pass #28', 1, 0, 'ACTIVE'),
('VIP_2026_16M7PT', 72, 'Batch 500 Pass #29', 1, 0, 'ACTIVE'),
('VIP_2026_O2WWUE', 72, 'Batch 500 Pass #30', 1, 0, 'ACTIVE'),
('VIP_2026_0WMRXG', 72, 'Batch 500 Pass #31', 1, 0, 'ACTIVE'),
('VIP_2026_PA870V', 72, 'Batch 500 Pass #32', 1, 0, 'ACTIVE'),
('VIP_2026_Q65AOS', 72, 'Batch 500 Pass #33', 1, 0, 'ACTIVE'),
('VIP_2026_TLB3C8', 72, 'Batch 500 Pass #34', 1, 0, 'ACTIVE'),
('VIP_2026_IXAOBS', 72, 'Batch 500 Pass #35', 1, 0, 'ACTIVE'),
('VIP_2026_5VBS2C', 72, 'Batch 500 Pass #36', 1, 0, 'ACTIVE'),
('VIP_2026_A2UNQ7', 72, 'Batch 500 Pass #37', 1, 0, 'ACTIVE'),
('VIP_2026_N7VIYH', 72, 'Batch 500 Pass #38', 1, 0, 'ACTIVE'),
('VIP_2026_GV2BGV', 72, 'Batch 500 Pass #39', 1, 0, 'ACTIVE'),
('VIP_2026_QFVF5Q', 72, 'Batch 500 Pass #40', 1, 0, 'ACTIVE'),
('VIP_2026_YFF2EP', 72, 'Batch 500 Pass #41', 1, 0, 'ACTIVE'),
('VIP_2026_BKUY03', 72, 'Batch 500 Pass #42', 1, 0, 'ACTIVE'),
('VIP_2026_O7FIKD', 72, 'Batch 500 Pass #43', 1, 0, 'ACTIVE'),
('VIP_2026_ESWRYB', 72, 'Batch 500 Pass #44', 1, 0, 'ACTIVE'),
('VIP_2026_IBAQFQ', 72, 'Batch 500 Pass #45', 1, 0, 'ACTIVE'),
('VIP_2026_QSEXOH', 72, 'Batch 500 Pass #46', 1, 0, 'ACTIVE'),
('VIP_2026_H38MIU', 72, 'Batch 500 Pass #47', 1, 0, 'ACTIVE'),
('VIP_2026_2DXLPJ', 72, 'Batch 500 Pass #48', 1, 0, 'ACTIVE'),
('VIP_2026_LH9PV5', 72, 'Batch 500 Pass #49', 1, 0, 'ACTIVE'),
('VIP_2026_KTQ4UB', 72, 'Batch 500 Pass #50', 1, 0, 'ACTIVE'),
('VIP_2026_2C4497', 72, 'Batch 500 Pass #51', 1, 0, 'ACTIVE'),
('VIP_2026_U96TED', 72, 'Batch 500 Pass #52', 1, 0, 'ACTIVE'),
('VIP_2026_V4RF0K', 72, 'Batch 500 Pass #53', 1, 0, 'ACTIVE'),
('VIP_2026_DFQ4VL', 72, 'Batch 500 Pass #54', 1, 0, 'ACTIVE'),
('VIP_2026_HQYLJ5', 72, 'Batch 500 Pass #55', 1, 0, 'ACTIVE'),
('VIP_2026_G2P1T3', 72, 'Batch 500 Pass #56', 1, 0, 'ACTIVE'),
('VIP_2026_K2UAP0', 72, 'Batch 500 Pass #57', 1, 0, 'ACTIVE'),
('VIP_2026_RHIPJR', 72, 'Batch 500 Pass #58', 1, 0, 'ACTIVE'),
('VIP_2026_WLYDDB', 72, 'Batch 500 Pass #59', 1, 0, 'ACTIVE'),
('VIP_2026_BYUVC3', 72, 'Batch 500 Pass #60', 1, 0, 'ACTIVE'),
('VIP_2026_2G2QFY', 72, 'Batch 500 Pass #61', 1, 0, 'ACTIVE'),
('VIP_2026_HIFZEU', 72, 'Batch 500 Pass #62', 1, 0, 'ACTIVE'),
('VIP_2026_V96VPA', 72, 'Batch 500 Pass #63', 1, 0, 'ACTIVE'),
('VIP_2026_N81E0F', 72, 'Batch 500 Pass #64', 1, 0, 'ACTIVE'),
('VIP_2026_2CLRBZ', 72, 'Batch 500 Pass #65', 1, 0, 'ACTIVE'),
('VIP_2026_ATAJ0N', 72, 'Batch 500 Pass #66', 1, 0, 'ACTIVE'),
('VIP_2026_MR2Q9V', 72, 'Batch 500 Pass #67', 1, 0, 'ACTIVE'),
('VIP_2026_JNDTBQ', 72, 'Batch 500 Pass #68', 1, 0, 'ACTIVE'),
('VIP_2026_DBZ13P', 72, 'Batch 500 Pass #69', 1, 0, 'ACTIVE'),
('VIP_2026_M6KPYY', 72, 'Batch 500 Pass #70', 1, 0, 'ACTIVE'),
('VIP_2026_VJCD35', 72, 'Batch 500 Pass #71', 1, 0, 'ACTIVE'),
('VIP_2026_YRM4S9', 72, 'Batch 500 Pass #72', 1, 0, 'ACTIVE'),
('VIP_2026_1G9RQ2', 72, 'Batch 500 Pass #73', 1, 0, 'ACTIVE'),
('VIP_2026_5LFKN3', 72, 'Batch 500 Pass #74', 1, 0, 'ACTIVE'),
('VIP_2026_QAHZ82', 72, 'Batch 500 Pass #75', 1, 0, 'ACTIVE'),
('VIP_2026_WTLS58', 72, 'Batch 500 Pass #76', 1, 0, 'ACTIVE'),
('VIP_2026_EFNR5S', 72, 'Batch 500 Pass #77', 1, 0, 'ACTIVE'),
('VIP_2026_03771R', 72, 'Batch 500 Pass #78', 1, 0, 'ACTIVE'),
('VIP_2026_H69LI8', 72, 'Batch 500 Pass #79', 1, 0, 'ACTIVE'),
('VIP_2026_E1HKNX', 72, 'Batch 500 Pass #80', 1, 0, 'ACTIVE'),
('VIP_2026_V9TVEL', 72, 'Batch 500 Pass #81', 1, 0, 'ACTIVE'),
('VIP_2026_JUBLRN', 72, 'Batch 500 Pass #82', 1, 0, 'ACTIVE'),
('VIP_2026_OR4BJI', 72, 'Batch 500 Pass #83', 1, 0, 'ACTIVE'),
('VIP_2026_0BX6NO', 72, 'Batch 500 Pass #84', 1, 0, 'ACTIVE'),
('VIP_2026_YMGIUR', 72, 'Batch 500 Pass #85', 1, 0, 'ACTIVE'),
('VIP_2026_6L9Q50', 72, 'Batch 500 Pass #86', 1, 0, 'ACTIVE'),
('VIP_2026_BBAR4A', 72, 'Batch 500 Pass #87', 1, 0, 'ACTIVE'),
('VIP_2026_TJP6Y2', 72, 'Batch 500 Pass #88', 1, 0, 'ACTIVE'),
('VIP_2026_P11HY5', 72, 'Batch 500 Pass #89', 1, 0, 'ACTIVE'),
('VIP_2026_8ISOSI', 72, 'Batch 500 Pass #90', 1, 0, 'ACTIVE'),
('VIP_2026_M0CNJ9', 72, 'Batch 500 Pass #91', 1, 0, 'ACTIVE'),
('VIP_2026_9Y2IM3', 72, 'Batch 500 Pass #92', 1, 0, 'ACTIVE'),
('VIP_2026_I0EA9Y', 72, 'Batch 500 Pass #93', 1, 0, 'ACTIVE'),
('VIP_2026_WXIVPF', 72, 'Batch 500 Pass #94', 1, 0, 'ACTIVE'),
('VIP_2026_C26KDB', 72, 'Batch 500 Pass #95', 1, 0, 'ACTIVE'),
('VIP_2026_3R5KA1', 72, 'Batch 500 Pass #96', 1, 0, 'ACTIVE'),
('VIP_2026_5G1SCU', 72, 'Batch 500 Pass #97', 1, 0, 'ACTIVE'),
('VIP_2026_W9PNO4', 72, 'Batch 500 Pass #98', 1, 0, 'ACTIVE'),
('VIP_2026_T5FWUT', 72, 'Batch 500 Pass #99', 1, 0, 'ACTIVE'),
('VIP_2026_VH85C2', 72, 'Batch 500 Pass #100', 1, 0, 'ACTIVE'),
('VIP_2026_43XN0J', 72, 'Batch 500 Pass #101', 1, 0, 'ACTIVE'),
('VIP_2026_TH51M2', 72, 'Batch 500 Pass #102', 1, 0, 'ACTIVE');
INSERT IGNORE INTO `paywall_vouchers` (`code`, `duration_hours`, `note`, `max_uses`, `uses`, `status`) VALUES
('VIP_2026_QNB3F5', 72, 'Batch 500 Pass #103', 1, 0, 'ACTIVE'),
('VIP_2026_BZR25V', 72, 'Batch 500 Pass #104', 1, 0, 'ACTIVE'),
('VIP_2026_AJL903', 72, 'Batch 500 Pass #105', 1, 0, 'ACTIVE'),
('VIP_2026_WLBTCS', 72, 'Batch 500 Pass #106', 1, 0, 'ACTIVE'),
('VIP_2026_WCRVEC', 72, 'Batch 500 Pass #107', 1, 0, 'ACTIVE'),
('VIP_2026_6GSWU3', 72, 'Batch 500 Pass #108', 1, 0, 'ACTIVE'),
('VIP_2026_R2MZ2O', 72, 'Batch 500 Pass #109', 1, 0, 'ACTIVE'),
('VIP_2026_AHM6I9', 72, 'Batch 500 Pass #110', 1, 0, 'ACTIVE'),
('VIP_2026_F2HHAE', 72, 'Batch 500 Pass #111', 1, 0, 'ACTIVE'),
('VIP_2026_YCBDCH', 72, 'Batch 500 Pass #112', 1, 0, 'ACTIVE'),
('VIP_2026_K8MCPA', 72, 'Batch 500 Pass #113', 1, 0, 'ACTIVE'),
('VIP_2026_BPA86R', 72, 'Batch 500 Pass #114', 1, 0, 'ACTIVE'),
('VIP_2026_6CGS8M', 72, 'Batch 500 Pass #115', 1, 0, 'ACTIVE'),
('VIP_2026_XWVZQY', 72, 'Batch 500 Pass #116', 1, 0, 'ACTIVE'),
('VIP_2026_REPI27', 72, 'Batch 500 Pass #117', 1, 0, 'ACTIVE'),
('VIP_2026_5V0PH7', 72, 'Batch 500 Pass #118', 1, 0, 'ACTIVE'),
('VIP_2026_3ZS6IS', 72, 'Batch 500 Pass #119', 1, 0, 'ACTIVE'),
('VIP_2026_WX50JV', 72, 'Batch 500 Pass #120', 1, 0, 'ACTIVE'),
('VIP_2026_1B5VK1', 72, 'Batch 500 Pass #122', 1, 0, 'ACTIVE'),
('VIP_2026_SP62ZV', 72, 'Batch 500 Pass #123', 1, 0, 'ACTIVE'),
('VIP_2026_5WYCHF', 72, 'Batch 500 Pass #124', 1, 0, 'ACTIVE'),
('VIP_2026_9EC8QL', 72, 'Batch 500 Pass #125', 1, 0, 'ACTIVE'),
('VIP_2026_8XI5RN', 72, 'Batch 500 Pass #126', 1, 0, 'ACTIVE'),
('VIP_2026_XYM14W', 72, 'Batch 500 Pass #127', 1, 0, 'ACTIVE'),
('VIP_2026_F0IBKK', 72, 'Batch 500 Pass #128', 1, 0, 'ACTIVE'),
('VIP_2026_IXS9M1', 72, 'Batch 500 Pass #129', 1, 0, 'ACTIVE'),
('VIP_2026_3C2ES7', 72, 'Batch 500 Pass #130', 1, 0, 'ACTIVE'),
('VIP_2026_2IEHH6', 72, 'Batch 500 Pass #131', 1, 0, 'ACTIVE'),
('VIP_2026_IT0I4X', 72, 'Batch 500 Pass #132', 1, 0, 'ACTIVE'),
('VIP_2026_BBOVW6', 72, 'Batch 500 Pass #133', 1, 0, 'ACTIVE'),
('VIP_2026_86YB93', 72, 'Batch 500 Pass #134', 1, 0, 'ACTIVE'),
('VIP_2026_1HTQJQ', 72, 'Batch 500 Pass #135', 1, 0, 'ACTIVE'),
('VIP_2026_IAUCCC', 72, 'Batch 500 Pass #136', 1, 0, 'ACTIVE'),
('VIP_2026_FWDV9Z', 72, 'Batch 500 Pass #137', 1, 0, 'ACTIVE'),
('VIP_2026_BVS1P3', 72, 'Batch 500 Pass #138', 1, 0, 'ACTIVE'),
('VIP_2026_3GHKWA', 72, 'Batch 500 Pass #139', 1, 0, 'ACTIVE'),
('VIP_2026_QYFWFB', 72, 'Batch 500 Pass #140', 1, 0, 'ACTIVE'),
('VIP_2026_AFTZFI', 72, 'Batch 500 Pass #141', 1, 0, 'ACTIVE'),
('VIP_2026_NO3KAD', 72, 'Batch 500 Pass #142', 1, 0, 'ACTIVE'),
('VIP_2026_I2ZY6K', 72, 'Batch 500 Pass #143', 1, 0, 'ACTIVE'),
('VIP_2026_04VEW3', 72, 'Batch 500 Pass #144', 1, 0, 'ACTIVE'),
('VIP_2026_00WIOQ', 72, 'Batch 500 Pass #145', 1, 0, 'ACTIVE'),
('VIP_2026_D4YR1M', 72, 'Batch 500 Pass #146', 1, 0, 'ACTIVE'),
('VIP_2026_W8I6O4', 72, 'Batch 500 Pass #147', 1, 0, 'ACTIVE'),
('VIP_2026_M33TWK', 72, 'Batch 500 Pass #148', 1, 0, 'ACTIVE'),
('VIP_2026_XYTGUL', 72, 'Batch 500 Pass #149', 1, 0, 'ACTIVE'),
('VIP_2026_O6SEJT', 72, 'Batch 500 Pass #150', 1, 0, 'ACTIVE'),
('VIP_2026_SS7VV3', 72, 'Batch 500 Pass #151', 1, 0, 'ACTIVE'),
('VIP_2026_5FGG7L', 72, 'Batch 500 Pass #152', 1, 0, 'ACTIVE'),
('VIP_2026_4QOZOO', 72, 'Batch 500 Pass #153', 1, 0, 'ACTIVE'),
('VIP_2026_EDDJ48', 72, 'Batch 500 Pass #154', 1, 0, 'ACTIVE'),
('VIP_2026_QZ7VSM', 72, 'Batch 500 Pass #155', 1, 0, 'ACTIVE'),
('VIP_2026_RXU2SK', 72, 'Batch 500 Pass #156', 1, 0, 'ACTIVE'),
('VIP_2026_4EKK83', 72, 'Batch 500 Pass #157', 1, 0, 'ACTIVE'),
('VIP_2026_GT3EM2', 72, 'Batch 500 Pass #158', 1, 0, 'ACTIVE'),
('VIP_2026_U4HW8L', 72, 'Batch 500 Pass #159', 1, 0, 'ACTIVE'),
('VIP_2026_FAQ023', 72, 'Batch 500 Pass #160', 1, 0, 'ACTIVE'),
('VIP_2026_RX51I7', 72, 'Batch 500 Pass #161', 1, 0, 'ACTIVE'),
('VIP_2026_M36KPI', 72, 'Batch 500 Pass #162', 1, 0, 'ACTIVE'),
('VIP_2026_ZF5GTX', 72, 'Batch 500 Pass #163', 1, 0, 'ACTIVE'),
('VIP_2026_QEXYV3', 72, 'Batch 500 Pass #164', 1, 0, 'ACTIVE'),
('VIP_2026_Z5TULN', 72, 'Batch 500 Pass #165', 1, 0, 'ACTIVE'),
('VIP_2026_ZNLEVG', 72, 'Batch 500 Pass #166', 1, 0, 'ACTIVE'),
('VIP_2026_OXMJD6', 72, 'Batch 500 Pass #167', 1, 0, 'ACTIVE'),
('VIP_2026_8AQY6R', 72, 'Batch 500 Pass #168', 1, 0, 'ACTIVE'),
('VIP_2026_XMEROR', 72, 'Batch 500 Pass #169', 1, 0, 'ACTIVE'),
('VIP_2026_1N0D21', 72, 'Batch 500 Pass #170', 1, 0, 'ACTIVE'),
('VIP_2026_ESSC12', 72, 'Batch 500 Pass #171', 1, 0, 'ACTIVE'),
('VIP_2026_K9WOOB', 72, 'Batch 500 Pass #172', 1, 0, 'ACTIVE'),
('VIP_2026_US4QPL', 72, 'Batch 500 Pass #173', 1, 0, 'ACTIVE'),
('VIP_2026_17A8UU', 72, 'Batch 500 Pass #174', 1, 0, 'ACTIVE'),
('VIP_2026_IOYO2A', 72, 'Batch 500 Pass #175', 1, 0, 'ACTIVE'),
('VIP_2026_681J1B', 72, 'Batch 500 Pass #176', 1, 0, 'ACTIVE'),
('VIP_2026_AL7NPT', 72, 'Batch 500 Pass #177', 1, 0, 'ACTIVE'),
('VIP_2026_QSUY9J', 72, 'Batch 500 Pass #178', 1, 0, 'ACTIVE'),
('VIP_2026_FKCD96', 72, 'Batch 500 Pass #179', 1, 0, 'ACTIVE'),
('VIP_2026_MMU191', 72, 'Batch 500 Pass #180', 1, 0, 'ACTIVE'),
('VIP_2026_LM5JD7', 72, 'Batch 500 Pass #181', 1, 0, 'ACTIVE'),
('VIP_2026_A4613X', 72, 'Batch 500 Pass #182', 1, 0, 'ACTIVE'),
('VIP_2026_WCZO37', 72, 'Batch 500 Pass #183', 1, 0, 'ACTIVE'),
('VIP_2026_TSIEHU', 72, 'Batch 500 Pass #184', 1, 0, 'ACTIVE'),
('VIP_2026_7GBDVE', 72, 'Batch 500 Pass #185', 1, 0, 'ACTIVE'),
('VIP_2026_6XWMPQ', 72, 'Batch 500 Pass #186', 1, 0, 'ACTIVE'),
('VIP_2026_A6QEB9', 72, 'Batch 500 Pass #187', 1, 0, 'ACTIVE'),
('VIP_2026_UCZBXK', 72, 'Batch 500 Pass #188', 1, 0, 'ACTIVE'),
('VIP_2026_QT9ERK', 72, 'Batch 500 Pass #189', 1, 0, 'ACTIVE'),
('VIP_2026_LJZLF8', 72, 'Batch 500 Pass #190', 1, 0, 'ACTIVE'),
('VIP_2026_JX72LL', 72, 'Batch 500 Pass #191', 1, 0, 'ACTIVE'),
('VIP_2026_0641QY', 72, 'Batch 500 Pass #192', 1, 0, 'ACTIVE'),
('VIP_2026_1M9X0P', 72, 'Batch 500 Pass #193', 1, 0, 'ACTIVE'),
('VIP_2026_AN260D', 72, 'Batch 500 Pass #194', 1, 0, 'ACTIVE'),
('VIP_2026_2NFSES', 72, 'Batch 500 Pass #195', 1, 0, 'ACTIVE'),
('VIP_2026_YI1121', 72, 'Batch 500 Pass #196', 1, 0, 'ACTIVE'),
('VIP_2026_DLM8P4', 72, 'Batch 500 Pass #197', 1, 0, 'ACTIVE'),
('VIP_2026_GS3HC6', 72, 'Batch 500 Pass #198', 1, 0, 'ACTIVE'),
('VIP_2026_WIDPT9', 72, 'Batch 500 Pass #199', 1, 0, 'ACTIVE'),
('VIP_2026_SPXCND', 72, 'Batch 500 Pass #200', 1, 0, 'ACTIVE'),
('VIP_2026_L8CIGE', 72, 'Batch 500 Pass #201', 1, 0, 'ACTIVE'),
('VIP_2026_BI5P59', 72, 'Batch 500 Pass #202', 1, 0, 'ACTIVE'),
('VIP_2026_THZVHH', 72, 'Batch 500 Pass #203', 1, 0, 'ACTIVE');
INSERT IGNORE INTO `paywall_vouchers` (`code`, `duration_hours`, `note`, `max_uses`, `uses`, `status`) VALUES
('VIP_2026_D2WART', 72, 'Batch 500 Pass #204', 1, 0, 'ACTIVE'),
('VIP_2026_5DRHH1', 72, 'Batch 500 Pass #205', 1, 0, 'ACTIVE'),
('VIP_2026_4QSEHV', 72, 'Batch 500 Pass #206', 1, 0, 'ACTIVE'),
('VIP_2026_IFVBDH', 72, 'Batch 500 Pass #207', 1, 0, 'ACTIVE'),
('VIP_2026_8CL8FM', 72, 'Batch 500 Pass #208', 1, 0, 'ACTIVE'),
('VIP_2026_EAZQBW', 72, 'Batch 500 Pass #209', 1, 0, 'ACTIVE'),
('VIP_2026_JV0JI7', 72, 'Batch 500 Pass #210', 1, 0, 'ACTIVE'),
('VIP_2026_J1ASA2', 72, 'Batch 500 Pass #211', 1, 0, 'ACTIVE'),
('VIP_2026_BB90XZ', 72, 'Batch 500 Pass #212', 1, 0, 'ACTIVE'),
('VIP_2026_2JM27R', 72, 'Batch 500 Pass #213', 1, 0, 'ACTIVE'),
('VIP_2026_EBAUK7', 72, 'Batch 500 Pass #214', 1, 0, 'ACTIVE'),
('VIP_2026_F61FIS', 72, 'Batch 500 Pass #215', 1, 0, 'ACTIVE'),
('VIP_2026_IOWPUM', 72, 'Batch 500 Pass #216', 1, 0, 'ACTIVE'),
('VIP_2026_63IAS2', 72, 'Batch 500 Pass #217', 1, 0, 'ACTIVE'),
('VIP_2026_B884CG', 72, 'Batch 500 Pass #218', 1, 0, 'ACTIVE'),
('VIP_2026_T2R072', 72, 'Batch 500 Pass #219', 1, 0, 'ACTIVE'),
('VIP_2026_X03LQL', 72, 'Batch 500 Pass #220', 1, 0, 'ACTIVE'),
('VIP_2026_ZZXEE9', 72, 'Batch 500 Pass #221', 1, 0, 'ACTIVE'),
('VIP_2026_GBOUUM', 72, 'Batch 500 Pass #222', 1, 0, 'ACTIVE'),
('VIP_2026_T5NDK2', 72, 'Batch 500 Pass #223', 1, 0, 'ACTIVE'),
('VIP_2026_D3T5WQ', 72, 'Batch 500 Pass #224', 1, 0, 'ACTIVE'),
('VIP_2026_IUBTYF', 72, 'Batch 500 Pass #225', 1, 0, 'ACTIVE'),
('VIP_2026_IZCEOC', 72, 'Batch 500 Pass #226', 1, 0, 'ACTIVE'),
('VIP_2026_SC3X77', 72, 'Batch 500 Pass #227', 1, 0, 'ACTIVE'),
('VIP_2026_2N7OMW', 72, 'Batch 500 Pass #228', 1, 0, 'ACTIVE'),
('VIP_2026_M9F01Q', 72, 'Batch 500 Pass #229', 1, 0, 'ACTIVE'),
('VIP_2026_F31LGG', 72, 'Batch 500 Pass #230', 1, 0, 'ACTIVE'),
('VIP_2026_UFA2ST', 72, 'Batch 500 Pass #231', 1, 0, 'ACTIVE'),
('VIP_2026_849S5V', 72, 'Batch 500 Pass #232', 1, 0, 'ACTIVE'),
('VIP_2026_O3OVP2', 72, 'Batch 500 Pass #233', 1, 0, 'ACTIVE'),
('VIP_2026_9FEQBY', 72, 'Batch 500 Pass #234', 1, 0, 'ACTIVE'),
('VIP_2026_50A0QS', 72, 'Batch 500 Pass #235', 1, 0, 'ACTIVE'),
('VIP_2026_AMCE8H', 72, 'Batch 500 Pass #236', 1, 0, 'ACTIVE'),
('VIP_2026_CFAMFH', 72, 'Batch 500 Pass #237', 1, 0, 'ACTIVE'),
('VIP_2026_VVULMI', 72, 'Batch 500 Pass #238', 1, 0, 'ACTIVE'),
('VIP_2026_C87SOZ', 72, 'Batch 500 Pass #239', 1, 0, 'ACTIVE'),
('VIP_2026_MYZOUS', 72, 'Batch 500 Pass #240', 1, 0, 'ACTIVE'),
('VIP_2026_FWURWU', 72, 'Batch 500 Pass #241', 1, 0, 'ACTIVE'),
('VIP_2026_HT7XO3', 72, 'Batch 500 Pass #242', 1, 0, 'ACTIVE'),
('VIP_2026_6P5MJI', 72, 'Batch 500 Pass #243', 1, 0, 'ACTIVE'),
('VIP_2026_7XBGO8', 72, 'Batch 500 Pass #244', 1, 0, 'ACTIVE'),
('VIP_2026_WXXE83', 72, 'Batch 500 Pass #245', 1, 0, 'ACTIVE'),
('VIP_2026_UWHQP7', 72, 'Batch 500 Pass #246', 1, 0, 'ACTIVE'),
('VIP_2026_GONQM8', 72, 'Batch 500 Pass #247', 1, 0, 'ACTIVE'),
('VIP_2026_OYTRVC', 72, 'Batch 500 Pass #248', 1, 0, 'ACTIVE'),
('VIP_2026_CBYFQ7', 72, 'Batch 500 Pass #249', 1, 0, 'ACTIVE'),
('VIP_2026_O4HO8J', 72, 'Batch 500 Pass #250', 1, 0, 'ACTIVE'),
('VIP_2026_WWFI28', 72, 'Batch 500 Pass #251', 1, 0, 'ACTIVE'),
('VIP_2026_881OEV', 72, 'Batch 500 Pass #252', 1, 0, 'ACTIVE'),
('VIP_2026_NOSF55', 72, 'Batch 500 Pass #253', 1, 0, 'ACTIVE'),
('VIP_2026_Y8KZAH', 72, 'Batch 500 Pass #254', 1, 0, 'ACTIVE'),
('VIP_2026_U5SLU6', 72, 'Batch 500 Pass #255', 1, 0, 'ACTIVE'),
('VIP_2026_2HTBWP', 72, 'Batch 500 Pass #256', 1, 0, 'ACTIVE'),
('VIP_2026_NW6P0K', 72, 'Batch 500 Pass #257', 1, 0, 'ACTIVE'),
('VIP_2026_KPKLHK', 72, 'Batch 500 Pass #258', 1, 0, 'ACTIVE'),
('VIP_2026_NUK3IU', 72, 'Batch 500 Pass #259', 1, 0, 'ACTIVE'),
('VIP_2026_YVF62G', 72, 'Batch 500 Pass #260', 1, 0, 'ACTIVE'),
('VIP_2026_VUEN82', 72, 'Batch 500 Pass #261', 1, 0, 'ACTIVE'),
('VIP_2026_X6DLD0', 72, 'Batch 500 Pass #262', 1, 0, 'ACTIVE'),
('VIP_2026_NY85FT', 72, 'Batch 500 Pass #263', 1, 0, 'ACTIVE'),
('VIP_2026_BKQ8OF', 72, 'Batch 500 Pass #264', 1, 0, 'ACTIVE'),
('VIP_2026_OMLIY6', 72, 'Batch 500 Pass #265', 1, 0, 'ACTIVE'),
('VIP_2026_9PKALV', 72, 'Batch 500 Pass #266', 1, 0, 'ACTIVE'),
('VIP_2026_0S1GA3', 72, 'Batch 500 Pass #267', 1, 0, 'ACTIVE'),
('VIP_2026_SM1P2W', 72, 'Batch 500 Pass #268', 1, 0, 'ACTIVE'),
('VIP_2026_VV2TGQ', 72, 'Batch 500 Pass #269', 1, 0, 'ACTIVE'),
('VIP_2026_B8WTKI', 72, 'Batch 500 Pass #270', 1, 0, 'ACTIVE'),
('VIP_2026_SM55RX', 72, 'Batch 500 Pass #271', 1, 0, 'ACTIVE'),
('VIP_2026_P7Y62P', 72, 'Batch 500 Pass #272', 1, 0, 'ACTIVE'),
('VIP_2026_DSF87I', 72, 'Batch 500 Pass #273', 1, 0, 'ACTIVE'),
('VIP_2026_Y8VDHO', 72, 'Batch 500 Pass #274', 1, 0, 'ACTIVE'),
('VIP_2026_EOZY7U', 72, 'Batch 500 Pass #275', 1, 0, 'ACTIVE'),
('VIP_2026_7Y594A', 72, 'Batch 500 Pass #276', 1, 0, 'ACTIVE'),
('VIP_2026_L0D47C', 72, 'Batch 500 Pass #277', 1, 0, 'ACTIVE'),
('VIP_2026_KE28T7', 72, 'Batch 500 Pass #278', 1, 0, 'ACTIVE'),
('VIP_2026_M1A1CL', 72, 'Batch 500 Pass #279', 1, 0, 'ACTIVE'),
('VIP_2026_NVPC2B', 72, 'Batch 500 Pass #280', 1, 0, 'ACTIVE'),
('VIP_2026_A7QKUK', 72, 'Batch 500 Pass #281', 1, 0, 'ACTIVE'),
('VIP_2026_ERZJWG', 72, 'Batch 500 Pass #282', 1, 0, 'ACTIVE'),
('VIP_2026_PLOOFR', 72, 'Batch 500 Pass #283', 1, 0, 'ACTIVE'),
('VIP_2026_0DB2YI', 72, 'Batch 500 Pass #284', 1, 0, 'ACTIVE'),
('VIP_2026_7YDHD8', 72, 'Batch 500 Pass #285', 1, 0, 'ACTIVE'),
('VIP_2026_2YWQAE', 72, 'Batch 500 Pass #286', 1, 0, 'ACTIVE'),
('VIP_2026_S1DGR6', 72, 'Batch 500 Pass #287', 1, 0, 'ACTIVE'),
('VIP_2026_VYTVFE', 72, 'Batch 500 Pass #288', 1, 0, 'ACTIVE'),
('VIP_2026_ECWUS1', 72, 'Batch 500 Pass #289', 1, 0, 'ACTIVE'),
('VIP_2026_74SNV2', 72, 'Batch 500 Pass #290', 1, 0, 'ACTIVE'),
('VIP_2026_GTLS2W', 72, 'Batch 500 Pass #291', 1, 0, 'ACTIVE'),
('VIP_2026_ARWCPB', 72, 'Batch 500 Pass #292', 1, 0, 'ACTIVE'),
('VIP_2026_JBNP5P', 72, 'Batch 500 Pass #293', 1, 0, 'ACTIVE'),
('VIP_2026_U4TIP7', 72, 'Batch 500 Pass #294', 1, 0, 'ACTIVE'),
('VIP_2026_O1EI87', 72, 'Batch 500 Pass #295', 1, 0, 'ACTIVE'),
('VIP_2026_1EVHZ9', 72, 'Batch 500 Pass #296', 1, 0, 'ACTIVE'),
('VIP_2026_BTEZ7N', 72, 'Batch 500 Pass #297', 1, 0, 'ACTIVE'),
('VIP_2026_LJCRSF', 72, 'Batch 500 Pass #298', 1, 0, 'ACTIVE'),
('VIP_2026_ATGRDW', 72, 'Batch 500 Pass #299', 1, 0, 'ACTIVE'),
('VIP_2026_LMSBHS', 72, 'Batch 500 Pass #300', 1, 0, 'ACTIVE'),
('VIP_2026_QI09KZ', 72, 'Batch 500 Pass #301', 1, 0, 'ACTIVE'),
('VIP_2026_B8CU15', 72, 'Batch 500 Pass #302', 1, 0, 'ACTIVE'),
('VIP_2026_Z7368M', 72, 'Batch 500 Pass #303', 1, 0, 'ACTIVE');
INSERT IGNORE INTO `paywall_vouchers` (`code`, `duration_hours`, `note`, `max_uses`, `uses`, `status`) VALUES
('VIP_2026_YB0ZJ0', 72, 'Batch 500 Pass #304', 1, 0, 'ACTIVE'),
('VIP_2026_HB9DKY', 72, 'Batch 500 Pass #305', 1, 0, 'ACTIVE'),
('VIP_2026_ERC7HN', 72, 'Batch 500 Pass #306', 1, 0, 'ACTIVE'),
('VIP_2026_WWN4C8', 72, 'Batch 500 Pass #307', 1, 0, 'ACTIVE'),
('VIP_2026_MVIKDS', 72, 'Batch 500 Pass #308', 1, 0, 'ACTIVE'),
('VIP_2026_F46PM9', 72, 'Batch 500 Pass #309', 1, 0, 'ACTIVE'),
('VIP_2026_QZL3UC', 72, 'Batch 500 Pass #310', 1, 0, 'ACTIVE'),
('VIP_2026_9ZW1NC', 72, 'Batch 500 Pass #311', 1, 0, 'ACTIVE'),
('VIP_2026_YMSQI3', 72, 'Batch 500 Pass #312', 1, 0, 'ACTIVE'),
('VIP_2026_JZ0JKJ', 72, 'Batch 500 Pass #313', 1, 0, 'ACTIVE'),
('VIP_2026_TXIXUO', 72, 'Batch 500 Pass #314', 1, 0, 'ACTIVE'),
('VIP_2026_EZRM00', 72, 'Batch 500 Pass #315', 1, 0, 'ACTIVE'),
('VIP_2026_FT37CB', 72, 'Batch 500 Pass #316', 1, 0, 'ACTIVE'),
('VIP_2026_6T06MB', 72, 'Batch 500 Pass #317', 1, 0, 'ACTIVE'),
('VIP_2026_CB71PS', 72, 'Batch 500 Pass #318', 1, 0, 'ACTIVE'),
('VIP_2026_4P7OL2', 72, 'Batch 500 Pass #319', 1, 0, 'ACTIVE'),
('VIP_2026_QPAYCZ', 72, 'Batch 500 Pass #320', 1, 0, 'ACTIVE'),
('VIP_2026_7WPEKP', 72, 'Batch 500 Pass #321', 1, 0, 'ACTIVE'),
('VIP_2026_5ITMRR', 72, 'Batch 500 Pass #322', 1, 0, 'ACTIVE'),
('VIP_2026_KI2YNI', 72, 'Batch 500 Pass #323', 1, 0, 'ACTIVE'),
('VIP_2026_3TCNMY', 72, 'Batch 500 Pass #324', 1, 0, 'ACTIVE'),
('VIP_2026_TUSZNC', 72, 'Batch 500 Pass #325', 1, 0, 'ACTIVE'),
('VIP_2026_YSTAHN', 72, 'Batch 500 Pass #326', 1, 0, 'ACTIVE'),
('VIP_2026_42W1WY', 72, 'Batch 500 Pass #327', 1, 0, 'ACTIVE'),
('VIP_2026_5EUCP0', 72, 'Batch 500 Pass #328', 1, 0, 'ACTIVE'),
('VIP_2026_SIZMLA', 72, 'Batch 500 Pass #329', 1, 0, 'ACTIVE'),
('VIP_2026_RJ8M6N', 72, 'Batch 500 Pass #330', 1, 0, 'ACTIVE'),
('VIP_2026_2ENYMZ', 72, 'Batch 500 Pass #331', 1, 0, 'ACTIVE'),
('VIP_2026_M6Z45R', 72, 'Batch 500 Pass #332', 1, 0, 'ACTIVE'),
('VIP_2026_I72IDZ', 72, 'Batch 500 Pass #333', 1, 0, 'ACTIVE'),
('VIP_2026_BSK6YL', 72, 'Batch 500 Pass #334', 1, 0, 'ACTIVE'),
('VIP_2026_J6127Z', 72, 'Batch 500 Pass #335', 1, 0, 'ACTIVE'),
('VIP_2026_7USMEU', 72, 'Batch 500 Pass #336', 1, 0, 'ACTIVE'),
('VIP_2026_BL0RKB', 72, 'Batch 500 Pass #337', 1, 0, 'ACTIVE'),
('VIP_2026_X29HEL', 72, 'Batch 500 Pass #338', 1, 0, 'ACTIVE'),
('VIP_2026_0XUI9W', 72, 'Batch 500 Pass #339', 1, 0, 'ACTIVE'),
('VIP_2026_00V1LR', 72, 'Batch 500 Pass #340', 1, 0, 'ACTIVE'),
('VIP_2026_BTQIRB', 72, 'Batch 500 Pass #341', 1, 0, 'ACTIVE'),
('VIP_2026_6EKTUF', 72, 'Batch 500 Pass #342', 1, 0, 'ACTIVE'),
('VIP_2026_ZFO77J', 72, 'Batch 500 Pass #343', 1, 0, 'ACTIVE'),
('VIP_2026_HJ8WOV', 72, 'Batch 500 Pass #344', 1, 0, 'ACTIVE'),
('VIP_2026_OJW5KB', 72, 'Batch 500 Pass #345', 1, 0, 'ACTIVE'),
('VIP_2026_N7VQUS', 72, 'Batch 500 Pass #346', 1, 0, 'ACTIVE'),
('VIP_2026_FTX4GR', 72, 'Batch 500 Pass #347', 1, 0, 'ACTIVE'),
('VIP_2026_IXQ7K4', 72, 'Batch 500 Pass #348', 1, 0, 'ACTIVE'),
('VIP_2026_80AICL', 72, 'Batch 500 Pass #349', 1, 0, 'ACTIVE'),
('VIP_2026_HZMXET', 72, 'Batch 500 Pass #350', 1, 0, 'ACTIVE'),
('VIP_2026_XRUXLS', 72, 'Batch 500 Pass #351', 1, 0, 'ACTIVE'),
('VIP_2026_8LKYVA', 72, 'Batch 500 Pass #352', 1, 0, 'ACTIVE'),
('VIP_2026_H14AZE', 72, 'Batch 500 Pass #353', 1, 0, 'ACTIVE'),
('VIP_2026_N2YAV0', 72, 'Batch 500 Pass #354', 1, 0, 'ACTIVE'),
('VIP_2026_B7SAK8', 72, 'Batch 500 Pass #355', 1, 0, 'ACTIVE'),
('VIP_2026_Q04WSX', 72, 'Batch 500 Pass #356', 1, 0, 'ACTIVE'),
('VIP_2026_VZCLCK', 72, 'Batch 500 Pass #357', 1, 0, 'ACTIVE'),
('VIP_2026_DHW8X5', 72, 'Batch 500 Pass #358', 1, 0, 'ACTIVE'),
('VIP_2026_JWOVNL', 72, 'Batch 500 Pass #359', 1, 0, 'ACTIVE'),
('VIP_2026_FWZMKE', 72, 'Batch 500 Pass #360', 1, 0, 'ACTIVE'),
('VIP_2026_139L8Q', 72, 'Batch 500 Pass #361', 1, 0, 'ACTIVE'),
('VIP_2026_2VWFO9', 72, 'Batch 500 Pass #362', 1, 0, 'ACTIVE'),
('VIP_2026_V1HIMV', 72, 'Batch 500 Pass #363', 1, 0, 'ACTIVE'),
('VIP_2026_D73R3H', 72, 'Batch 500 Pass #364', 1, 0, 'ACTIVE'),
('VIP_2026_Z83B8O', 72, 'Batch 500 Pass #365', 1, 0, 'ACTIVE'),
('VIP_2026_QWHP3W', 72, 'Batch 500 Pass #366', 1, 0, 'ACTIVE'),
('VIP_2026_718V02', 72, 'Batch 500 Pass #367', 1, 0, 'ACTIVE'),
('VIP_2026_PKCCUR', 72, 'Batch 500 Pass #368', 1, 0, 'ACTIVE'),
('VIP_2026_04CPE7', 72, 'Batch 500 Pass #369', 1, 0, 'ACTIVE'),
('VIP_2026_D53JKH', 72, 'Batch 500 Pass #370', 1, 0, 'ACTIVE'),
('VIP_2026_2FCTRD', 72, 'Batch 500 Pass #371', 1, 0, 'ACTIVE'),
('VIP_2026_K4GDG3', 72, 'Batch 500 Pass #372', 1, 0, 'ACTIVE'),
('VIP_2026_JDW9TV', 72, 'Batch 500 Pass #373', 1, 0, 'ACTIVE'),
('VIP_2026_RBQWO6', 72, 'Batch 500 Pass #374', 1, 0, 'ACTIVE'),
('VIP_2026_QWK4LS', 72, 'Batch 500 Pass #375', 1, 0, 'ACTIVE'),
('VIP_2026_K1SYGM', 72, 'Batch 500 Pass #376', 1, 0, 'ACTIVE'),
('VIP_2026_S2W84R', 72, 'Batch 500 Pass #377', 1, 0, 'ACTIVE'),
('VIP_2026_LSYFQ7', 72, 'Batch 500 Pass #378', 1, 0, 'ACTIVE'),
('VIP_2026_TAWL2M', 72, 'Batch 500 Pass #379', 1, 0, 'ACTIVE'),
('VIP_2026_211F7F', 72, 'Batch 500 Pass #380', 1, 0, 'ACTIVE'),
('VIP_2026_V6US3V', 72, 'Batch 500 Pass #381', 1, 0, 'ACTIVE'),
('VIP_2026_YX2O69', 72, 'Batch 500 Pass #382', 1, 0, 'ACTIVE'),
('VIP_2026_96UDW9', 72, 'Batch 500 Pass #383', 1, 0, 'ACTIVE'),
('VIP_2026_8KY717', 72, 'Batch 500 Pass #384', 1, 0, 'ACTIVE'),
('VIP_2026_728SLM', 72, 'Batch 500 Pass #385', 1, 0, 'ACTIVE'),
('VIP_2026_758YY7', 72, 'Batch 500 Pass #386', 1, 0, 'ACTIVE'),
('VIP_2026_FXDBL3', 72, 'Batch 500 Pass #387', 1, 0, 'ACTIVE'),
('VIP_2026_DOAVVE', 72, 'Batch 500 Pass #388', 1, 0, 'ACTIVE'),
('VIP_2026_GF2XID', 72, 'Batch 500 Pass #389', 1, 0, 'ACTIVE'),
('VIP_2026_9YV9ZT', 72, 'Batch 500 Pass #390', 1, 0, 'ACTIVE'),
('VIP_2026_MWUBLN', 72, 'Batch 500 Pass #391', 1, 0, 'ACTIVE'),
('VIP_2026_O1GPDV', 72, 'Batch 500 Pass #392', 1, 0, 'ACTIVE'),
('VIP_2026_OSF7HL', 72, 'Batch 500 Pass #393', 1, 0, 'ACTIVE'),
('VIP_2026_DMBVAG', 72, 'Batch 500 Pass #394', 1, 0, 'ACTIVE'),
('VIP_2026_KJ81CN', 72, 'Batch 500 Pass #395', 1, 0, 'ACTIVE'),
('VIP_2026_N06HBL', 72, 'Batch 500 Pass #396', 1, 0, 'ACTIVE'),
('VIP_2026_52YDNO', 72, 'Batch 500 Pass #397', 1, 0, 'ACTIVE'),
('VIP_2026_U0GP2X', 72, 'Batch 500 Pass #398', 1, 0, 'ACTIVE'),
('VIP_2026_YUK8KO', 72, 'Batch 500 Pass #399', 1, 0, 'ACTIVE'),
('VIP_2026_24CQ3T', 72, 'Batch 500 Pass #400', 1, 0, 'ACTIVE'),
('VIP_2026_00O7ES', 72, 'Batch 500 Pass #401', 1, 0, 'ACTIVE'),
('VIP_2026_VHO4FU', 72, 'Batch 500 Pass #402', 1, 0, 'ACTIVE'),
('VIP_2026_KWU5MU', 72, 'Batch 500 Pass #403', 1, 0, 'ACTIVE');
INSERT IGNORE INTO `paywall_vouchers` (`code`, `duration_hours`, `note`, `max_uses`, `uses`, `status`) VALUES
('VIP_2026_YT4490', 72, 'Batch 500 Pass #404', 1, 0, 'ACTIVE'),
('VIP_2026_2MJBGL', 72, 'Batch 500 Pass #405', 1, 0, 'ACTIVE'),
('VIP_2026_OVBEGT', 72, 'Batch 500 Pass #406', 1, 0, 'ACTIVE'),
('VIP_2026_DYYQ57', 72, 'Batch 500 Pass #407', 1, 0, 'ACTIVE'),
('VIP_2026_W26GEH', 72, 'Batch 500 Pass #408', 1, 0, 'ACTIVE'),
('VIP_2026_OXO6VX', 72, 'Batch 500 Pass #409', 1, 0, 'ACTIVE'),
('VIP_2026_W6QLBB', 72, 'Batch 500 Pass #410', 1, 0, 'ACTIVE'),
('VIP_2026_V646V1', 72, 'Batch 500 Pass #411', 1, 0, 'ACTIVE'),
('VIP_2026_VHPWP2', 72, 'Batch 500 Pass #412', 1, 0, 'ACTIVE'),
('VIP_2026_S9ISEQ', 72, 'Batch 500 Pass #413', 1, 0, 'ACTIVE'),
('VIP_2026_G63A0R', 72, 'Batch 500 Pass #414', 1, 0, 'ACTIVE'),
('VIP_2026_AVM0LC', 72, 'Batch 500 Pass #415', 1, 0, 'ACTIVE'),
('VIP_2026_GE9BSX', 72, 'Batch 500 Pass #416', 1, 0, 'ACTIVE'),
('VIP_2026_9GKHW2', 72, 'Batch 500 Pass #417', 1, 0, 'ACTIVE'),
('VIP_2026_45RN3E', 72, 'Batch 500 Pass #418', 1, 0, 'ACTIVE'),
('VIP_2026_NSA9CQ', 72, 'Batch 500 Pass #419', 1, 0, 'ACTIVE'),
('VIP_2026_89JGIT', 72, 'Batch 500 Pass #420', 1, 0, 'ACTIVE'),
('VIP_2026_MUI8PN', 72, 'Batch 500 Pass #421', 1, 0, 'ACTIVE'),
('VIP_2026_XPXTOP', 72, 'Batch 500 Pass #422', 1, 0, 'ACTIVE'),
('VIP_2026_7OGQP3', 72, 'Batch 500 Pass #423', 1, 0, 'ACTIVE'),
('VIP_2026_EAF703', 72, 'Batch 500 Pass #424', 1, 0, 'ACTIVE'),
('VIP_2026_E5P7O6', 72, 'Batch 500 Pass #425', 1, 0, 'ACTIVE'),
('VIP_2026_XN25XR', 72, 'Batch 500 Pass #426', 1, 0, 'ACTIVE'),
('VIP_2026_FWDP93', 72, 'Batch 500 Pass #427', 1, 0, 'ACTIVE'),
('VIP_2026_L330T7', 72, 'Batch 500 Pass #428', 1, 0, 'ACTIVE'),
('VIP_2026_VDD1DC', 72, 'Batch 500 Pass #429', 1, 0, 'ACTIVE'),
('VIP_2026_EJ6EQH', 72, 'Batch 500 Pass #430', 1, 0, 'ACTIVE'),
('VIP_2026_13CKF0', 72, 'Batch 500 Pass #431', 1, 0, 'ACTIVE'),
('VIP_2026_JCJYKD', 72, 'Batch 500 Pass #432', 1, 0, 'ACTIVE'),
('VIP_2026_JHOHAD', 72, 'Batch 500 Pass #433', 1, 0, 'ACTIVE'),
('VIP_2026_BLYUR2', 72, 'Batch 500 Pass #434', 1, 0, 'ACTIVE'),
('VIP_2026_VTGF2U', 72, 'Batch 500 Pass #435', 1, 0, 'ACTIVE'),
('VIP_2026_Q3HSF9', 72, 'Batch 500 Pass #436', 1, 0, 'ACTIVE'),
('VIP_2026_72AKTK', 72, 'Batch 500 Pass #437', 1, 0, 'ACTIVE'),
('VIP_2026_S1KN9S', 72, 'Batch 500 Pass #438', 1, 0, 'ACTIVE'),
('VIP_2026_63FRZH', 72, 'Batch 500 Pass #439', 1, 0, 'ACTIVE'),
('VIP_2026_VXJG0I', 72, 'Batch 500 Pass #440', 1, 0, 'ACTIVE'),
('VIP_2026_FQ4VXM', 72, 'Batch 500 Pass #441', 1, 0, 'ACTIVE'),
('VIP_2026_AKR6YA', 72, 'Batch 500 Pass #442', 1, 0, 'ACTIVE'),
('VIP_2026_K8G0Y2', 72, 'Batch 500 Pass #443', 1, 0, 'ACTIVE'),
('VIP_2026_L0OKQA', 72, 'Batch 500 Pass #444', 1, 0, 'ACTIVE'),
('VIP_2026_HRQVKP', 72, 'Batch 500 Pass #445', 1, 0, 'ACTIVE'),
('VIP_2026_45N5SK', 72, 'Batch 500 Pass #446', 1, 0, 'ACTIVE'),
('VIP_2026_4I8Q45', 72, 'Batch 500 Pass #447', 1, 0, 'ACTIVE'),
('VIP_2026_TS79QR', 72, 'Batch 500 Pass #448', 1, 0, 'ACTIVE'),
('VIP_2026_FNNT5Z', 72, 'Batch 500 Pass #449', 1, 0, 'ACTIVE'),
('VIP_2026_ATM88P', 72, 'Batch 500 Pass #450', 1, 0, 'ACTIVE'),
('VIP_2026_C41LLJ', 72, 'Batch 500 Pass #451', 1, 0, 'ACTIVE'),
('VIP_2026_T39IXY', 72, 'Batch 500 Pass #452', 1, 0, 'ACTIVE'),
('VIP_2026_MIA857', 72, 'Batch 500 Pass #453', 1, 0, 'ACTIVE'),
('VIP_2026_5IT5LQ', 72, 'Batch 500 Pass #454', 1, 0, 'ACTIVE'),
('VIP_2026_Y20FBK', 72, 'Batch 500 Pass #455', 1, 0, 'ACTIVE'),
('VIP_2026_9XQUAZ', 72, 'Batch 500 Pass #456', 1, 0, 'ACTIVE'),
('VIP_2026_K5I03B', 72, 'Batch 500 Pass #457', 1, 0, 'ACTIVE'),
('VIP_2026_CKMETY', 72, 'Batch 500 Pass #458', 1, 0, 'ACTIVE'),
('VIP_2026_ZLRNMA', 72, 'Batch 500 Pass #459', 1, 0, 'ACTIVE'),
('VIP_2026_XNXRFA', 72, 'Batch 500 Pass #460', 1, 0, 'ACTIVE'),
('VIP_2026_X9TN0R', 72, 'Batch 500 Pass #461', 1, 0, 'ACTIVE'),
('VIP_2026_B6Z86Q', 72, 'Batch 500 Pass #462', 1, 0, 'ACTIVE'),
('VIP_2026_JPN1A8', 72, 'Batch 500 Pass #463', 1, 0, 'ACTIVE'),
('VIP_2026_S43IYD', 72, 'Batch 500 Pass #464', 1, 0, 'ACTIVE'),
('VIP_2026_0AJPFC', 72, 'Batch 500 Pass #465', 1, 0, 'ACTIVE'),
('VIP_2026_ESH7NL', 72, 'Batch 500 Pass #466', 1, 0, 'ACTIVE'),
('VIP_2026_CO87QI', 72, 'Batch 500 Pass #467', 1, 0, 'ACTIVE'),
('VIP_2026_RGKFN5', 72, 'Batch 500 Pass #468', 1, 0, 'ACTIVE'),
('VIP_2026_DUXHZT', 72, 'Batch 500 Pass #469', 1, 0, 'ACTIVE'),
('VIP_2026_7HOGBX', 72, 'Batch 500 Pass #470', 1, 0, 'ACTIVE'),
('VIP_2026_IW4J82', 72, 'Batch 500 Pass #471', 1, 0, 'ACTIVE'),
('VIP_2026_MPMU3E', 72, 'Batch 500 Pass #472', 1, 0, 'ACTIVE'),
('VIP_2026_WLHHZS', 72, 'Batch 500 Pass #473', 1, 0, 'ACTIVE'),
('VIP_2026_SYA9RC', 72, 'Batch 500 Pass #474', 1, 0, 'ACTIVE'),
('VIP_2026_D3C4ZM', 72, 'Batch 500 Pass #475', 1, 0, 'ACTIVE'),
('VIP_2026_8FJP01', 72, 'Batch 500 Pass #476', 1, 0, 'ACTIVE'),
('VIP_2026_VPQGVT', 72, 'Batch 500 Pass #477', 1, 0, 'ACTIVE'),
('VIP_2026_3RTY9Z', 72, 'Batch 500 Pass #478', 1, 0, 'ACTIVE'),
('VIP_2026_JPBOPI', 72, 'Batch 500 Pass #479', 1, 0, 'ACTIVE'),
('VIP_2026_0WFD2W', 72, 'Batch 500 Pass #480', 1, 0, 'ACTIVE'),
('VIP_2026_87PGQF', 72, 'Batch 500 Pass #481', 1, 0, 'ACTIVE'),
('VIP_2026_WST5YU', 72, 'Batch 500 Pass #482', 1, 0, 'ACTIVE'),
('VIP_2026_BBGS2T', 72, 'Batch 500 Pass #483', 1, 0, 'ACTIVE'),
('VIP_2026_OBT7CR', 72, 'Batch 500 Pass #484', 1, 0, 'ACTIVE'),
('VIP_2026_MGSGUT', 72, 'Batch 500 Pass #485', 1, 0, 'ACTIVE'),
('VIP_2026_17N82G', 72, 'Batch 500 Pass #486', 1, 0, 'ACTIVE'),
('VIP_2026_EWMRBC', 72, 'Batch 500 Pass #487', 1, 0, 'ACTIVE'),
('VIP_2026_2Q05WV', 72, 'Batch 500 Pass #488', 1, 0, 'ACTIVE'),
('VIP_2026_KSQ56R', 72, 'Batch 500 Pass #489', 1, 0, 'ACTIVE'),
('VIP_2026_0ZOQCE', 72, 'Batch 500 Pass #490', 1, 0, 'ACTIVE'),
('VIP_2026_LJRUJ5', 72, 'Batch 500 Pass #491', 1, 0, 'ACTIVE'),
('VIP_2026_BLEJX2', 72, 'Batch 500 Pass #492', 1, 0, 'ACTIVE'),
('VIP_2026_GWH594', 72, 'Batch 500 Pass #493', 1, 0, 'ACTIVE'),
('VIP_2026_JMR31I', 72, 'Batch 500 Pass #494', 1, 0, 'ACTIVE'),
('VIP_2026_KVPFGS', 72, 'Batch 500 Pass #495', 1, 0, 'ACTIVE'),
('VIP_2026_P36W3M', 72, 'Batch 500 Pass #496', 1, 0, 'ACTIVE'),
('VIP_2026_GY0AMS', 72, 'Batch 500 Pass #497', 1, 0, 'ACTIVE'),
('VIP_2026_4OTRQX', 72, 'Batch 500 Pass #498', 1, 0, 'ACTIVE'),
('VIP_2026_JTYUMW', 72, 'Batch 500 Pass #499', 1, 0, 'ACTIVE'),
('VIP_2026_OGHOV9', 72, 'Batch 500 Pass #500', 1, 0, 'ACTIVE'),
('VIPPASS2026', 72, 'Special Promo Pass', 500, 12, 'ACTIVE'),
('CHHAYA_ADMIN', 999999, 'Primary Admin Pass Code', 99999, 5, 'ACTIVE'),
('FREEPASS', 24, 'Daily Free Test Pass', 100, 3, 'ACTIVE');

-- 3. System Logs Table
CREATE TABLE IF NOT EXISTS `paywall_logs` (
  `id` VARCHAR(100) NOT NULL PRIMARY KEY,
  `timestamp` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `type` VARCHAR(100) NOT NULL,
  `tran_id` VARCHAR(100) NULL,
  `gateway` VARCHAR(50) NULL,
  `amount` DECIMAL(10,2) DEFAULT 0.00,
  `currency` VARCHAR(10) DEFAULT 'USD',
  `plan` VARCHAR(100) NULL,
  `pass_token` VARCHAR(255) NULL,
  `url` VARCHAR(255) NULL,
  `status` VARCHAR(50) NOT NULL DEFAULT 'INFO',
  `admin_email` VARCHAR(255) NULL,
  `details` TEXT NULL,
  `ip_address` VARCHAR(100) NULL,
  INDEX `idx_log_timestamp` (`timestamp`),
  INDEX `idx_log_type` (`type`),
  INDEX `idx_log_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO `paywall_logs` (`id`, `timestamp`, `type`, `tran_id`, `gateway`, `amount`, `currency`, `plan`, `pass_token`, `url`, `status`, `admin_email`, `details`, `ip_address`) VALUES
('LOG_1793014971707_d5my', '2026-10-26 11:42:51', 'ADMIN_LOGIN', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'SUCCESS', 'chhayasor3@gmail.com', 'Primary Admin chhayasor3@gmail.com authenticated successfully with Google Authenticator 2FA', '127.0.0.1'),
('LOG_1793006515205_583n', '2026-10-26 09:21:55', 'ADMIN_LOGOUT', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'INFO', 'chhayasor3@gmail.com', 'Primary Admin chhayasor3@gmail.com logged out', '127.0.0.1'),
('LOG_1793005415741_uv3u', '2026-10-26 09:03:35', 'ADMIN_OTP_FAILED', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'REJECTED', 'chhayasor3@gmail.com', 'Invalid Google Authenticator code attempt: 264424', '127.0.0.1'),
('LOG_1792922835496_ze5q', '2026-10-25 10:07:15', 'ADMIN_LOGIN', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'SUCCESS', 'chhayasor3@gmail.com', 'Primary Admin chhayasor3@gmail.com authenticated successfully with Google Authenticator 2FA', '127.0.0.1'),
('LOG_1792921121168_6wjy', '2026-10-25 09:38:41', 'ADMIN_LOGIN', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'SUCCESS', 'chhayasor3@gmail.com', 'Primary Admin chhayasor3@gmail.com authenticated successfully with Google Authenticator 2FA', '127.0.0.1'),
('LOG_1792921050277_bc1d', '2026-10-25 09:37:30', 'ADMIN_LOGIN_REJECTED', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'REJECTED', 'admin@av.com', 'Unauthorized admin login attempt with email: admin@av.com', '127.0.0.1'),
('LOG_1792917259810_3z0l', '2026-10-25 08:34:19', 'ADMIN_LOGIN', NULL, NULL, 0.0, 'USD', NULL, NULL, '/index.html', 'SUCCESS', 'chhayasor3@gmail.com', 'Primary Admin chhayasor3@gmail.com authenticated successfully with Google Authenticator 2FA', '127.0.0.1');

-- 4. Operators Table (Controlled by Admin)
CREATE TABLE IF NOT EXISTS `paywall_operators` (
  `id` VARCHAR(100) NOT NULL,
  `name` VARCHAR(191) NOT NULL,
  `username` VARCHAR(100) DEFAULT '',
  `password` VARCHAR(191) DEFAULT '123456',
  `email` VARCHAR(191) NOT NULL,
  `api_key` VARCHAR(191) NOT NULL,
  `website` VARCHAR(255) DEFAULT '',
  `commission_percent` DECIMAL(5,2) NOT NULL DEFAULT 20.00,
  `status` VARCHAR(50) NOT NULL DEFAULT 'ACTIVE',
  `payout_method` VARCHAR(50) DEFAULT 'ABA',
  `payout_account` VARCHAR(191) DEFAULT '',
  `payout_name` VARCHAR(191) DEFAULT '',
  `telegram` VARCHAR(100) DEFAULT '',
  `total_sales` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `total_earnings` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `total_paid` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `balance` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `api_key` (`api_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Inserting 8 operators into paywall_operators
INSERT INTO `paywall_operators` (`id`, `name`, `username`, `password`, `email`, `api_key`, `website`, `commission_percent`, `status`, `payout_method`, `payout_account`, `payout_name`, `telegram`, `total_sales`, `total_earnings`, `total_paid`, `balance`) VALUES
('op_market_336277', 'Phnom Penh Storefront', 'op_market_336277', '123456', '', 'avop_live_48c8a197f51601b2', '', 25.0, 'ACTIVE', 'ABA', '', '', '', 3.0, 0.74, 0.0, 0.74),
('op_market_787405', 'Phnom Penh Storefront', 'op_market_787405', '123456', '', 'avop_live_7eaecd81fe399263', '', 25.0, 'ACTIVE', 'ABA', '', '', '', 0.0, 0.0, 0.0, 0.0),
('op_market_835172', 'Smart Shop Cambodia', 'op_market_835172', '123456', '', 'avop_live_271eed4f64056b0c', '', 22.0, 'ACTIVE', 'ABA', '', '', '', 1.0, 0.22, 0.0, 0.22),
('op_market_394820', 'Test Auto Verify Op', 'op_market_394820', '123456', '', 'avop_live_a784e4ffabfe263e', '', 20.0, 'ACTIVE', 'ABA', '', '', '', 0.0, 0.0, 0.0, 0.0),
('op_test_browser_live', 'Test Browser Op', 'test_browser_op', 'password123', '', 'avop_live_3dca56f4ea3cc04a', '', 20.0, 'ACTIVE', 'ABA', '', '', '', 0.0, 0.0, 0.0, 0.0),
('op_test_user_create', 'Test User Op', 'test_user_op', 'password123', '', 'avop_live_1106291dcba2d05f', '', 25.0, 'ACTIVE', 'ABA', '', '', '', 0.0, 0.0, 0.0, 0.0),
('op_av_official', 'AV Wallscript Publisher', 'op_av_official', 'operator123', 'operator@av91.online', 'avop_live_888865_sec_991', 'https://av.av91.online', 20.0, 'ACTIVE', 'ABA', '001 888 865', 'SOR CHHAYA', '@sorchhaya', 600.0, 120.0, 0.0, 120.0),
('op_market_888865', 'Khmer Online Market 888865', 'op_market_888865', 'market123', 'seller@market888865.com', 'avop_live_khmer_mch_002', 'https://market.888865.com', 20.0, 'ACTIVE', 'ABA', '000 555 123', 'MARKETPLACE OPERATOR', '@market888865', 380.5, 76.1, 0.0, 76.1)
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `username`=VALUES(`username`), `password`=VALUES(`password`), `email`=VALUES(`email`), `website`=VALUES(`website`), `commission_percent`=VALUES(`commission_percent`), `status`=VALUES(`status`), `payout_method`=VALUES(`payout_method`), `payout_account`=VALUES(`payout_account`), `payout_name`=VALUES(`payout_name`), `telegram`=VALUES(`telegram`), `total_sales`=VALUES(`total_sales`), `total_earnings`=VALUES(`total_earnings`), `total_paid`=VALUES(`total_paid`), `balance`=VALUES(`balance`);


-- 5. Operator Payouts & Withdrawals Table
CREATE TABLE IF NOT EXISTS `paywall_operator_payouts` (
  `id` VARCHAR(100) NOT NULL,
  `operator_id` VARCHAR(100) NOT NULL,
  `amount` DECIMAL(10,2) NOT NULL,
  `payout_method` VARCHAR(50) NOT NULL DEFAULT 'ABA',
  `payout_account` VARCHAR(191) NOT NULL,
  `payout_name` VARCHAR(191) DEFAULT '',
  `status` VARCHAR(50) NOT NULL DEFAULT 'PENDING',
  `reference_no` VARCHAR(100) DEFAULT '',
  `admin_notes` TEXT DEFAULT NULL,
  `requested_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `paid_at` DATETIME DEFAULT NULL,
  PRIMARY KEY (`id`),
  INDEX `idx_payout_op` (`operator_id`),
  INDEX `idx_payout_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- 6. Universal Transactions Table (4-Method Payment & Paywall)
CREATE TABLE IF NOT EXISTS `paywall_transactions` (
  `order_id` VARCHAR(100) NOT NULL,
  `transaction_id` VARCHAR(100) NOT NULL,
  `operator_id` VARCHAR(100) DEFAULT NULL,
  `item_title` VARCHAR(255) DEFAULT 'Digital Content / Product',
  `amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `currency` VARCHAR(10) NOT NULL DEFAULT 'USD',
  `payment_method` VARCHAR(50) NOT NULL DEFAULT 'khpay',
  `operator_cut_percent` DECIMAL(5,2) NOT NULL DEFAULT 20.00,
  `operator_earning` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `admin_fee` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `payment_status` VARCHAR(50) NOT NULL DEFAULT 'PENDING',
  `customer_name` VARCHAR(191) DEFAULT '',
  `customer_email` VARCHAR(191) DEFAULT '',
  `customer_phone` VARCHAR(100) DEFAULT '',
  `qr_string` TEXT DEFAULT NULL,
  `qr_image_url` TEXT DEFAULT NULL,
  `payment_url` TEXT DEFAULT NULL,
  `return_url` TEXT DEFAULT NULL,
  `webhook_url` TEXT DEFAULT NULL,
  `webhook_status` VARCHAR(50) DEFAULT 'PENDING',
  `paid_at` DATETIME DEFAULT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`order_id`),
  UNIQUE KEY `transaction_id` (`transaction_id`),
  INDEX `idx_tx_op` (`operator_id`),
  INDEX `idx_tx_status` (`payment_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `paywall_transactions` (`order_id`, `transaction_id`, `operator_id`, `item_title`, `amount`, `currency`, `payment_method`, `operator_cut_percent`, `operator_earning`, `admin_fee`, `payment_status`, `customer_name`, `customer_email`, `customer_phone`) VALUES
('SPIN_TEST_999', 'TX-SPIN-1792944151', 'op_market_336277', 'Spin Chance (2 Chances)', 2.0, 'USD', 'khpay', 25.0, 0.5, 1.5, 'PAID', 'Test Player DB Sync', '', ''),
('SPIN_1792919207353_512', 'txn_c7b1a3f273a3261a', 'op_market_336277', 'Spin Chance (1 Chances)', 0.5, 'USD', 'khpay', 25.0, 0.12, 0.38, 'PAID', '', '', ''),
('TEST_QR_CHECK', 'txn_bd46b2dc88cca7ee', 'op_market_336277', 'Online Store Item', 0.5, 'USD', 'khpay', 25.0, 0.12, 0.38, 'PENDING', '', '', ''),
('SPIN_1792919019230_487', 'txn_49c86fbbba5079dc', 'op_market_336277', 'Spin Chance (1 Chances)', 0.5, 'USD', 'khpay', 25.0, 0.12, 0.38, 'PAID', '', '', ''),
('TEST_123', 'txn_5471340734cc3e42', 'op_market_336277', 'Spin Test', 1.0, 'USD', 'khpay', 25.0, 0.25, 0.75, 'PENDING', '', '', ''),
('SPIN_1792915071582_969', 'txn_97ec76b0743a0805', 'op_market_835172', 'Spin Chance (1 Chances)', 1.0, 'USD', 'khpay', 22.0, 0.22, 0.78, 'PAID', '', '', ''),
('MKT-ORD-261023-8142', 'TX-MKT-547F2A8FAE', 'op_market_888865', 'Marketplace Item (x1)', 40.0, 'USD', 'khpay', 20.0, 8.0, 32.0, 'PENDING', 'Mengly Chea', '098765432@client.local', '098765432'),
('ORD-1792687259-9bf3', 'TX-469DD8AD548B', 'op_market_336277', 'Online Store Item', 1.0, 'USD', 'khmer_system', 25.0, 0.25, 0.75, 'PENDING', '', '', ''),
('ORD-1792687252-2a52', 'TX-4FBA79566E3D', 'op_market_336277', 'Online Store Item', 1.0, 'USD', 'khpay', 25.0, 0.25, 0.75, 'PENDING', '', '', ''),
('ORD-1792687215-7cf6', 'TX-191AE626374C', 'op_market_888865', 'Smart Watch Pro', 15.0, 'USD', 'khpay', 20.0, 3.0, 12.0, 'PENDING', '', '', ''),
('MKT-ORD-261022-1384', 'TX-MKT-E61ABEC50B', 'op_market_888865', 'Fast Charging USB-C Cable 65W (x1)', 6.5, 'USD', 'khpay', 20.0, 1.3, 5.2, 'PENDING', 'Sokha Vathanak', '012888865@client.local', '012888865'),
('ORD-1792686096-5de1', 'TX-12FF085E27BD', 'op_market_888865', 'Smart Watch Pro', 30.0, 'USD', 'khmer_system', 20.0, 6.0, 24.0, 'PENDING', '', '', ''),
('ORD-1792686094-803e', 'TX-0A408E11F0CC', 'op_market_888865', 'Smart Watch Pro', 30.0, 'USD', 'khpay', 20.0, 6.0, 24.0, 'PENDING', '', '', ''),
('MKT-ORD-261022-9093', 'TX-MKT-193FD3ABDD', 'op_market_888865', 'Marketplace Item (x1)', 25.0, 'USD', 'khmer_system', 20.0, 5.0, 20.0, 'PENDING', 'Test Client', '012888865@client.local', '012888865'),
('MKT-ORD-261022-2048', 'TX-MKT-E68095303A', 'op_market_888865', 'Marketplace Item (x1)', 25.0, 'USD', 'khpay', 20.0, 5.0, 20.0, 'PENDING', 'Test Client', '012888865@client.local', '012888865'),
('MKT-ORD-261022-9033', 'TX-MKT-E83C12B99C', 'op_market_888865', 'Fast Charging USB-C Cable 65W (x1)', 6.5, 'USD', 'khpay', 20.0, 1.3, 5.2, 'PENDING', 'Sokha Vathanak', '012888865@client.local', '012888865'),
('MKT-ORD-261022-3516', 'TX-MKT-5E98D23B06', 'op_market_888865', 'Fast Charging USB-C Cable 65W (x1)', 6.5, 'USD', 'khpay', 20.0, 1.3, 5.2, 'PAID', 'Test Client', '012888865@client.local', '012888865'),
('MKT-ORD-261022-6196', 'TX-MKT-B68F1B180B', 'op_market_888865', 'Test Item (x1)', 25.0, 'USD', 'khpay', 20.0, 5.0, 20.0, 'PAID', 'Test Client', '012888865@client.local', '012888865'),
('MKT-ORD-261022-4605', 'TX-MKT-97D74A6ABC', 'op_market_888865', 'Test Item (x1)', 25.0, 'USD', 'khpay', 20.0, 5.0, 20.0, 'PAID', 'Test Client', '012888865@client.local', '012888865'),
('MKT-ORD-261022-4278', 'TX-MKT-D40B0A9C53', 'op_market_888865', 'Test Item (x1)', 25.0, 'USD', 'khpay', 20.0, 5.0, 20.0, 'PAID', 'Test Client', '012888865@client.local', '012888865'),
('MKT-ORD-261022-6086', 'TX-MKT-A471A0C3DD', 'op_market_888865', 'Marketplace Item (x2)', 13.0, 'USD', 'khpay', 20.0, 2.6, 10.4, 'PAID', 'Sok Vannak', '012888999@client.local', '012888999'),
('MKT-ORD-261022-1968', 'TX-MKT-D4B43D5AA3', 'op_market_888865', 'Marketplace Item (x2)', 13.0, 'USD', 'khpay', 20.0, 2.6, 10.4, 'PAID', 'Sok Vannak', '012888999@client.local', '012888999'),
('MKT-ORD-261022-5524', 'TX-MKT-D392050979', 'op_market_888865', 'Marketplace Item (x2)', 13.0, 'USD', 'khpay', 20.0, 2.6, 10.4, 'PAID', 'Sok Vannak', '012888999@client.local', '012888999'),
('ORD_MARKET_TEST_1001', 'TX-CCCC39C933A3', 'op_market_888865', 'Online Store Item', 10.0, 'USD', 'khpay', 20.0, 2.0, 8.0, 'PAID', '', '', '')
ON DUPLICATE KEY UPDATE `payment_status`=VALUES(`payment_status`), `operator_earning`=VALUES(`operator_earning`), `admin_fee`=VALUES(`admin_fee`);


-- 7. Operator Selling Items Table (paywall_items)
CREATE TABLE IF NOT EXISTS `paywall_items` (
  `id` VARCHAR(100) NOT NULL,
  `operator_id` VARCHAR(100) NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `currency` VARCHAR(10) NOT NULL DEFAULT 'USD',
  `category` VARCHAR(100) DEFAULT 'General',
  `description` TEXT DEFAULT NULL,
  `image_url` TEXT DEFAULT NULL,
  `stock` INT(11) NOT NULL DEFAULT 999,
  `status` VARCHAR(50) NOT NULL DEFAULT 'ACTIVE',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  INDEX `idx_item_op` (`operator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `paywall_items` (`id`, `operator_id`, `title`, `price`, `currency`, `category`, `description`, `image_url`, `stock`, `status`) VALUES
('item_test_video_yt_01', 'op_market_888865', 'Smart Wireless Speaker (YouTube Video Demo)', 29.99, 'USD', 'Electronics', 'Testing YouTube auto-thumbnail and playable video integration. ✈️ t.me/av91_support', 'https://img.youtube.com/vi/dQw4w9WgXcQ/hqdefault.jpg', 50, 'ACTIVE'),
('item_fast_charging_us_5ba2', 'op_market_888865', 'Fast Charging USB-C Cable 65W', 6.5, 'USD', 'Accessories', 'Durable braided nylon 65W fast charging cable', 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=500&auto=format&fit=crop', 100, 'ACTIVE'),
('item_fast_charging_us_c987', 'op_market_888865', 'Fast Charging USB-C Cable 65W', 6.5, 'USD', 'Accessories', 'Durable braided nylon 65W fast charging cable', 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=500&auto=format&fit=crop', 100, 'ACTIVE'),
('item_fast_charging_us_e3f4', 'op_market_888865', 'Fast Charging USB-C Cable 65W', 6.5, 'USD', 'Accessories', 'Durable braided nylon 65W fast charging cable', 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=500&auto=format&fit=crop', 100, 'ACTIVE'),
('item_fast_charging_us_6b5b', 'op_market_888865', 'Fast Charging USB-C Cable 65W', 6.5, 'USD', 'Accessories', 'Durable braided nylon 65W fast charging cable', 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=500&auto=format&fit=crop', 100, 'ACTIVE'),
('item_fast_charging_us_6e0e', 'op_market_888865', 'Fast Charging USB-C Cable 65W', 6.5, 'USD', 'Accessories', 'Durable braided nylon 65W fast charging cable', 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=500&auto=format&fit=crop', 100, 'ACTIVE'),
('item_fast_charging_us_475f', 'op_market_888865', 'Fast Charging USB-C Cable 65W', 6.5, 'USD', 'Accessories', 'Durable braided nylon 65W fast charging cable', 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=500&auto=format&fit=crop', 100, 'ACTIVE'),
('item_smartwatch_ultra9', 'op_market_888865', 'Smart Watch Ultra 9 Pro GPS', 35.0, 'USD', 'Electronics', 'Smart watch with AMOLED display, heart rate monitor, Bluetooth calling, and built-in GPS sport tracking.

💬 ឆាតសួរព័ត៌មានបន្ថែមតាម Telegram: t.me/market888865

📺 ទស្សនាវីដេអូ Review លើ YouTube:
https://www.youtube.com/watch?v=ScMzIvxBSi4

🎵 វីដេអូបង្ហាញលក្ខណៈលើ TikTok:
https://www.tiktok.com/@tiktok/video/7106594312292453678', 'https://images.unsplash.com/photo-1579586337278-3befd40fd17a?w=600&auto=format&fit=crop&q=80', 45, 'ACTIVE'),
('item_wireless_earbuds_pro', 'op_market_888865', 'Wireless Bluetooth Earbuds Pro ANC', 18.5, 'USD', 'Audio', 'Active noise cancelling wireless earbuds with 36h battery life, deep bass, and water-resistant nano coating.', 'https://images.unsplash.com/photo-1590658268037-6bf12165a8df?w=600&auto=format&fit=crop&q=80', 80, 'ACTIVE'),
('item_khmer_honey_mondulkiri', 'op_market_888865', 'ទឹកឃ្មុំព្រៃមណ្ឌលគិរីសុទ្ធ 100% (Pure Wild Honey 1L)', 14.0, 'USD', 'Organic Food', 'ទឹកឃ្មុំព្រៃសុទ្ធធម្មជាតិ 100% យកចេញពីព្រៃធម្មជាតិនៃខេត្តមណ្ឌលគិរី គុណភាពខ្ពស់ ផ្តល់ថាមពល និងសុខភាពរឹងមាំ។', 'https://images.unsplash.com/photo-1587049352846-4a222e784d38?w=600&auto=format&fit=crop&q=80', 120, 'ACTIVE'),
('item_powerbank_20000mah', 'op_market_888865', 'Fast-Charging Power Bank 20,000mAh PD 22.5W', 22.0, 'USD', 'Accessories', '20,000mAh Ultra-slim portable charger with Type-C 22.5W Power Delivery and dual USB fast charging outputs.', 'https://images.unsplash.com/photo-1609592426866-fffa7ff645e7?w=600&auto=format&fit=crop&q=80', 35, 'ACTIVE'),
('item_av_vip_lifetime', 'op_av_official', 'AV Premium Lifetime VIP Pass', 49.0, 'USD', 'Digital Membership', 'Full unmetered lifetime access to all AV Wallscript premium features, private media vaults, and high-speed streaming.', 'https://images.unsplash.com/photo-1563986768609-322da13575f3?w=600&auto=format&fit=crop&q=80', 999, 'ACTIVE'),
('item_av_cloud_proxy_vip', 'op_av_official', 'Cambodia Dedicated Cloud Proxy VIP (1 Month)', 12.0, 'USD', 'Cloud Services', 'Dedicated 1Gbps low-latency Cambodian proxy with unlimited bandwidth and 99.99% uptime guarantee.', 'https://images.unsplash.com/photo-1544197150-b99a580bb7a8?w=600&auto=format&fit=crop&q=80', 50, 'ACTIVE')
ON DUPLICATE KEY UPDATE `title`=VALUES(`title`), `price`=VALUES(`price`), `description`=VALUES(`description`), `image_url`=VALUES(`image_url`), `stock`=VALUES(`stock`), `status`=VALUES(`status`);


-- 8. Client Market Orders with GPS Location (paywall_market_orders)
CREATE TABLE IF NOT EXISTS `paywall_market_orders` (
  `order_id` VARCHAR(100) NOT NULL,
  `operator_id` VARCHAR(100) NOT NULL,
  `item_id` VARCHAR(100) DEFAULT NULL,
  `item_title` VARCHAR(255) DEFAULT '',
  `quantity` INT(11) NOT NULL DEFAULT 1,
  `amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  `currency` VARCHAR(10) NOT NULL DEFAULT 'USD',
  `client_name` VARCHAR(191) NOT NULL,
  `client_phone` VARCHAR(100) NOT NULL,
  `client_address` TEXT DEFAULT NULL,
  `gps_lat` DECIMAL(10,8) DEFAULT NULL,
  `gps_lng` DECIMAL(11,8) DEFAULT NULL,
  `gps_accuracy` FLOAT DEFAULT NULL,
  `maps_url` VARCHAR(255) DEFAULT NULL,
  `payment_method` VARCHAR(50) NOT NULL DEFAULT 'khpay',
  `payment_status` VARCHAR(50) NOT NULL DEFAULT 'PENDING',
  `qr_string` TEXT DEFAULT NULL,
  `qr_image_url` TEXT DEFAULT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`order_id`),
  INDEX `idx_mkt_op` (`operator_id`),
  INDEX `idx_mkt_status` (`payment_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `paywall_market_orders` (`order_id`, `operator_id`, `item_id`, `item_title`, `quantity`, `amount`, `currency`, `client_name`, `client_phone`, `client_address`, `gps_lat`, `gps_lng`, `gps_accuracy`, `maps_url`, `payment_method`, `payment_status`) VALUES
('MKT-ORD-261023-8142', 'op_market_888865', '', 'Marketplace Item', 1, 40.0, 'USD', 'Mengly Chea', '098765432', '', NULL, NULL, NULL, '', 'khpay', 'PENDING'),
('MKT-ORD-261022-1384', 'op_market_888865', 'item_fast_charging_us_5ba2', 'Fast Charging USB-C Cable 65W', 1, 6.5, 'USD', 'Sokha Vathanak', '012888865', '', 11.5582, 104.9121, 50000.0, 'https://www.google.com/maps?q=11.5582,104.9121', 'khpay', 'PENDING'),
('MKT-ORD-261022-9093', 'op_market_888865', '', 'Marketplace Item', 1, 25.0, 'USD', 'Test Client', '012888865', 'Phnom Penh St 271', 11.5564, 104.9282, 0.0, 'https://www.google.com/maps?q=11.5564,104.9282', 'khmer_system', 'PENDING'),
('MKT-ORD-261022-2048', 'op_market_888865', '', 'Marketplace Item', 1, 25.0, 'USD', 'Test Client', '012888865', 'Phnom Penh St 271', 11.5564, 104.9282, 0.0, 'https://www.google.com/maps?q=11.5564,104.9282', 'khpay', 'PENDING'),
('MKT-ORD-261022-9033', 'op_market_888865', 'item_fast_charging_us_5ba2', 'Fast Charging USB-C Cable 65W', 1, 6.5, 'USD', 'Sokha Vathanak', '012888865', '', 11.5582, 104.9121, 50000.0, 'https://www.google.com/maps?q=11.5582,104.9121', 'khpay', 'PENDING'),
('MKT-ORD-261022-3516', 'op_market_888865', 'item_fast_charging_us_5ba2', 'Fast Charging USB-C Cable 65W', 1, 6.5, 'USD', 'Test Client', '012888865', '', 11.5582, 104.9121, 50000.0, 'https://www.google.com/maps?q=11.5582,104.9121', 'khpay', 'PAID'),
('MKT-ORD-261022-6196', 'op_market_888865', 'it_test_1', 'Test Item', 1, 25.0, 'USD', 'Test Client', '012888865', 'Phnom Penh', 11.5564, 104.9282, 10.0, 'https://www.google.com/maps?q=11.5564,104.9282', 'khpay', 'PAID'),
('MKT-ORD-261022-4605', 'op_market_888865', 'it_test_1', 'Test Item', 1, 25.0, 'USD', 'Test Client', '012888865', 'Phnom Penh', 11.5564, 104.9282, 10.0, 'https://www.google.com/maps?q=11.5564,104.9282', 'khpay', 'PAID'),
('MKT-ORD-261022-4278', 'op_market_888865', 'it_test_1', 'Test Item', 1, 25.0, 'USD', 'Test Client', '012888865', 'Phnom Penh', 11.5564, 104.9282, 10.0, 'https://www.google.com/maps?q=11.5564,104.9282', 'khpay', 'PAID'),
('MKT-ORD-261022-6086', 'op_market_888865', 'item_fast_charging_us_5ba2', 'Marketplace Item', 2, 13.0, 'USD', 'Sok Vannak', '012888999', 'Street 271, Sangkat Boeung Tumpun, Phnom Penh', 11.53245, 104.91234, 12.5, 'https://www.google.com/maps?q=11.53245,104.91234', 'khpay', 'PAID'),
('MKT-ORD-261022-1968', 'op_market_888865', 'item_fast_charging_us_e3f4', 'Marketplace Item', 2, 13.0, 'USD', 'Sok Vannak', '012888999', 'Street 271, Sangkat Boeung Tumpun, Phnom Penh', 11.53245, 104.91234, 12.5, 'https://www.google.com/maps?q=11.53245,104.91234', 'khpay', 'PAID'),
('MKT-ORD-261022-5524', 'op_market_888865', 'item_fast_charging_us_6b5b', 'Marketplace Item', 2, 13.0, 'USD', 'Sok Vannak', '012888999', 'Street 271, Sangkat Boeung Tumpun, Phnom Penh', 11.53245, 104.91234, 12.5, 'https://www.google.com/maps?q=11.53245,104.91234', 'khpay', 'PAID'),
('MKT-ORD-90218-02', 'op_market_888865', 'item_khmer_honey_mondulkiri', 'ទឹកឃ្មុំព្រៃមណ្ឌលគិរីសុទ្ធ 100% (Pure Wild Honey 1L)', 2, 28.0, 'USD', 'Chea Mengly', '098 776 543', 'Near Central Market, Khan Daun Penh, Phnom Penh', 11.569421, 104.921456, 4.8, 'https://www.google.com/maps?q=11.569421,104.921456', 'khpay', 'PAID'),
('MKT-ORD-90218-01', 'op_market_888865', 'item_smartwatch_ultra9', 'Smart Watch Ultra 9 Pro GPS', 1, 35.0, 'USD', 'Sokha Vathanak', '012 889 922', 'Street 271, Sangkat Boeng Tumpun, Khan Mean Chey, Phnom Penh', 11.531204, 104.912389, 6.5, 'https://www.google.com/maps?q=11.531204,104.912389', 'khpay', 'PAID')
ON DUPLICATE KEY UPDATE `payment_status`=VALUES(`payment_status`), `client_address`=VALUES(`client_address`), `maps_url`=VALUES(`maps_url`);


-- 9. Lucky Wheel / Spinner Participants Table (81 Chances)
CREATE TABLE IF NOT EXISTS `spin_participants` (
  `id` VARCHAR(100) NOT NULL PRIMARY KEY,
  `name` VARCHAR(191) NOT NULL,
  `url` VARCHAR(255) DEFAULT '',
  `note` VARCHAR(255) DEFAULT '',
  `raw_price` VARCHAR(50) DEFAULT '$0.50',
  `order_id` VARCHAR(100) DEFAULT '',
  `operator_id` VARCHAR(100) DEFAULT '',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX `idx_spin_part_op` (`operator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `spin_participants` (`id`, `name`, `url`, `note`, `raw_price`, `order_id`, `operator_id`) VALUES
('c_1', 'Sokha Heng (សូខា)', 'https://t.me/sokha_heng', 'VIP Member', '$0.50', '', ''),
('c_2', 'Bopha Keo (បុប្ផា)', 'https://facebook.com/bopha.keo', 'Pass #108', '$0.50', '', ''),
('c_3', 'Dara Nimol (តារា)', 'https://t.me/dara_kh', 'Early Supporter', '$0.50', '', ''),
('c_4', 'Veasna Chea (វាសនា)', '', 'Telegram Buyer', '$0.50', '', ''),
('c_5', 'Chanry Srun (ចាន់រី)', 'https://av.av91.online', 'KHQR User', '$0.50', '', ''),
('c_6', 'Kosal Rath (កុសល)', 'https://t.me/kosal_rath', 'VIP Pass', '$0.50', '', ''),
('c_7', 'Monika Pich (មុនីកា)', '', 'Gold Member', '$0.50', '', ''),
('c_8', 'Rithy Seng (រិទ្ធី)', 'https://facebook.com/rithy.seng', 'Supporter', '$0.50', '', ''),
('c_9', 'Piseth Morn (ពិសិដ្ឋ)', 'https://t.me/piseth_morn', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_10', 'Sreyleak Vong (ស្រីលក្ខណ៍)', 'https://facebook.com/sreyleak.v', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_11', 'Chanthou Touch (ចន្ធូ)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_12', 'Visal Sovann (វិសាល)', 'https://t.me/visal_sovann', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_13', 'Theara Long (ធារ៉ា)', 'https://facebook.com/theara.long', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_14', 'Samnang Kem (សំណាង)', '', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_15', 'Kunthea Phon (គន្ធា)', 'https://t.me/kunthea_phon', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_16', 'Vutha Seng (វុទ្ធា)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_17', 'Minea Ros (មីនា)', 'https://t.me/minea_ros', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_18', 'Sovannary Ly (សុវណ្ណារី)', 'https://facebook.com/sovannary.ly', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_19', 'Panha Khun (បញ្ញា)', '', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_20', 'Sreymao Nuon (ស្រីម៉ៅ)', 'https://t.me/sreymao_nuon', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_21', 'Chetana Chhuon (ចេតនា)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_22', 'Kalyan Meas (កល្យាណ)', 'https://facebook.com/kalyan.meas', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_23', 'Bunrong Ouk (ប៊ុនរ៉ុង)', 'https://t.me/bunrong_ouk', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_24', 'Davin San (ដាវីន)', '', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_25', 'Chantha Roeun (ចន្ថា)', 'https://facebook.com/chantha.roeun', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_26', 'Seyha Prum (សីហា)', 'https://t.me/seyha_prum', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_27', 'Nary Khiev (ណារី)', '', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_28', 'Socheat Hun (សុជាតិ)', 'https://facebook.com/socheat.hun', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_29', 'Sophea Yun (សុភា)', 'https://t.me/sophea_yun', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_30', 'Rathana Em (រតនា)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_31', 'Phally Cheav (ផល្លី)', 'https://facebook.com/phally.cheav', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_32', 'Botum Sam (បុទុម)', 'https://t.me/botum_sam', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_33', 'Vandy Khorn (វ៉ាន់ឌី)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_34', 'Borin Som (បូរិន)', 'https://facebook.com/borin.som', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_35', 'Neary Rin (នារី)', 'https://t.me/neary_rin', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_36', 'Vibol Heng (វិបុល)', '', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_37', 'Sros Mao (ស្រស់)', 'https://facebook.com/sros.mao', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_38', 'Chamroeun Tep (ចំរើន)', 'https://t.me/chamroeun_tep', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_39', 'Makara Seng (មករា)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_40', 'Kolab Chan (កូឡាប)', 'https://facebook.com/kolab.chan', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_41', 'Thida Yim (ធីតា)', 'https://t.me/thida_yim', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_42', 'Sambath Huy (សម្បត្តិ)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_43', 'Oudom Seng (ឧត្តម)', 'https://facebook.com/oudom.seng', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_44', 'Kesor Som (កេសរ)', 'https://t.me/kesor_som', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_45', 'Channy Pov (ចាន់នី)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_46', 'Phearith Meas (ភារិទ្ធ)', 'https://facebook.com/phearith.meas', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_47', 'Vannak Kong (វណ្ណៈ)', 'https://t.me/vannak_kong', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_48', 'Sreynich Chheang (ស្រីនិច)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_49', 'Sithan Chey (ស៊ីថាន)', 'https://facebook.com/sithan.chey', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_50', 'Sreypov Yin (ស្រីពៅ)', 'https://t.me/sreypov_yin', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_51', 'Sopheak Duong (សុភ័ក្រ)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_52', 'Chhom Nim (ឈុំ)', 'https://facebook.com/chhom.nim', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_53', 'Pisey Kong (ពិសី)', 'https://t.me/pisey_kong', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_54', 'Ratanak Men (រតនៈ)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_55', 'Theavy Lim (ធាវី)', 'https://facebook.com/theavy.lim', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_56', 'Bunthen Seng (ប៊ុនថេន)', 'https://t.me/bunthen_seng', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_57', 'Sophal Prak (សុផល)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_58', 'Sinat Chhum (ស៊ីណាត)', 'https://facebook.com/sinat.chhum', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_59', 'Lina Oum (លីណា)', 'https://t.me/lina_oum', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_60', 'Reasmey Keo (រស្មី)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_61', 'Chenda Chorn (ចិន្តា)', 'https://facebook.com/chenda.chorn', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_62', 'Sokly Tann (សុខលី)', 'https://t.me/sokly_tann', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_63', 'Arun Sann (អរុណ)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_64', 'Malis Heng (ម្លិះ)', 'https://facebook.com/malis.heng', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_65', 'Pich Panha (ពេជ្រ)', 'https://t.me/pich_panha', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_66', 'Sarun Chhorn (សារុន)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_67', 'Chetra Yin (ចិត្រា)', 'https://facebook.com/chetra.yin', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_68', 'Khemara So (ខេមរា)', 'https://t.me/khemara_so', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_69', 'Vicheka Tuy (វិច្ឆិកា)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_70', 'Rothana Bun (រដ្ឋា)', 'https://facebook.com/rothana.bun', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_71', 'Daneth Moeun (ដានិត)', 'https://t.me/daneth_moeun', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_72', 'Vicheth Nguon (វិចិត្រ)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_73', 'Romnea Sem (រមនា)', 'https://facebook.com/romnea.sem', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_74', 'Sothea Pin (សុធា)', 'https://t.me/sothea_pin', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_75', 'Tola Sin (តុលា)', '', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_76', 'Sreymom Lay (ស្រីមុំ)', 'https://facebook.com/sreymom.lay', 'Paid $1.00 via Web3 Crypto', '$0.50', '', ''),
('c_77', 'Pheakdey Hang (ភក្តី)', 'https://t.me/pheakdey_hang', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_78', 'Kanha Bun (កញ្ញា)', '', 'Paid $1.00 via Stripe Card', '$0.50', '', ''),
('c_79', 'Ponleur Keo (ពន្លឺ)', 'https://facebook.com/ponleur.keo', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_80', 'Vuthy Sun (វុទ្ធី)', 'https://t.me/vuthy_sun', 'Paid $1.00 via Khmer-System', '$0.50', '', ''),
('c_81', 'Thavrith Long (ថាវរិទ្ធ)', 'https://facebook.com/thavrith.long', 'Paid $1.00 via ABA KHQR', '$0.50', '', ''),
('c_voucher_1793015120671_0_119', '[127.0.0.1] Voucher Tester Sokha', 'tel:@sokha_free', '🎟️ Voucher "FREECHANCE" (1 Free Chances) • Ref: Phnom Penh Storefront • Contact: @sokha_free', '$0.50', '', ''),
('c_voucher_1793025552273_0_801', '[127.0.0.1] Test User 789789', 'tel:098789789', '🎟️ Voucher "789789" (1 Free Chances) • Ref: Phnom Penh Storefront • Contact: 098789789', '$0.50', '', '')
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `url`=VALUES(`url`), `note`=VALUES(`note`), `raw_price`=VALUES(`raw_price`);


-- 10. Lucky Wheel Winners History Table
CREATE TABLE IF NOT EXISTS `spin_winners` (
  `round` INT NOT NULL PRIMARY KEY,
  `id` VARCHAR(100) DEFAULT '',
  `name` VARCHAR(191) NOT NULL,
  `raw_price` VARCHAR(50) DEFAULT '$0.50',
  `url` VARCHAR(255) DEFAULT '',
  `note` VARCHAR(255) DEFAULT '',
  `prize` VARCHAR(191) DEFAULT '',
  `duration` VARCHAR(50) DEFAULT '5s',
  `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `spin_winners` (`round`, `id`, `name`, `raw_price`, `url`, `note`, `prize`, `duration`, `timestamp`) VALUES
(1, 'c_1', 'Sokha Heng (សូខា)', '.50', '', '', 'Grand Prize #1', '5s', '2026-10-25 23:02:35')
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `prize`=VALUES(`prize`);


-- 11. Spin Referral Commissions Table (Operator 20% Cut)
CREATE TABLE IF NOT EXISTS `spin_commissions` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `order_id` VARCHAR(100) NOT NULL UNIQUE,
  `operator_id` VARCHAR(100) NOT NULL,
  `operator_name` VARCHAR(191) DEFAULT '',
  `client_name` VARCHAR(191) DEFAULT '',
  `amount` DECIMAL(10,2) NOT NULL DEFAULT 1.00,
  `cut_percent` DECIMAL(5,2) NOT NULL DEFAULT 20.00,
  `operator_earning` DECIMAL(10,2) NOT NULL DEFAULT 0.20,
  `payment_method` VARCHAR(50) DEFAULT 'khpay',
  `payment_status` VARCHAR(50) DEFAULT 'PAID',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX `idx_spin_comm_op` (`operator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `spin_commissions` (`order_id`, `operator_id`, `operator_name`, `client_name`, `amount`, `cut_percent`, `operator_earning`, `payment_method`, `payment_status`, `created_at`) VALUES
('SPIN_TEST_999', 'op_market_336277', 'Phnom Penh Storefront', 'Test Player DB Sync', 2.0, 25.0, 0.5, 'khpay', 'PAID', '2026-10-25 23:02:31')
ON DUPLICATE KEY UPDATE `payment_status`=VALUES(`payment_status`), `operator_earning`=VALUES(`operator_earning`);


-- 12. Spin Promotional Vouchers Table
CREATE TABLE IF NOT EXISTS `spin_vouchers` (
  `code` VARCHAR(100) NOT NULL PRIMARY KEY,
  `type` VARCHAR(50) DEFAULT 'FREE_SPIN',
  `value` DECIMAL(10,2) DEFAULT 1.00,
  `chances` INT NOT NULL DEFAULT 1,
  `max_uses` INT NOT NULL DEFAULT 1000,
  `used` INT NOT NULL DEFAULT 0,
  `note` VARCHAR(255) DEFAULT '',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `spin_vouchers` (`code`, `type`, `value`, `chances`, `max_uses`, `used`, `note`) VALUES
('SPIN50', 'DISCOUNT_PERCENT', 50.0, 1, 1000, 6, 'Promo 50% Cut Spin Discount (-50%)'),
('FREECHANCE', 'FREE_SPIN', 1.0, 1, 500, 15, '1 Free Spin Chance Giveaway (100% Free)'),
('LUCKY2X', 'FREE_SPIN', 2.0, 2, 300, 5, '2 Extra Spin Chances for VIP (Free 2 Chances)'),
('PROMO10', 'DISCOUNT_PERCENT', 10.0, 1, 100, 0, '10% Off Spin Promotion'),
('SAVE5', 'DISCOUNT_FIXED', 5.0, 5, 50, 0, '$5.00 Off Spin Chances'),
('789789', 'FREE_SPIN', 1.0, 1, 1000, 0, 'Admin Free Spin (1 Chances)')
ON DUPLICATE KEY UPDATE `value`=VALUES(`value`), `used`=VALUES(`used`), `note`=VALUES(`note`);


SET FOREIGN_KEY_CHECKS = 1;